收藏 分享(赏)

2软件工程与软件项目管理.ppt

上传人:dzzj200808 文档编号:3693474 上传时间:2018-11-15 格式:PPT 页数:89 大小:4.76MB
下载 相关 举报
2软件工程与软件项目管理.ppt_第1页
第1页 / 共89页
2软件工程与软件项目管理.ppt_第2页
第2页 / 共89页
2软件工程与软件项目管理.ppt_第3页
第3页 / 共89页
2软件工程与软件项目管理.ppt_第4页
第4页 / 共89页
2软件工程与软件项目管理.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

1、2018/11/15,0,软件项目管理,信息科技学院192.168.130.142,2018/11/15,1,软件工程与软件项目管理,一、软件危机与软件工程 二、软件过程及其模型,2018/11/15,2,本章要点,一、软件危机与软件工程 二、软件过程及其模型,2018/11/15,3,软件工程的含义,软件工程是一种方法论,而不是一种具体的摸得着、看得见的产品。软件工程 (Software Engineering) 是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的工程。,2018/11/15,4,软件的定义与特点,1.能够完成预定功能和性能的可执行的指令(计算机程序); 2.使

2、得程序能够适当地操作信息的数据结构; 3.描述程序的操作和使用的文档。,2018/11/15,5,软件的特点与本质,1.软件是一种逻辑实体,不是具体的物理实体。,硬件失效率曲线,软件失效率曲线,2018/11/15,6,2.软件是不可见性决定了它的抽象性,软件的本质是数字存在。软件的载体有大脑意识载体、语言符号载体和电磁物理载体三种形式,软件在其电磁物理载体上表现为驻存型、执行型和传输型三种存在形态。软件只有经数字化才取得自己的存在地位,软件的本质是数字存在。,2018/11/15,7,3.软件的生产是一种认知过程 4.软件的构造性与演化性,2018/11/15,8,软件危机,“软件危机”的概

3、念是在1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开的国际学术会议上才第一次提出,软件开发长期以来存在“开发周期长、成本高、质量差、适应性差、难维护”这四大难题,在早期我们称它为“软件危机”,它是计算机科学发展进程的必然产物,只不过到后来这种现象日渐严重,已经影响到计算机事业的发展,因而才引起各界的关注。,2018/11/15,9,2018/11/15,10,复杂性是“软件危机”的本质原因,无法解除危机是因为软件学科固有的本性,在规模上,软件实体可能比任何由人类创造的其它实体要复杂,因为没有任何两个软件部分是相同的。当它执行时,软件经过一种不连续的离散状态,一个“比特”位的

4、变化就会导致整个软件状态的变化。而这种软件状态的总数量是惊人的。,2018/11/15,11,布鲁克斯(Brooks)分别于1975和1987年出版了两本著名的软件工程知识著作“人月神话”和“没有银弹”(No Silver Bullet),Brooks的著名论断“软件工作是人类所从事的最复杂的工作.”,2018/11/15,12,软件工程的三个要素,软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有方法、工具和过程三个要素,它们构成了一种层次化的技术。整个体系结构反映了以质量为中心的观点。关注质量是软件工程的根本出发点和最终目标。,2018/11/15,

5、13,2018/11/15,14,软件工具为软件工程方法提供支持,研究支撑软件开发方法的工具,建立软件工程环境,为方法的运用提供自动或者半自动的支撑环境,软件工具的集成环境,又称为计算机辅助软件工程(CASE)。,2018/11/15,15,软件过程则是指将软件工程方法与软件工具相结合,实现合理、及时地进行软件开发的目的,为开发高质量软件规定各项任务的工作步骤。软件工程的根基在于质量关注点(quality focus)。,2018/11/15,16,软件开发方法,软件的实质也主要牵涉“现实世界概念世界计算机世界”三个空间。因而软件设计方法也应在这三个范畴极限之内寻求发展。,2018/11/15

6、,17,经过30多年的研究与实践,人们已经摸索和建立了多种软件工程方法。譬如,结构化方法、形式化方法、面向对象方法、基于构件的方法、基于Agent的方法、基于净室技术的方法、基于敏捷技术的方法等。这些方法在自身的发展过程中又不断吸收其他方法和技术的长处,导致新技术新方法层出不穷,成为现代软件工程发展过程的亮点,从而不断丰富和发展了软件工程的理论与实践。,2018/11/15,18,面向过程的结构化开发方法,结构化开发方法由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。这里所说的结构是指软件系统内各个组成要素之间的相互联系、相互作用的框架。,2018/11/15,19,在本质上,结

7、构化的软件开发方法是面向数据、面向过程、面向功能、面向数据流的观点来映射问题的。,2018/11/15,20,面向对象的开发方法,面向对象方法 对象 类 继承 消息机制,2018/11/15,21,软件工程与相关科学的关系,2018/11/15,22,2018/11/15,23,软件工程的标准,2018/11/15,24,国际标准化组织ISO,2018/11/15,25,IEEE,在软件工程标准方面,IEEE更贴近于软件工程的实际,如(IEEE 软件质量保证计划)、(IEEE软件配置管理计划、(IEEE 软件测试文档标准)、IEEE 软件需求规格说明的实施建议、(IEEE软件单元测试标准)、(

8、IEEE软件验证和确认标准)、(IEEE软件用户文档标准等 。,2018/11/15,26,中国国家标准,2018/11/15,27,计算机辅助软件工程,在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(Computer-Aided Software Engineering,简称CASE)。,2018/11/15,28,职业道德与行为准则,和其他工程人员一样,软件工程人员必须承认他们的工作不仅仅是技术的应用,还要担负许多责任。他们的工作是在法律和社会的框架内完成的:软件工程要受地方的、国家的、国

9、际的各种法律的约束,因而工程人员要想受人尊敬,其行为就必须合乎道德,必须有责任心。,2018/11/15,29,1机密工程人员必须严格保守雇主或客户的机密,而不管是否签署保密协议;2工作能力工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作。3知识产权工程人员应当知晓控制专利权、著作权等知识产权使用的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护。4计算机滥用软件工程人员不应运用自己的技能滥用他人的计算机。滥用计算机有时对他人影响不大,但有些时候后果非常严重(如个人隐私和传播病毒)。,2018/11/15,30,ACM/IEEE职业道德准则,1.公众感软件工程人

10、员应始终与公众利益保持一致。 2.客户与雇主软件工程人员应当在与公众利益保持一致的前提下,满足客户与雇主的最大利益。 3.产品软件工程人员应当保证他们的产品及其相关附件达到尽可能高的行业标准。 4.判断力软件工程人员应当具有公正和独立的职业判断力。,2018/11/15,31,5.管理软件工程管理者和领导者应当拥护并倡导合乎道德的有关软件开发和维护的管理方法。 6.职业感软件工程人员应当弘扬职业正义感和荣誉感,尊重社会公正利益。 7.同事软件工程人员应当公平地对待和协助每一位同事。 8自己软件工程人员应当毕生学习专业知识,倡导合乎职业道德的职业活动方式。,2018/11/15,32,本章要点,

11、一、软件危机与软件工程 二、软件过程及其模型,2018/11/15,33,软件过程,IEEE(STD-610)将过程(process)定义为实现给定目标所执行的一系列操作步骤。由此,我们可以把一个有序任务集合看作是一个过程,一个用来产生某类想要的产品所涉及的活动、约束和资源的步骤序列。,2018/11/15,34,每个过程均包含一系列的阶段,每个阶段结束于一个主要的里程碑。,过程的特征之一,2018/11/15,35,过程是一个生命周期。当过程涉及某种产品的建立时,我们称这个过程为一个生命周期。,。,过程的特征之二,2018/11/15,36,过程的特征之三,每个过程均有一系列己定义好的输入作

12、为其操作的对应。每个过程均会形成一系列的输出,并以此作为其他过程的输入,过程会将相应的输入转换为事先己定义好的输出。,2018/11/15,37,过程的特征之四,过程具有迭代特征。,2018/11/15,38,软件过程提供公共框架,软件过程提供了一个框架,在该框架下可以建立一个软件开发的综合计划: 若干框架活动适用于所有软件项目,而不在乎其规模和复杂性。 若干不同任务的集合每一个集合都由任务、里程碑、交付物以及质量保证点组成。 若干保护性活动如软件质量保证、软件配置管理、测试与度量等。它们贯穿于整个过程模型之中。保护性活动独立于任何一个框架活动,且贯穿于整个过程之中。,2018/11/15,3

13、9,软件过程模型,软件过程模型是从一特定角度提出的软件过程的简化描述,是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。其中每个过程模型都代表了一种将本质上无序的活动转换为有序化的步骤,每个模型都具有能够指导实际软件项目进行控制及协调的特性。,2018/11/15,40,过程管理,过程管理,就是对过程进行管理,目的是要让过程能够被共享、复用,并得到持续的改进。 软件过程管理就是要注重循序渐进地积累,积累项目中的各个环节项目管理的实践经验,保证我们的生产力持续地发展。,2018/11/15,41,过程管理和项目管理关系,项目管理用于保证项目的成功, 过程管

14、理用于管理最佳实践。 这两项管理不是相互孤立的,而是有机地紧密地结合的。,2018/11/15,42,瀑布模型,2018/11/15,43,瀑布模型分析,瀑布模型强调系统开发应有完整之周期,且必须完整的经历周期的每一开发阶段,由于该模式强调系统开发过程需有完整的规划、分析、设计、测试及文件等管理与控制,因此能有效的确保系统品质,它已经成为业界大多数软件开发的标准。,2018/11/15,44,瀑布模型缺点,线性顺序模型过程的缺点也是非常明显的: 1.实际的项目很少按照该模型给出的顺序进行。 2.项目初期用户常常难以清楚地给出所有需求,而这恰恰是线性顺序模型所必须给出的。 3.用户必须有耐心,程

15、序的运行版本要等到项目开发晚期才能得到。大的错误如果到检查运行程序时才被发现,后果可能是灾难性的。,2018/11/15,45,演化软件过程模型,演化模型是利用一种迭代的思想方法,它的特征是使软件工程师渐进地开发逐步完善的软件版本。主要包括增量模型和螺旋模型两种范型。,2018/11/15,46,增量模型,2018/11/15,47,增量模型的特点,产品是以一系列增量构件的形式设计、实现、集成和测试的,其中,每个构件由一些代码块组成,这些代码块来白多个相互作用的模块,完成特定的功能。,2018/11/15,48,增量模型的特点,增量模型和瀑布模型之间的本质区别是: 瀑布模型属于整体开发模型,它

16、规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段小的细节,从而较早地产生工作软件。,2018/11/15,49,2018/11/15,50,增量模型的讨论,每个增量提供系统功能的一个子集。对增量中功能的分配取决于用户指明的功能优先次序。 增量模型的另一个优点是,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。,2018/11/15,51,使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。 此外,必须把软件的体系结构设计得

17、便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。,2018/11/15,52,螺旋模型,对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。该模型将开发过程划分为沟通、制定计划、风险分析、实施工程、构造与发布和系统评估6个活动。,2018/11/15,53,螺旋模型,2018/11/15,54,螺旋模型特点,每沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此中止;多数情况下,开发过程会沿着螺旋线继续下去,自内向外逐步延伸最终得到

18、满意的软件产品。,2018/11/15,55,原型开发的思想来源于工程实践。是利用原型辅助产品设计开发的一种新思想。,原型开发模型,2018/11/15,56,快速原型模型,2018/11/15,57,原型法讨论,快速原型的一个基本特性是体现“快”字。开发者应该尽可能快地建造原型,以加快软件开发进程。因此,快速原型的内部结构无关紧要,最重要的是快速建造原型并快速修改以反映客户的需求。所以,速度是关键。,2018/11/15,58,原型法讨论,原型方法不应只被看作是技术工具,它是重要的管理和沟通工具。用原型提供关于某类风险的信息非常有效。 目前广泛地使用第四代语言(4GT)构建快速原型,当快速原

19、型的某个部分是利用软件工具由计算机自动生成的时候,可以把这部分用到最终的软件产品中。,2018/11/15,59,统一软件过程,统一软件过程(RUP:Rational Unified Process)是一个二维的软件开发模型。,2018/11/15,60,2018/11/15,61,统一软件过程,横轴各阶段以时间坐标组织,具有过程展开的体现生命周期特征,开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);,2018/11/15,62,统一软件过程,纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,

20、用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。,2018/11/15,63,RUP的阶段和主要里程碑,2018/11/15,64,.RUP的迭代过程,2018/11/15,65,RUP的核心工作流,工作流是产生具有观察力结果的活动系列。RUP描述了9个不同的工作流,这些工作流在整个开发周期中一次又一次被访问,在每一次迭代中以不同的重点和强度重复。,2018/11/15,66,形式化方法模型,在形式化方法模型中,软件需求描述被精炼成用数学符号表达的详细的形式化描述。,2018/11/15,67,形式化方法模型讨论,

21、由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性。 但是,形式化方法并不是主流开发方法,在实际软件开发中应用较少,其主要原因是形式化方法的开发还很费时和昂贵,另外难以使用该模型与用户进行沟通。,2018/11/15,68,软件复用基于构件的开发方法,基于构件的开发(Component-Based Development,简称CBD)是一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。 由于以分布式对象为基础的构件实现技术日趋成熟,CBD已经成为现今软件复用实践的研究

22、热点,被认为是最具潜力的软件工程发展方向之一。,2018/11/15,69,2018/11/15,70,基于构件的开发的讨论,当今,构件技术已经成为计算环境的基本组成之一,众多中间件产品和开发工具提供了对不同构件模型的实现支持,特别在分布式、企业级应用软件系统中,无不把软件的构件化作为解决维护、扩展和升级的唯一途径。 然而,虽然业已存在了大量的CBD概念、方法和工具,软件业并未完全迁移到CBD软件开发范型,一个主要原因是缺少一套成熟的CBD开发方法学。另一个原因是需要建立公共软件构件库。,2018/11/15,71,第四代技术,“第四代技术”(Fourth Generation Techniq

23、ue :4GT)包含了系列的软件工具,它们都有个共同特点:能使软件工程师在较高级别上说明软件的某些特征。之后工具根据开发者的说明自动生成源代码。,2018/11/15,72,支持4GT模型的软件开发环境,2018/11/15,73,微软公司的软件过程模型,微软产品过程模型是微软数十年实际开发经验的精髓,微软的所有产品,从最初的产品策划到编程,Beta版发行,正式版本的发布,下一个版本的开发,都遵循该过程模型。微软产品周期模型是整个微软开发流程的核心和基础,他们的经验值得我们关注。,2018/11/15,74,微软公司的软件过程模型,2018/11/15,75,软件过程改进与评估,软件机构形成一

24、套完整而成熟的软件过程不是一蹴而就的,它需要一个从无序到有序,从特殊到一般,从定性到定量,最后再从静态到动态的历程。 要提高软件质量必须改进软件过程。因此有必要建立一个软件过程成熟度模型来对过程做出一个客观、公正的评价,以促进软件开发组织改进软件过程。,2018/11/15,76,软件能力成熟度模型CMM与CMMI,软件能力成熟度模型(Capability maturity model for software Capability,简称SW-CMM或CMM)是由美国卡内基.梅隆大学软件工程研究所(SEI)于1987年提出的一种软件能力评估标准,它侧重于软件开发过程的管理及工程能力的提高与评估

25、,现已成为软件业最权威的评估认证体系。,2018/11/15,77,CMM的五个级别,CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。,2018/11/15,78,2018/11/15,79,CMM的内部结构,2018/11/15,80,关键过程区域,除了初始级外,每一成熟度等级又由若干个关键过程区域(Key Process Areas)构成。关键过程区域指出为了达到某个成熟度等级所要着手解决的问题。达到一个成熟度等级,必须实现该等级上的全部关键过程区域。要实现一个关键过程区域,就必须达到该关键过程区域的所有目标。,2018/11/15,81,能

26、力成熟度模型集成CMMI,CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。,2018/11/15,82,PSP:个体软件过程,个体软件过程(Personal Software Process,PSP)是由美国卡耐基-梅隆大学(Carnegie Mellon)软件工程研究所(CMU/SEI)领导开发的,于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人

27、工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。,2018/11/15,83,PSP个体软件过程进化框架,(1)个体度量过程PSP0 (2)个体规划过程PSP1 (3)个体质量管理过程PSP2 (4)个体循环过程PSP3,2018/11/15,84,团队软件过程,团队软件过程(Team Software Process,TSP)是为开发软件产品的开发团队提供指导,TSP的实践侧重于帮助开发团队改善其质量和生产率,以使其更好的满足成本及进度的目标。,2018/11/15,85,TSP的设计原则,循序渐进的原则 迭代开发的原则 质量优先的原则 定期评审的原则过程规范的原则

28、指令明确的原则,,2018/11/15,86,CMM、TSP、PSP三者的关系,CMM是过程改善的第一步,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。企业只有开始CMM改善后,才能接受需要规划的事实,认识到质量的重要性,才能注重对员工经常进行培训,合理分配项目人员,并且建立起有效的项目小组。然而,它实现的成功与否与组织内部有关人员的积极参加和创造性活动密不可分。,2018/11/15,87,PSP能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分运用PSP,从而有助于CMM目标的实现。 TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。,2018/11/15,88,小结,一、软件危机与软件工程 二、软件过程及其模型,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 项目管理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报