软件工程与软件项目管理课件_第1页
软件工程与软件项目管理课件_第2页
软件工程与软件项目管理课件_第3页
软件工程与软件项目管理课件_第4页
软件工程与软件项目管理课件_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件项目管理信息科技学院192.168.130.142.7/24/20230软件工程与软件项目管理一、软件危机与软件工程

二、软件过程及其模型.7/24/20231本章要点一、软件危机与软件工程

二、软件过程及其模型.7/24/20232软件工程的含义软件工程是一种方法论,而不是一种具体的摸得着、看得见的产品。软件工程(SoftwareEngineering)是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的工程。.7/24/20233软件的定义与特点1.能够完成预定功能和性能的可执行的指令(计算机程序);2.使得程序能够适当地操作信息的数据结构;3.描述程序的操作和使用的文档。.7/24/20234软件的特点与本质1.软件是一种逻辑实体,不是具体的物理实体。硬件失效率曲线软件失效率曲线.7/24/202352.软件是不可见性决定了它的抽象性,软件的本质是数字存在。软件的载体有大脑意识载体、语言符号载体和电磁物理载体三种形式,软件在其电磁物理载体上表现为驻存型、执行型和传输型三种存在形态。软件只有经数字化才取得自己的存在地位,软件的本质是数字存在。.7/24/202363.软件的生产是一种认知过程4.软件的构造性与演化性.7/24/20237软件危机“软件危机”的概念是在1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开的国际学术会议上才第一次提出,软件开发长期以来存在“开发周期长、成本高、质量差、适应性差、难维护”这四大难题,在早期我们称它为“软件危机”,它是计算机科学发展进程的必然产物,只不过到后来这种现象日渐严重,已经影响到计算机事业的发展,因而才引起各界的关注。.7/24/20238.7/24/20239复杂性是“软件危机”的本质原因无法解除危机是因为软件学科固有的本性,在规模上,软件实体可能比任何由人类创造的其它实体要复杂,因为没有任何两个软件部分是相同的。当它执行时,软件经过一种不连续的离散状态,一个“比特”位的变化就会导致整个软件状态的变化。而这种软件状态的总数量是惊人的。.7/24/202310布鲁克斯(Brooks)分别于1975和1987年出版了两本著名的软件工程知识著作“人月神话”和“没有银弹”(NoSilverBullet),Brooks的著名论断“软件工作是人类所从事的最复杂的工作.”.7/24/202311软件工程的三个要素软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有方法、工具和过程三个要素,它们构成了一种层次化的技术。整个体系结构反映了以质量为中心的观点。关注质量是软件工程的根本出发点和最终目标。

.7/24/202312.7/24/202313软件工具为软件工程方法提供支持,研究支撑软件开发方法的工具,建立软件工程环境,为方法的运用提供自动或者半自动的支撑环境,软件工具的集成环境,又称为计算机辅助软件工程(CASE)。.7/24/202314软件过程则是指将软件工程方法与软件工具相结合,实现合理、及时地进行软件开发的目的,为开发高质量软件规定各项任务的工作步骤。软件工程的根基在于质量关注点(qualityfocus)。.7/24/202315软件开发方法软件的实质也主要牵涉“现实世界—概念世界—计算机世界”三个空间。因而软件设计方法也应在这三个范畴极限之内寻求发展。.7/24/202316经过30多年的研究与实践,人们已经摸索和建立了多种软件工程方法。譬如,结构化方法、形式化方法、面向对象方法、基于构件的方法、基于Agent的方法、基于净室技术的方法、基于敏捷技术的方法等。这些方法在自身的发展过程中又不断吸收其他方法和技术的长处,导致新技术新方法层出不穷,成为现代软件工程发展过程的亮点,从而不断丰富和发展了软件工程的理论与实践。.7/24/202317面向过程的结构化开发方法

结构化开发方法由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。这里所说的结构是指软件系统内各个组成要素之间的相互联系、相互作用的框架。.7/24/202318在本质上,结构化的软件开发方法是面向数据、面向过程、面向功能、面向数据流的观点来映射问题的。

.7/24/202319面向对象的开发方法面向对象方法=对象类继承消息机制.7/24/202320软件工程与相关科学的关系.7/24/202321.7/24/202322软件工程的标准.7/24/202323

国际标准化组织ISO

.7/24/202324IEEE在软件工程标准方面,IEEE更贴近于软件工程的实际,如(IEEE软件质量保证计划)、(IEEE软件配置管理计划》、(IEEE软件测试文档标准)、《IEEE软件需求规格说明的实施建议》、(IEEE软件单元测试标准)、(IEEE软件验证和确认标准)、(IEEE软件用户文档标准》等。.7/24/202325中国国家标准

.7/24/202326计算机辅助软件工程

在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(Computer-AidedSoftwareEngineering,简称CASE)。.7/24/202327职业道德与行为准则

和其他工程人员一样,软件工程人员必须承认他们的工作不仅仅是技术的应用,还要担负许多责任。他们的工作是在法律和社会的框架内完成的:软件工程要受地方的、国家的、国际的各种法律的约束,因而工程人员要想受人尊敬,其行为就必须合乎道德,必须有责任心。.7/24/2023281.机密──工程人员必须严格保守雇主或客户的机密,而不管是否签署/保密协议;2.工作能力──工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作。3.知识产权──工程人员应当知晓控制专利权、著作权等知识产权使用的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护。4.计算机滥用──软件工程人员不应运用自己的技能滥用他人的计算机。滥用计算机有时对他人影响不大,但有些时候后果非常严重(如个人隐私和传播病毒)。.7/24/202329ACM/IEEE职业道德准则

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

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

。过程的特征之二.7/24/202335过程的特征之三每个过程均有一系列己定义好的输入作为其操作的对应。每个过程均会形成一系列的输出,并以此作为其他过程的输入,过程会将相应的输入转换为事先己定义好的输出。.7/24/202336过程的特征之四过程具有迭代特征。.7/24/202337软件过程提供公共框架

软件过程提供了一个框架,在该框架下可以建立一个软件开发的综合计划:若干框架活动适用于所有软件项目,而不在乎其规模和复杂性。若干不同任务的集合──每一个集合都由任务、里程碑、交付物以及质量保证点组成。若干保护性活动──如软件质量保证、软件配置管理、测试与度量等。它们贯穿于整个过程模型之中。保护性活动独立于任何一个框架活动,且贯穿于整个过程之中。.7/24/202338软件过程模型软件过程模型是从一特定角度提出的软件过程的简化描述,是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。其中每个过程模型都代表了一种将本质上无序的活动转换为有序化的步骤,每个模型都具有能够指导实际软件项目进行控制及协调的特性。.7/24/202339过程管理过程管理,就是对过程进行管理,目的是要让过程能够被共享、复用,并得到持续的改进。软件过程管理就是要注重循序渐进地积累,积累项目中的各个环节项目管理的实践经验,保证我们的生产力持续地发展。.7/24/202340过程管理和项目管理关系项目管理用于保证项目的成功,过程管理用于管理最佳实践。这两项管理不是相互孤立的,而是有机地紧密地结合的。.7/24/202341瀑布模型.7/24/202342瀑布模型分析瀑布模型强调系统开发应有完整之周期,且必须完整的经历周期的每一开发阶段,由于该模式强调系统开发过程需有完整的规划、分析、设计、测试及文件等管理与控制,因此能有效的确保系统品质,它已经成为业界大多数软件开发的标准。.7/24/202343瀑布模型缺点线性顺序模型过程的缺点也是非常明显的:1.实际的项目很少按照该模型给出的顺序进行。2.项目初期用户常常难以清楚地给出所有需求,而这恰恰是线性顺序模型所必须给出的。3.用户必须有耐心,程序的运行版本要等到项目开发晚期才能得到。大的错误如果到检查运行程序时才被发现,后果可能是灾难性的。.7/24/202344演化软件过程模型

演化模型是利用一种迭代的思想方法,它的特征是使软件工程师渐进地开发逐步完善的软件版本。主要包括增量模型和螺旋模型两种范型。.7/24/202345增量模型.7/24/202346增量模型的特点产品是以一系列增量构件的形式设计、实现、集成和测试的,其中,每个构件由一些代码块组成,这些代码块来白多个相互作用的模块,完成特定的功能。.7/24/202347增量模型的特点增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段小的细节,从而较早地产生工作软件。.7/24/202348.7/24/202349增量模型的讨论每个增量提供系统功能的一个子集。对增量中功能的分配取决于用户指明的功能优先次序。增量模型的另一个优点是,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。.7/24/202350使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。.7/24/202351螺旋模型对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。该模型将开发过程划分为沟通、制定计划、风险分析、实施工程、构造与发布和系统评估6个活动。.7/24/202352螺旋模型.7/24/202353螺旋模型特点每沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此中止;多数情况下,开发过程会沿着螺旋线继续下去,自内向外逐步延伸最终得到满意的软件产品。.7/24/202354原型开发的思想来源于工程实践。是利用原型辅助产品设计开发的一种新思想。

原型开发模型.7/24/202355快速原型模型.7/24/202356原型法讨论快速原型的一个基本特性是体现“快”字。开发者应该尽可能快地建造原型,以加快软件开发进程。因此,快速原型的内部结构无关紧要,最重要的是快速建造原型并快速修改以反映客户的需求。所以,速度是关键。.7/24/202357原型法讨论原型方法不应只被看作是技术工具,它是重要的管理和沟通工具。用原型提供关于某类风险的信息非常有效。目前广泛地使用第四代语言(4GT)构建快速原型,当快速原型的某个部分是利用软件工具由计算机自动生成的时候,可以把这部分用到最终的软件产品中。.7/24/202358统一软件过程

统一软件过程(RUP:RationalUnifiedProcess)是一个二维的软件开发模型。.7/24/202359.7/24/202360统一软件过程横轴各阶段以时间坐标组织,具有过程展开的体现生命周期特征,开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);.7/24/202361统一软件过程纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。.7/24/202362RUP的阶段和主要里程碑

.7/24/202363.RUP的迭代过程.7/24/202364RUP的核心工作流工作流是产生具有观察力结果的活动系列。RUP描述了9个不同的工作流,这些工作流在整个开发周期中一次又一次被访问,在每一次迭代中以不同的重点和强度重复。.7/24/202365形式化方法模型在形式化方法模型中,软件需求描述被精炼成用数学符号表达的详细的形式化描述。.7/24/202366形式化方法模型讨论由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性。但是,形式化方法并不是主流开发方法,在实际软件开发中应用较少,其主要原因是形式化方法的开发还很费时和昂贵,另外难以使用该模型与用户进行沟通。.7/24/202367软件复用——基于构件的开发方法基于构件的开发(Component-Based

Development,简称CBD)是一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。由于以分布式对象为基础的构件实现技术日趋成熟,CBD已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。

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

:4GT)包含了系列的软件工具,它们都有个共同特点:能使软件工程师在较高级别上说明软件的某些特征。之后工具根据开发者的说明自动生成源代码。.7/24/202371支持4GT模型的软件开发环境.7/24/202372微软公司的软件过程模型

微软产品过程模型是微软数十年实际开发经验的精髓,微软的所有产品,从最初的产品策划到编程,Beta版发行,正式版本的发布,下一个版本的开发,都遵循该过程模型。微软产品周期模型是整个微软开发流程的核心和基础,他们的经验值得我们关注。.7/24/202373微软公司的软件过程模型.7/24/202374软件过程改进与评估软件机构形成一套完整而成熟的软件过程不是一蹴而就的,它需要一个从无序到有序,从特殊到一般,从定性到定量,最后再从静态到动态的历程。要提高软件质量必须改进软件过程。因此有必要建立一个软件过程成熟度模型来对过程做出一个客观、公正的评价,以促进软件开发组织改进软件过程。.7/24/202375软件能力成熟度模型─CMM与CMMI

软件能力成熟度模型(CapabilitymaturitymodelforsoftwareCapability,简称SW-CMM或CMM)是由美国卡内基.梅隆大学软件工程研究所(SEI)于1987年提出的一种软件能力评估标准,它侧重于软件开发过程的管理及工程能力的提高与评估,现已成为软件业最权威的评估认证体系。.7/24/202376CMM的五个级别CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。.7/24/202377.7/24/202378CMM的内部结构.7/24/202379关键过程区域除了初始级外,每一成熟度等级又由若干个关键过程区域(KeyProcessAreas)构成。关键过程区域指出为了达到某个成熟度等级所要着手解决的问题。达到一个成熟度等级,必须实现该等级上的全部关键过程区域。要实现一个关键过程区域,就必须达到该关键过程区域的所有目标。.7/24/202380能力成熟度模型集成——CMMICMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。.7/24/202381PSP:个体软件过程个体软件过程(PersonalSoftwareProcess,PSP)是由美国卡耐基-梅隆大学(CarnegieMellon)软件工程研究所(CMU/SEI)领导开发的,于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论