预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共54页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

软件工程导论本章学习目标:了解软件危机的发生原因和典型表现识记软件工程的概念和基本原理识记软件生命周期和软件过程的概念识记常用的生命周期模型第1章软件工程学概述第1章软件工程学概述1.1.1软件的定义1.1.1软件的定义1.1.1软件危机的定义1.1.2软件危机的表现1.1.2软件危机的表现1.1.2软件危机的表现1.1.3产生软件危机的原因主观原因:对用户要求没有完整和准确的认识就匆忙编写程序。对软件的开发过程的认识不准确。生命周期的每个阶段都有特定的工作和特点,都是不可逾越的。只有上一阶段工作完成,才能开始下一阶段的工作。对软件质量的重视不够是造成软件开发成本激增的主要原因。注意软件开发过程中错误的“放大效应”。轻视软件维护将是一个重大的错误。软件开发时期各阶段的关键目标都是提高软件的可维护性。第1章软件工程学概述1.2软件工程1.2.1软件工程的概念1.2.1软件工程的概念1.2.1软件工程的概念1.2.2软件工程的基本原理1.2.2软件工程的基本原理1.2.2软件工程的基本原理1.2.2软件工程的基本原理1.2.3软件工程方法学1.2.3软件工程方法学1.2.3软件工程方法学第1章软件工程学概述1.3.1软件生命周期的概念1.3.1软件生命周期的概念1.3.1软件生命周期的概念阶段1:问题定义“需要解决的问题是什么?”确定问题的性质软件目标和规模形成书面报告。阶段2:可行性研究“确定软件系统是否值得去解”高层次的系统分析和设计估算系统的成本和效益《可行性研究报告》阶段3:需求分析“解决这些问题需要系统做什么?”与用户的交流生成系统的逻辑模型《软件需求规格说明书》阶段4:总体设计(概要设计)“应该怎样实现目标系统?”设计出实现目标系统的方案设计软件结构,确定模块及之间关系概要设计说明书阶段5:详细设计(模块设计)“如何具体地实现这个系统?”详细的设计每个模块的算法和数据结构阶段6:编码和单元测试“写代码,测试每个模块!”选取程序设计语言写出容易理解和维护的程序模块对每一个模块进行严格的测试阶段7:综合测试“通过各类测试和调试来完善软件”集成测试+验收测试(用户参加)保存测试计划、测试方案和测试结果阶段8:软件维护“通过各种必须的维护活动使系统持久地满足用户的需要!”改正性维护适应性维护完善性维护预防性维护1.3.3软件生命周期的模型1.瀑布模型—线性模型之一瀑布模型瀑布模型的特点:(1)各阶段之间有依赖性和严格的顺序性。(2)推迟实现。——典型特点(3)严格的阶段质保。(4)文档驱动。瀑布模型的问题:(1)实际的项目很少顺序严格(2)用户往往难以给出具体、正确、完整的要求(3)开发人员“阻塞状态”严重快速需求分析(用户沟通)快速原型模型的特点:(1)出品速度快。(2)逐步求精。(3)开发阶段迭代。快速原型模型的问题:(1)实现过程中不应有的折衷方案。(2)开发者急于完成原型而忽略了整体设计和可维护性;(3)用户的参与过多也造成了软件开发管理的混乱。增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。3.增量模型增量模型的特点:(1)结合了线性模型和原型模型的特点;(2)每个增量可以结合原型法;(3)系统的问世提前→“增量1”增量模型的问题:开放的软件体系结构中心思想:“渐进开发,逐步完善”-使用增量模型开发时,第一个增量往往是系统中的核心构件,同时,要求产品分解成增量构件的规模应当适中。-如何不破坏已经开发的构件将新的构件集成到一个产品中是增量模型的一个难点。-增量模型的提出很好地解决了线性模型中的人员阻塞问题,尤其是在项目开始初期开发人员不足的时候,能有效地规避技术风险。喷泉模型是典型的面向对象的软件过程模型之一,“喷泉”较好地体现了面向对象软件开发过程迭代和无缝的特性。4.喷泉模型(1)假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。解:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。(2)假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪