软件工程-软件工程学概论_第1页
软件工程-软件工程学概论_第2页
软件工程-软件工程学概论_第3页
软件工程-软件工程学概论_第4页
软件工程-软件工程学概论_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1.1软件危机软件危机介绍产生危机的原因消除危机的途径1.2软件工程1.3软件生命周期1.4软件过程1.1软件危机20世纪60年代中期软件需求急剧膨胀,软件维护工作耗费大量的资源1968年北大西洋公约组织的计算机专家召开国际会议,讨论软件危机问题,首次提出软件工程概念1.1.1软件危机介绍什么是软件危机?在计算机软件的开发和维护过程中,

所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,

实际上,几乎所有软件都不同程度地存在这些问题。包含两方面的问题:

如何开发软件,以满足对软件日益增长的需求;

如何维护软件,数量不断膨胀。软件危机表现开发成本和进度难以估算和控制,大大超过预期用户对已完成的软件不满意,需求分析不够充分软件产品的质量难以保证软件维护困难难以改正错误难以增加新功能软件通常没有合适的文档资料软件成本在计算机系统总成本中比例逐年上升软件开发生产率提高的速度,跟不上计算机普及速度。几个软件危机的案例1.1.2产生软件危机原因两个主要原因:与软件本身的特点有关,和软件开发与维护的方法不正确有关。1.1.3消除软件危机的途径消除“软件就是程序”的错误观念软件=程序+文档+数据软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。非个人英雄主义使用实践中总结出来的成功的技术和方法开发和使用更好的软件工具。思考问题只要是编程高手,不懂软件工程,也能编出很好的软件?只要一套好的软件工程书籍,就可以解决软件开发过程的任何问题?只要有最好的开发工具、就能做出优秀的软件?软件开发进度慢于计划,增加程序员来解决?软件运行较慢,换一台机器?换一种算法?目录1.1软件危机1.2软件工程1.2.1软件工程定义1.2.2软件工程原理1.2.3软件工程方法学1.3软件生命周期1.4软件过程软件工程的本质特性软件工程关注于大型程序/系统的构造软件工程的中心课题是控制复杂性

逻辑—>文档分而治之可管理

软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中,是由具有一种文化背景的人,替具有另一种文化背景的人软件=知识+程序+数据+文档1.2.2软件工程的基本原理(I)Boehm于1983年提出:1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性1.2.3软件工程方法学软件工程包括技术和管理两方面的内容管理——对人、财、物的合理使用和配置技术——软件开发中采用的方法、过程、工具软件工程方法学:通常把在软件生命周期全过程中,使用的一整套技术方法的集合,称为方法学(Methodology),也称为范型(Paradigm)。软件工程方法学3个要素方法

完成软件开发的各项任务的技术方法,

回答“怎样做”的问题;工具

为运用方法,而提供的自动的或半自动的

软件工程支撑环境;过程

为了获得高质量的软件,所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学思想传统方法学面向对象方法学。目录1.1软件危机1.2软件工程1.3软件生命周期1.3.1软件定义1.3.2软件开发1.3.3软件维护1.4软件过程1.3软件生命周期目录1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程什么是软件过程软件开发模型/过程模型/软件工程范型瀑布、原型、增量、螺旋、喷泉RUPXPMSF将软件的开发过程,分成若干个日程时间交错的线性序列,每个线性序列,产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。强调每一个增量都发布一个可运行的产品特别适用于:需求经常变化的软件开发市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发能有计划地管理技术风险,如早期增量版本中,避免采用尚未成熟的技术1.4.3增量模型增量模型在软件开发过程中,必须及时识别和分析风险,并且采取适当措施,以消除或减少风险的危害。螺旋模型B.Boehm于1988年提出使用原型等技术方法来降低风险螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析:评价所选的方案,识别风险,消除风险工程实施:实施软件开发,验证工作产品客户评估:评价开发工作,提出修正建议

1.4.5喷泉模型喷泉模型体现了面向对象软件开发过程,迭代和无缝的特性,图中代表不同阶段的圆圈相互重叠,表示两个活动之间存在交迭。1.4.6RUP经验证的、最有效的软件开发经验,

称为最佳实践:迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更渐进的认识需求会不断变化提高重用更易理解沟通全程质保确保迭代成功RUP软件开发生命周期核心过程工作流程核心支持工作流程

4个连续工作阶段1.4.7敏捷过程与极限编程(I)敏捷过程团队高效工作、快速响应变化开发宣言个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划1.4.7敏捷过程与极限编程(II)XP是敏捷过程中最负盛名的一个用于需求模糊且常变XP的有效实践客户作为开发团队的成员使用用户素材短交付周期验收测试结对编程测试驱动开发集体所有持续集成可持续的开发速度开放的工作空间及时调整计划简单的设计重构使用隐喻XP(极限编程)eXtremeProgramming是一门针对业务和软件开发的规则,它的作用在于将两者的力量集中在共同的、可以达到的目标上。它是以符合客户需要的软件为目标而产生的一种方法论,XP使开发者能够更有效的响应客户的需求变化,哪怕是在软件生命周期的后期。它强调,软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出了人在软件开发过程中的作用。极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接。1.4.7敏捷过程与极限编程(III)XP项目的整体开发过程1.4.7敏捷过程与极限编程(IV)XP迭代开发过程1.4.8微软过程(I)项目计划应该兼顾未来的不确定因素用有效的风险管理来减少不确定因素的影响经过生成并快速地测试软件的过渡版本,从而提高产品的稳定性和可预测性。采用快速循环、递进的开发过程用创造性的工作来平衡产品特性和产品成本项目进度表应该具有较高稳定性和权威性使用小型项目组并发地完成开发工作在项目早期把软件配置项基线化,项目后期则冻结产品使用原型验证概念,对项目进行早期结论把零缺陷作为追求的目标里程碑评审会的目的是改进工作,切忌相互指责1.4.8微软过程(II)微软软件生命周期阶段划分和主要里程碑1.4.8微软过程(III)微软过程的生命周期模型模型比较每个软件开发组织,应该选择适合于该组织的软件开发模型,随着正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点。模型比较模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型喷泉模型风险驱动迭代无缝适合OO风险分析人员需要有经验且经过充分训练小结列举软件危机表现不同阶段软件变更的代价P32题2理解软件工程概念列举软件工程方法学列举软件生命周期的阶段列举软件过程13.7

能力成熟度模型(I)CMM(capabilitymaturitymodel),是用于评价软件机构的软件过程能力成熟度的模型。有助于软件开发机构,建立一个有规律的、成熟的软件过程。CMMIIntro吃饭活动为例13.7CMM在改进软件过程作用通过确定当前的过程成熟度,

并识别出对过程改进起关键作用的问题,

从而明确过程改进的方向和策略。通过集中开展一组过程改进活动,

软件机构便能稳步而有效地改进其软件过程,

使其软件过程能力得到循序渐进的提高。13.75个成熟度级别说明了不同级别之间,软件过程的主要变化。为了达到从一个无序的、混乱的软件过程,

进化到一种有序的、有纪律的且成熟的软件过程的目的,必须经历的过程改进活动的途径。初始级可重复级已定义级已管理级优化级13.7.1初始级(I)软件过程的特征是无序的,混乱的。过分的承诺几乎没有什么过程是经过定义的,项目能否成功完全取决于开发人员的个人能力。

遇到危机就放弃原计划过程,反复编码和测试。成功完全依赖个人努力和杰出的专业人才。软件过程是不可确定和不可预见的。改进方向:建立项目管理过程。实施规范化管理,保障项目的承诺。首要任务是进行需求管理,建立客户与软件项目之间的共同理解,使项目真正反映客户的要求。建立各种软件项目计划。如软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划及过程改进计划。开展软件质量保证活动(SQA)。

13.7.1初始级(II)13.7.2可重复级(I)特点:

进行较为现实的承诺。主要是逐个项目地建立基本过程管理条例来加强过程能力。

管理工作主要跟踪软件经费支出、进度及功能。采用基线(baseline)来标志进展、控制完整性。定义了软件项目的标准,并相信它、遵循它。

通过子合同建立有效的供求关系。

13.7.2可重复级(II)改进方向:

不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为全组织的标准软件过程。确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中

建立软件工程过程小组(SEPG)长期承担评估与调整软件过程的任务,以适应未来软件项目的要求。 积累数据,建立组织的软件过程库及软件过程相关的文档库。 加强培训。13.7.3已定义级(I)特点:

无论管理方面或工程方面的软件过程都已文件化、标准化,并综合成软件开发组织的标准软件过程。 软件过程标准被应用到所有的工程中,用于编制和维护软件。在从事一项工程时,产品的生产过程、花费、计划以及功能都是可以完全控制的,从而软件质量也可以控制。软件工程过程组(SEPG)负责软件过程活动。 在全组织范围内安排培训计划。13.7.3已定义级(II)改进方向

*开始着手软件过程的定量分析,以达到定量地控制软件项目过程的效果。 *通过软件的质量管理,达到软件的质量目标。

13.7.4已管理级(I)

特点:制定了软件过程和产品质量的详细而具体的度量标准。软件过程和产品的质量都可以被理解和控制。软件组织的能力是可预见的。组织的度量工程保证所有项目对生产率和质量进行度量,并作为重要的软件过程活动。具有良好定义及一致的度量标准来指导软件过程,并作为评价软件过程及产品的定量基础。在开发组织内已建立软件过程数据库,保存收集到的数据,可用于各项目的软件过程。

13.7.4已管理级(II)改进方向: 缺陷防范。不仅仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷。 主动进行技术变动管理、标识、选择和评价新技术,使有效的新技术能在开发组织中施行。

温馨提示

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

评论

0/150

提交评论