版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件工程学概述1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程
什么是软件软件是程序、数据及相关文档的完整集合。程序是能够完成预定功能和性能的可执行的指令序列数据是使程序能够适当地处理信息的数据结构文档是开发、使用和维护程序所需要的图文资料1.1.1软件危机的介绍◆定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。◆软件危机包含下述两方面的问题:
1)如何开发软件,以满足对软件日益增长的需求;
2)如何维护数量不断膨胀的现有软件。◆软件危机的特征:
1)长期性
2)症状不明显1.1软件危机◆软件危机主要有以下一些典型表现:1)对软件开发成本和进度的估计常常很不准确;2)用户不满意“已完成的”软件系统;3)软件产品的质量往往靠不住;4)软件常常是不可维护的;5)软件通常没有适当的文档资料;6)软件成本在计算机系统总成本中所占的比例逐年上升;7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
1.1.2产生软件危机的原因1.与软件本身的特点有关
1)软件是逻辑部件,不是物理部件;
2)软件在运行过程中不会因为时间过长而被“用坏”
3)规模庞大,而且程序复杂性将随着程序规模的增加而成指数上升。2.与软件开发与维护的方法不正确有关
1)归因于计算机系统早期开发的“个体化”特点,重编程、轻维护、忽视需求分析。
2)软件生命周期:一个软件从定义、开发、使用和维护,直到最终废弃,要经历一个漫长的时期,通常把这个漫长的时期称为生命周期。
1.1.3消除软件危机的途径1.正确的认识对计算机软件,2.软件开发不是个体劳动,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。3.应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,4.开发和使用更好的软件工具。总之:为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。1.定义:
1)概括定义2)早期定义3)更全面更具体的定义1.2软件工程
1.2.1软件工程的介绍2.软件工程的本质特性1)软件工程关注于大型程序的构造,2)软件工程的中心课题是控制复杂性,3)软件经常变化,4)开发软件的效率非常重要,5)和谐地合作是开发软件的关键,6)软件必须有效地支持它的用户,7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。1.用分阶段的生命周期计划严格管理,2.坚持进行阶段评审,3.实行严格的产品控制,4.采用现代程序设计技术,5.根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查,6.开发小组的人员应该少而精,7.承认不断改进软件工程实践的必要性。1.2.2软件工程的基本原理1.什么是方法学?通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。2.软件工程方法学中的3个要素:
◆方法:是完成软件开发的各项任务的技术方法,
◆工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境,
◆过程:过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。1.2.3软件工程方法学目前使用最广泛的软件工程方法学是:1.传统方法学1)也称为生命周期方法学或结构化范型,2)它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。3)传统方法学的工作思路:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。2.面向对象方法学1)来源:当软件规模庞大或者对软件的需求是模糊的或会随时间变化而变化的时候,使用传统方法学开发软件往往不成功,而且传统方法学把数据和操作人为地分离成两个独立的部分,自然会增加软件开发与维护的难度。面向对象方法把数据和行为看成是同等重要的,它是一种以数据位主线,把数据和对数据的操作紧密地结合起来的方法。
2)面向对象方法学具有的4个要点:把对象作为融合了数据及在数据上的操作行为的统一的软件构件。把所有对象都划分为类按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。对象彼此间仅能通过发送消息互相联系。3)出发点和基本原则:◆尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。6.两种方法的比较:◆降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作;◆促进了软件的可重用性。◆软件生命周期:◆
概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成;◆每个时期又进一步划分成若干个阶段:
软件定义=问题定义+可行性研究+需求分析:
软件开发=总体设计+详细设计+编码和单元测试+综合测试;
运行维护1.3软件生命周期1.问题定义要解决的问题是什么2.可行性研究对于确定的问题有解决办法吗3.需求分析为了解决问题,目标系统应该做什么4.总体设计应该怎样实现目标系统5.详细设计怎样具体实现系统6.编码和单元测试写出程序模块7.综合测试通过各种类型的测试使软件达到预定的要求8.软件维护使系统持久地满足用户的需要改正性维护,适应性维护,完善性维护,预防性维护。1、什么是软件过程? 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。◆ISO9000把过程定义为:使用资源将输入转化为输出的活动所构成的系统。◆过程定义了:运用方法的顺序、应该交付的文档资料、管理措施,以及标志软件开发各个阶段任务完成的里程碑。
1.4软件过程◆通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。◆瀑布模型◆快速原型模型◆增量模型◆螺旋模型◆喷泉模型
1、历史
1970年由温斯顿·罗伊斯提出。 在20世纪80年代之前,瀑布模型一直是惟一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。 传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。1.4.1瀑布模型2、特点阶段间具有顺序性和依赖性
推迟实现的观点
质量保证的观点图1.2传统的瀑布模型3实际的瀑布模型实际的瀑布模型是带“反馈环”的,实线箭头表示开发过程,虚线箭头表示维护过程,当后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。4、优点
◆可强迫开发人员采用规范的方法开发结构化技术;
◆严格地规定了每个阶段必须提交的文档;
◆每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。5、缺点
◆“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。◆由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。1、什么是快速原型模型 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。1.4.2快速原型模型图1.4快速原型模型2、优点1)不带反馈环;2)基本上按线性顺序开发3、总结1)开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。
2)原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。
3)因此,原型系统的内部结构并不重要,重要的是,必须迅速地构建原型然后根据用户意见迅速地修改原型。1、简介增量模型也称为渐增模型,如下图所示。1.4.3增量模型1)使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。2)使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。第二个;第三个等等增量构件进行补充、完善。3)把软件产品分解成增量构件时,应该使构件规模适中,规模过大或过小都不好。最佳分解方法因软件产品特点和开发人员的习惯而异。4)分解时惟一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。2、比较 1)采用瀑布模型或快速原型模型开发软件,都是一次就把一个满足所有需求的产品交给用户;
2)增量模型则是逐步地、分批地、向用户提交产品。3、优点
1)能在较短时间内向用户提交可完成部分工作的产品,是增量模型的一个优点;
2)逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。4、困难
1)软件体系结构必须是开放式的;
2)在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。5、注意 增量模型本身是自相矛盾的。1)它一方面要求开发人员把软件看作一个整体,另一方面又要求开发人员把软件看作构件序列,每个构件本质上都独立于另一个构件。2)除非开发人员有足够的技术能力协调好这一明显的矛盾,否则用增量模型开发出的产品可能并不令人满意。6、一种风险更大的增量模型一旦确定了用户需求之后,就着手拟定第一个构件的规格说明文档,完成后规格说明组将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件…用这种方式开发软件,不同的构件将并行地构件,因此有可能加快工程进度。但是,使用这种方法将冒构件无法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可能毁于一旦。1、风险分析:
软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。因此,在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。2、螺旋模型的基本思想 使用原型+风险分析的方法来尽量降低风险。 就是把它看作:在快速原型模型的每个阶段之前都增加了风险分析过程的快速原型模型, 如下图示:1.4.4螺旋模型图1.7简化的螺旋模型图1.8完整的螺旋模型
螺旋模型分析螺旋模型有许多优点:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标,减少了过多测试或测试不足所带来的风险;更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。螺旋模型是风险驱动的,除非软件开发人员具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还认为一切正常。
1.4.5喷泉模型
“喷泉”体现了面向对象软件开发过程迭代和无缝的特性。
图中代表不同阶段的圆圈相互重叠,表明两个活动之间存在交迭,保证了在各项开发活动之间的无缝过渡。
图中在一个阶段内的向下箭头代表该阶段内的迭代。图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。1.4.6Rational统一过程Rational统一过程(RUP)是由Rational软件公司推出的一种完整而且完美的软件过程。
RUP总结了经过多年商业化验证的6条最有效的软件开发经验,这些经验被称为“最佳实践”。
1.迭代式开发
2.管理需求3.使用基于构件的体系结构4.可视化建模5.验证软件质量6.控制软件变更
RUP软件开发生命周期RUP软件开发生命周期是一个二维的生命周期模型,如图1.10所示,途中纵轴代表核心工作流,横轴代表时间。工作阶段4个工作阶段的工作目标初始阶段精化阶段构建阶段移交阶段RUP迭代式开发RUP强调采用迭代和渐增的方式来开发软件,整个项目开发过程由多个迭代过程组成。在每次迭代中只考虑系统的一部分需求,针对这部分需求进行分析、设计、实现、测试和部署等工作,每次迭代都是在系统已完成部分的基础上进行的,每次给系统增加一些新的功能,如此循环往复地进行下去,直至完成最终项目。目前全球已有上千家软件公司在使用RUP。这些公司分布在不同的应用领域,开发着或大或小的项目,这表明了RUP的多功能性和广泛适用性。1.4.7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度瓦工装修绿色施工认证合同3篇
- 二零二五版危化品公路运输安全监管服务合同2篇
- 二零二五版搅拌站轮胎专用备品备件供应合同3篇
- 二零二五版智能办公楼深度清洁及保养服务合同2篇
- 二零二五版办公室文员工作环境优化合同3篇
- 二零二五年度高端房地产项目个人连带责任保证担保合同2篇
- 二零二五年度互联网数据中心(IDC)设施租赁合同3篇
- 2025年度中式烹饪技艺传承与创新合同协议3篇
- 屋顶防水施工合同(2篇)
- 二零二五年救生员水上安全培训与劳动合同3篇
- 广东省惠州市2024-2025学年高一上学期期末考试英语试题(含答案)
- 医院骨科2025年带教计划(2篇)
- 环境保护应急管理制度执行细则
- 2024-2030年中国通航飞行服务站(FSS)行业发展模式规划分析报告
- 机械制造企业风险分级管控手册
- 地系梁工程施工方案
- 藏文基础-教你轻轻松松学藏语(西藏大学)知到智慧树章节答案
- 2024电子商务平台用户隐私保护协议3篇
- 安徽省芜湖市2023-2024学年高一上学期期末考试 英语 含答案
- 医学教程 常见体表肿瘤与肿块课件
- 内分泌系统异常与虚劳病关系
评论
0/150
提交评论