【软件工程】第一章

目录

第1章 软件工程学概述

1.1 软件危机

1.2 软件工程 

1.3 软件生命周期

1.4 软件过程 

第1章 软件工程学概述

1.1 软件危机

1.什么是软件危机?p1

软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。

2.软件危机有什么典型表现? p2

(1)对软件开发成本和进度估计常常很不准确

(2)用户对“已完成的软件系统不满意的现象经常发生

(3)软件产品的质量往往靠不住

(4)软件常常是不可维护的

(5)软件通常没有适当的文档资料

(6)软件成本在计算机系统总成本中所占的比例逐年上升

(7)软件开发生产率提高的的速度,远远跟不上计算机应用迅速普及深入的趋势

3.产生软件危机的原因  p3

 1 、与软件本身的特点有关

 2 、与软件开发与维护的方法不正确有关

4. 消除软件危机的途径  p4

1 、彻底消除“软件就是程序”的错误观念。

2 、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,不是个人独立的劳动。

 3 、推广和使用在实践中总结出来的软件开发的成功技术和方法。

 4 、开发和使用更好的软件工具。

1.2 软件工程 

 1.软件工程的定义 p5

概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。这就是软件工程。

2.软件工程的本质特性  p6

1 )软件工程关注于大型程序的构造。

2 )软件工程的中心课题是控制复杂性

Ø 主要考虑:如何分解和集成
Ø 为什么要分解: G .Miller, “7 2 ” 原则

3 )软件经常变化

4 )开发软件的效率非常重要

5 )和谐地合作是开发软件的关键

6 )软件必须有效地支持它的用户

7 )在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品

扩展定义:软件=知识+程序+数据+文档 

3.软件工程的基本原理 p7

B.W.Boehm, 1983 年提出:

 1 )用分阶段的生命周期计划严格管理

 2 )坚持进行阶段评审

 3 )实行严格的产品控制基线

Ø    基线( baseline )控制

 4 )采用现代程序设计技术

 5 )结果应能清楚地审查

 6 )开发小组的人员应该少而精

 7 )承认不断改进软件工程实践的必要性

4.软件工程方法学   p9

(1)三要素:方法 工具 过程

(2)思想:1) 传统方法学,也称为:生命周期方法学  结构化范型

                    2)面向对象方法

1.3 软件生命周期

 1.定义

由软件定义、软件开发和运行维护(也成为软件维护)3个时期组成,每一个时期又进一步划分成若干个阶段。  p11

3个时期8 个阶段  问题定义;可行性研究;需求分析; 概要设计;详细设计;编码;测试;维护

1.4 软件过程 

 p14

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 

过程是软件工程三要素之一,定义了运用方法的顺序、应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段人物完成的里程碑。通常用软件生命周期模型来描述

1.瀑布模型

1970,W.Royce提出

瀑布模型的过程

 1 、传统的瀑布模型

Ø   从上一阶段接受本阶段的工作对象,作为输 入;

Ø   利用输入,完成本阶段活动的内容;

Ø  本阶段的工作成果作为输出传入下一阶段。

2. 实际的瀑布模型

增加了一个评审活动,评审每个阶段完成的活动,若得到确认,则进行下一阶段的活动;否则返回前一阶段,甚至更前阶段返工; 

 3.瀑布模型的特点

(1)阶段间具有顺序性和依赖性

(2)推迟实现的观点

(3)质量保证的观点

优点:

可强迫开发人员 采用规范的方法
严格地规定了每个阶段 必须提交的文档
要求每个阶段的所有产品都必须经过质量保证小组的 仔细验证

缺点:

无法解决软件需求 不明确或不准确 的问题;可能导致最终开发的产品不能真正满足用户需要。
 瀑布模型 比较适合 开发 需求明确的软件

2. 快速原型模型

Ø 获得用户的基本需求说明,据此快速建立一个小型软件系统.
Ø 用户试用,对其评价;
Ø 开发人员按照用户的意见快速地修改原型系统,获得新的原型版本,再请用户试用,如此反复,直到满足用户的要求;
Ø 用户确认原型系统之后,开发人员据此书写规格说明文档,进行下一步开发。

原型是快速实现和运行的早期版本,反映最终系统的部分重要特性。

  常见的原型实例:人机界面;系统主要功能。

  优点:

通常能反映用户真实需求;

             软件产品的开发基本上是线性顺序进行的。

3.增量模型 

把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。

   使用增量模型时,第一个阶段的增量构件往往实现软件的基本需求,提供最核心的功能;后面的增量构架逐渐添加系统的其它功能

优点:

l 能在较短的时间内,提供可完成部分工作的初步产品给用户;
l 用户有较为充裕的时间学习和适应新产品。

缺点:

   对开发人员技术能力要求较高,要求能从系统整体出发正确划分增量构件,并进行分别开发,最后能很好地集成这些构件 

4.螺旋模型

 1.简单的螺旋模型

螺旋模型改进了原型模型,在每个阶段都加入风险分析

5.喷泉模型

l 优点 无缝,可同步开发,提高开发效率,节省开发时间 , 适 用于 面向对象软件
l 缺点   可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值