软件工程概述
8
3 软件工程
软件工程的定义
软件工程的理解: 软件工程学科是一门指导计算机软件开发和维护的工程学科; 软件工程不是科学,其目的是创造而不是发现; 软件工程不是传统意义的工程:没有成熟的系统化方法。
软件工程的7条基本原理
(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术
29
增量模型
增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征。采用随着时间的 进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增 量”。
增量模型
30
增量模型
增量模型
主要特点:
(1)人员分配灵活,刚开始不用投入大量人力资源,如果核心产品很受欢 迎,则可增加人力实现下一个增量 。 (2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出 核心产品的途径,这样就可以先发布部分功能给客户,以满足客户的局部 需求 。 (3)能够有计划地管理技术风险 主要缺点:
软件的评价因素
(1)易用性:指软件产品对用户来说有效、易学、高效、好记、少错 和令人满意的程度 。 (2)可靠性:指在给定的时间内,计算机软件系统能实施应有功能 的能力。 (3)可维护性:指软件维护人员对该软件进行维护的难易程度。 (4)安全性:确保软件系统不会被内部或外部因素危及的能力。
3
1 软件的基础知识
操作提示
可以通过上网查阅相关资料获取软件过程模型更为详细的信息。
32
原型模型
原型模型
是从需求收集开始, 在获得一定的需求后, 进行“快速设计”,在 此基础上创建软件系统 的原型,并由用户对原 型进行评估并进一步精 化待开发软件的需求。
原型模型
33
RAD模型
RAD模型
是一个增量型的软件 开发过程模型,强调极 短的开发周期。RAD模 型是瀑布模型的一个 “高速”变种,通过大 量使用可复用构件,采 用基于构件的建造方法 实现快速开发。
(3)遵循编码规范
(4)进行单元测试
8-综合测试
通过各种类型的测试及相应
的调试,保证软件达到预定的的 要求。最基本的测试是集成测 试和验收测试。
9-软件维护
(1)改正性维护
(2)适应性维护
(3)完善性维护 (4)预防性维护
21
作业
操作要求
(1)怎样理解软件生存周期模型? (2)软件生存周期模型中各阶段的主要描述工具有哪些? (3)需求分析在软件生存周期过程中处于怎样的地位? (4)查找一份需求规格说明书,通过阅读该说明书准确的获取系统的需求。 (5)查找一份总体设计说明书 (6)查找一份详细设计说明书
软件的发展
1.程序设计阶段(20世纪50至60年代) 2.程序系统阶段(20世纪60至70年代) 3.软件工程阶段(20世纪70年代中后期) 4.第四阶段(约20世纪90年代以来)
软件发展的四个阶段出现的典型技术和主要特点
4
1 软件的基础知识
软件的特点
1.抽象性
指软件生产无明显制造过程,软件是一种逻辑实体,而不是具体的物理实体 。
瀑布模型
24
瀑布模型
瀑布模型
主要特点:
(1)上一阶段活动的成果作为本阶段活动的输入; (2)利用这一输入实施本阶段活动应完成的内容; (3)得到本阶段活动的工作成果,再传递传给下一阶段活动; (4)在每一阶段活动结束时,对阶段活动的工作成果进行评审,如果工作 成果得到确认,则继续下一项活动,否则返回前一阶段,甚至更前阶段的 活动进行返工。
喷泉模型
28
喷泉模型
喷泉模型
主要特点:
(1)软件的某个部分(如:组件)通常被重复工作多次 ; (2)可以实现并行开发,提高软件项目开发效率,节省开发时间 ; (3)适应于面向对象的软件开发过程 ;
主要缺点: (1)由于喷泉模型在各个开发阶段是重叠的,因此,在开发过程中,需要 大量的开发人员,不利于项目的管理; (2)喷泉模型要求对文档的管理较为严格,审核的难度加大,尤其是面对 可能随时加入各种信息、需求与资料。
11
软件生存周期模型
任务目标 了解软件生存周期模型及软件生存周期的 阶段划分及各阶段的主要任务
学习方法
资料查询法 类比学习法
12
4 软件生存周期
定 义 时 期
软 件 生 存 周 期
开 发 时 期 维 护 时 期
软件生存周期模型和各阶段文档
13
软件生存周期
1-问题定义
“要解决的问题是什么?” 系统分析员应该提出关于问题性质、工程目标和规模的书面报告。 并组织认真讨论这份 书面报告。问题定义阶段是软件生存周期中最简 短的阶段,一般只需要一天甚至更少的时间。
14
软件生存周期
2-可行性研究(系统流程图)
15
软件生存周期
3-需求分析
1.什么是软件需求 IEEE软件工程标准中关于需求的定义 用户解决问题或达到目标所需的条件或权能。
系统或系统部件要满足合同、标准、规范或其它正式规定文档
所需具有的条件或权能。 一种反映上面两条所描述的条件或权能的文档说明。 2.需求的特点 (1)需求是根本的 (2)需求是变化的 (3)需求是多层次的
2.可复制性
指软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在 研制、开发中被创造出来的,它可以很简单的制作副本。
3.不会磨损
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,而只有版 本更新和升级的问题。
4.依赖性
软件的开发和运行经常受到计算机系统的限制,对计算机系统和用户需求有 着不同程度的依赖性。
(2)中等成本的解决方案。
(3)高成本的完美的解决方案。
19
软件生存周期
5-详细设计
“应该怎样具体地实现这个系统
呢?” 通常用HIPO图或PDL语言 或程序流程图描述详细设计的结果 。
20
软件生存周期
7-编码和单元测试
也称为软件的实现,也是程序员的主要工作。 (1)选择程序设计语言 (2)养成程序设计风格
25
螺旋模型
螺旋模型
将瀑布模型和演化模型结合起来,融合了两个模型的优点,而且还强 调了其他模型均忽略了的风险分析和评价。
螺旋模型
26
螺旋模型
螺旋模型
主要特点:
在“瀑布模型”的每一个开发阶段前,引入一个非常严格的风险识别、 风险分析和风险控制。它把软件项目分解成一个个小项目,每个小项目都 标识一个或多个主要风险,直到所有的主要风险因素都被确定。 螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决 策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调 整管理决策提供了便利,从而降低了软件开发风险。 主要缺点:
5.开发效率低
软件的开发至今尚未完全摆脱手工的开发方式,软件也很难象其它工业产品 一样实现标准化、自动化生产。
6.开发费用高
随着社会的发展和信息化进程的推进,在计算机系统中,软件费用占有的比 例越来越大。
5
1 软件的基础知识
软 件 的 分 类
6
2 软件危机
什么是软件危机
指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而 导致软件开发与维护过程中出现一系列严重问题的现象 (始于20 世纪 60年代 )。 从宏观上,主要是指 (1)软件的发展赶不上计算机硬件的发展, (2)软件的发展赶不上社会对软件需求的增长。 从具体的的软件来说 (1)软件往往不能按时完成,按预算、按时完成。 (2)已开发的软件不能很好地使用,甚至很快就不能用。
软件工程概述
1
本章学习要点
软件的定义与及分类 软件工程的定义和基本思想 软件生存周期思想 软件生存期模型 面向对象软件工程的基本思想和OOA, OOD,OOP的基本内容
2
1 软件的基础知识
软件的定义
软件是人们写给计算机的一系列指令以及相关文档的集合。 软件由以下三部分组成: (1)在运行中能提供所希望的功能和性能的指令集(即程序)。 (2)使程序能够正确运行的数据。 (3)描述程序研制过程、方法所用的文挡。
10
3 软件工程
新的设计原则
(1)确定性 是指软件开发过程中所有概念的表达应是确定的,无歧义性 的,规范的。 (2)一致性 指整个软件系统(包括程序,文档和数据)的各个模块应使 用一 致的概念。 (3)完备性 指软件系统不丢失任何重要成分,可以完全实现系统所要求 功能的程度。为了保证系统的完备性,在软件过程中需要严格的 技术评审。 (4)可验证性 指开发大型的软件系统需要对系统自顶向下,逐层分解,系 统分解应遵循系统易于检查,测试,评审的原则,以确保系统的 正确性。
7
2 软件危机
软件危机的特征
(1)软件开发费用和进度失控 丹佛新国际机场 。 (2)软件的可靠性差 “阿丽阿娜”运载火箭 (3)生产出来的软件难以维护 典型例子--IBM360的操作系统
软件危机的原因
(1)与软件本身的特点有关 (2)与软件开发人员本身的弱点有关
用户需求不明确 缺乏正确的理论指导 软件开发规模越来越大 软件开发复杂度越来越高
(1)过多的迭代次数会增加开发成本,延迟提交时间。 (2)采用螺旋模型,需要具有相当丰富的风险评估经验和专门知识。在风 险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
27
喷泉模型
喷泉模型
以用户需求为动力, 以对象为驱动的模型, 主要用于描述面向对象 的软件开发过程。喷泉 模型认为软件开发过程 自下而上周期的各阶段 是相互重叠和多次反复 的
如果增量包之间存在相交的情况且不能很好地处理,就必须做全盘的系 统分析。
31
作业
操作要求
(1)讨论瀑布模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用瀑布模型。 (2)讨论螺旋模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用螺旋模型。 (3)讨论喷泉模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用喷泉模型。 (4)讨论增量模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用增量模型。