软件工程
(第二版)
湖北汽车工业学院阎菲 向郑涛 吴年志 陈宇峰 制作中国水利水电出版社 出版前言本书是依据教育部,高职高专教育基础课程教学的基本要求,和,高职高专教育专业人才培养目标与规格,编写而成。 全书共分十四章。
第一,二章是软件工程基础,主要讨论软件工程的发展历程,软件工程的结构与分类和概要论述系统建设的基本思路与主要方法,以作为后续各章的预备知识和概念基础 。
第三,四章论述计算机工程及需求分析流程改革 。
第五,六,七,八,九章讨论软件系统分析,设计与系统实施的方法软件工程开发的项目管理与运行维护的基本知识 。 尽管一些新的方法有了很大发展,
结构化方法作为信息系统建设中比较成熟的方法与技术,仍然在软件工程建设中得到广泛应用,是本专业学生应该掌握的基本方法与技能 。
前言第十,十一,十二章讨论面向对象方法 。 近
20年来,在软件工程领域,面向对象方法有了较大的发展,统一建模语言 (UML)和统一过程
(RUP)的建立和日趋完善使得面向对象方法在应用上有了实际的工业标准 。
第十三,十四章构成本书的最后一部分,专门介绍比较新颖,颇具发展潜力的软件开发技术,包括:快速原型技术,重用技术 。
第一章 软件危机与软件工程学习要点:
软件工程是在 20世纪 60年代末期提出的。这一概念的提出,其目的是倡导以工程的原理、
原则和方法进行软件开发,以期解决当时出现的“软件危机”。
本章介绍软件危机和软件工程的基本概念 。
第 1章 软件危机与软件工程
1.1 软件危机
1.2 软件工程
1.3 本章小结
1.1软件危机软件包括了使计算机运行所需要的各种程序及其有关的文档资料。其中,程序是计算机任务的处理对象和处理规则的描述;文档是为了理解程序所需的阐述性资料。
20世纪 60至 70年代,“软件危机”一词在计算机界广为流传,其主要针对当时存在的软件代价高和软件错误多的现象。
1.1软件危机
1.1.1 软件代价高
1.1.2 软件开发和维护中的严重问题退出
1.1.3产生软件危机的原因
1.1.1软件代价高
100
80
60
40
20
0
195 5 197 0 198 5
硬件软件总费用的百分比
计算机系统硬件 /软件成本变化趋势
在开发一个新型计算机系统或修改一个现有系统的过程中,最大部分的资金是用在软件系统开发方面。
二十年来软件技术的发展
硬件技术 计算速度容量增高成本下降
计算能力 106--108倍。
主频 4.7M— 2G
内存 256K--512MB,2-4GB
外存 360K--680M
一张光盘 1.5万页 A4文字 40册 400页书真空管 半导体 集成电路 微处理器 连接性
19 51 57
51
58 63
51
64 69
51
70 90
51
91 85
51
单主机计算 C/ S 分布式计算 网络计算
95
计算模式
2000
1.1.2 软件开发和维护中的严重问题计算机系统发展的早期时代所形成的错误概念与做法,已经严重阻碍了计算机软件的开发,更严重的是:用错误方法开发的软件几乎根本无法维护,只好提前报废。
1,软件危机
2,有那些软件开发的错误方法和观念
( 3)软件产品的质量量化分析不够。
( 1) 软件开发成本与进度估计不准确。
( 2)闭门造车。软件开发人员仓促上阵,编写程序。
( 4)软件重用性差。
( 5)软件没有适当的文档资料。
( 6)软件成本逐年上升。
( 1) 建设环境的复杂性软件工程结构复杂,要涉及到用户组织内部与外部环境
( 2) 用户需求的多样性软件开发失败最主要的原因是:用户对软件需求描述不精确,可能有遗漏,有二义性,有错误 。
( 3) 建设内容的复杂性软件是逻辑部件:试制阶段难衡量;开发质量较难评价,开发过程管理和控制较难 。
( 4) 技术手段的复杂性软件设计,实施,维护技术手段的复杂性 。
( 5) 建设所需资源的密集性软件系统是资金,劳动,智力,知识密集型大型项目,
各类的信息交流不及时是产生软件危机的主要原因 。
1.1.3产生软件危机的原因关于软件危机的总结
1、软件是逻辑部件:试制阶段难衡量;开发质量较难评价,开发过程管理和控制较难;运行过程才能暴露没有检测出来的事故,相当于修改设计,软件维护困难;
2、软件规模庞大,有技术问题,也有管理方法问题。
3、早期开发的个体化;忽视需求分析;认为软件开发写程序;轻视维护,对用户不了解,
4、对前期工作不能忽视,做好软件定义时期的工作,
这是降低成本,提高件质量的关键。
5、严重性:在软件开发的不同阶段修改付出代价(后期是前期的 2-3个数量级),软件维护是极端艰巨复杂的工作,占 55%~70%)
1,2 软件工程
1.2.1 软件工程的定义与基本原理
1.2.2 软件工程的目标
1.2.3 软件工程框架及原则退出什么是软件工程
软件工程 —— 是指把系统的、规范化的、可以度量的方法运用于软件的开发、运行和维护的过程;简言之,工程化在软件方面的作用。
以工程的方法制作软件项目 project或产品
product的全过程(从立项到交付)
工程方法:人们利用技术(或工具)、技能通过有组织活动完成契约规定的目标,即按预定完工期交付合格成品。
工程要素:人力、资金、技术
工程目标:在给定的资金、限制的时间内,完成符合相应标准的产品。
1,软件工程的七条基本原理
( 1)用分阶段的生命周期计划进行严格管理
( 2)坚持进行阶段评审
( 3)实行严格的产品控制
( 4)采用现代程序设计技术
( 5)结果应能清楚地审查
( 6)开发小组的人员应该少而精
( 7)承认不断改进软件工程实践的必要性
1.2.2 软件工程的目标
软件工程的目标可概括为:在给定成本,进度的前提下,开发出具有可修改性,有效性,可靠性,可理解性,可维护性,可重用性,可适应性,可移植性,
可追踪性和可互操作性并满足用户需要的软件产品 。
应该特别指出;“可靠性”这个目标在软件工程中有着重要的意义。广义上讲,它涉及到产品设计的一系列问题,从而使产品能在相当长的期间内稳定工作。狭义上讲,可靠性是软件成功运行的概率度量,可靠性分析和可靠性测试可作为衡量软件质量和其他开发过程的最重要的方法之一。
1.2.3 软件工程框架及原则开 发 模 型设 计 方 法支 持 过 程管 理 过 程用可 可可 可性可正可确性可性可合算软件分析实现与维护软件设计原则:
一,选取适宜的开发模型; 二,采用合适设计方法;
三,提供高质量工程支持; 四,重视开发过程管理 。