软件工程导论课件_第1页
软件工程导论课件_第2页
软件工程导论课件_第3页
软件工程导论课件_第4页
软件工程导论课件_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程

导论

张海藩编著

’第1篇软件工程概述

:♦软件危机

:»软件工程

「传统方法学

・「技术

YL面向对象方法学

题定义

L管理「软件定义喇城)

:♦软件生命周期J软件开发

1秋忏廿年编码和单元测试

I运行维护〔综合测试

>软件过程

第2篇软件定义

问题定义\

a

可行性研究

*需求分析

2.1问题定义

。目的:弄清楚用户要求计算机解决什么问题

。任务:编写“系统目标与规范说明”

系统目标与规范说明书

1、项目:教材销售系统

2、问题:人工销售教材手续繁琐,容易出错

3、项目目标:建立一个高效率、无差错的计算机教材销售系统

4、项目范围:利用现有的计算机,软件开发费用不得超过2000元

5、初步想法:建议在系统中增加对缺书的统计与采购功能

6、可性行研究:建议进行大约10天的可性行研究,且研究费用不

超过500元

一’2.2可行性研究

*目的:用最小的代价在尽可能短的时间内确定问

题是否能够解决.

♦:♦任务:对以后的行动方针提出建议,制定工程实

施计划。

1)技术可行性

分析技术冒险的各种因素,如:现有的技术是否能

实现本系统,现有的技术人员是否能任,开发系

统的软、硬资源是否能如期得到等。

2)经济可行性

*这个系统的经济效益能超过它的开发成本吗?

。进行成本效益分析,评估项目的开发成本。

举例:开发计算机辅助设计(CAD)系统取代当前的手工设计过

程中的成本效益分析

设:T:绘制一幅图的平均时间,单位小时

r:用CAD系统绘图减少的绘图时间比例

d:每小时绘图的平均成本,单位元

n:每年绘制图的数目

P:用CAD系统绘图的百分比

则可用下式计算利用CAD系统绘图每年可以节省的经费:

B=Txrxdxnxp

成本-效益(万元)

60-盈亏平衡点J该系统节省经费

成本及效益分析图:一

该系统成本

20—

oL]----1----1----1-----1------►

12345年

卜投资回收期一|

若r=1/4,T=4小时,n=8000/年,d=20元/小时,p=60%,

贝ijB=1/4x4x8000x20x60%=96000/年,即用CAD绘图比

用手工系统绘图平均每年要节省96000元。

假设总开发费用为20.4万元,年度费用估计为3.2万元。

系统开发成本、节省的经费与时间的关系如图所示。盈亏平衡

点对应的时间坐标是3」年,表示系统应用3」年后可以收回系

统成本。则从图中可知,投资回收期大约需要3.1年。

.货币的时间价值

通常用利率的形式表示。假设年利率为i,如果

现在存入P元,、则n年后可以得到的钱数为:F=

PX(1十巾这也就是p兀钱在n布后的价值。

反之,如果n年后能收入F元钱,那么这些钱的

现在的价值是:P=F^(1+i)n

如修改已有的库存清单程序并且编写产生报表)

的程序,估计共需5000元;系统修改后能及时定货

将消除零件短缺问题,估计因此每年可以节省2500

元,5年共可节省12500元。但是,不能简单地把

5000元和12500元相比较,因为前者是现在投资的

钱,后者是若干年以后节省的钱。

假定年利率为12%,利用上面计算货币现在价值

的公式可以算出修改库存清单系统后每年预计节

省的钱的现在价值,如表所示。

将来值(1+i)现在值累计的现在

(元)n(元)值(元)

125001.122232.142232.14

225001.251992.984225.12

325001.401779.456004.57

425001.571588.807593.37

525001.761418.579011.94

3)操作可行性

系统的操作方式在这个用户组织内行的通

吗?

❖考虑待开发软件的操作方式在用户组织

内是否行得通,现有管理制度、人员素

质、操作方式是否可行。J

必要时还应从法律、社会效益等更』f

泛的方面研究可行性」!

2.3需求分析

。软件需求指用户对目标软件系统在功能、

行为、性能、设计约束等方面的期望。

。通过对应问题及其环境的理解与分析,为

问题涉及的信息、功能及系统行为建立模

。将用户需求精确化、完全化,最终形成需

求规格说明,这一系列的活动即构成软件

开发生命周期的需求分析阶段。

DEC曾是美国三大计算机公司之一,以众多的

高新技术著称于世,98年前被康柏收购。它在最后

的几年里研发出的Alpha计算机芯片更以卓越的技

术在性能上超过了Intel、sun和其他厂家的芯片。

微软也曾大力协助DEC,将WindowsNt移植到

Alpha系统,然而,Alpha在市场上彻底向失败了,

成为DEC最终失败的原因之一。

原因:DEC不了解市场和用户,盲目追求技

术。Alpha系统复杂,造价过高,绝大多数用户不

能接受;而且它又不能与已有的系统兼容,使得

在其上的软件开发相当困难,软件开发商也很难接

受!

因此,设计产品的出发点应该是用户和用户的需求。

为什么人们开发一个软件系统会比建

造一座摩天大厦要难得多?

软件行业缺乏准确又统一的语言来定义或描述相应

的工作,真正的“需求”实际上存在于人们的头脑

中;

软件开发过程难以用一种工程化的方法来统一规范

和有效实施。

因此“需求”这个名词的定义不仅仅是从用户角度对系

统外部行为的描述,以及从开发人员角度对系统内

部特性的描述,其关键的一点是”需求“必须文档化。

数据流图

数据字典

*一

象化

抽G

模型

A导

.

例化

1)系统流程图

是用来概括描述系统物理模型的一种传统工具。

•基本思想是用图形符号以黑盒子的形式描绘系

统里的每个部件(程序、文件、数据库、表格、

人工过程等)。

•系统流程图表达信息在系统各部件之间流动的

情况,而不是对数据进行加工处理的控制过程,

所以是物理数据流图而不是程序流程图。

库存清单系统流程图

♦一个存放零件的仓库,

仓库中现有多种零件及事务;

零件的数量等项数据。,

库存清单程序小库监单

。需加工的数据是每当仓—丁一主文件

库中的零件数量发生变,

化时,就应该及时修改

库存清单

。若此零件的库存量少于报告生成程序

它的库存临界值,则应

该报告各采购部门以便定货报告

定货,规定每天向采购

部门送一次定货报告。结束

结构化分析的分析模型

2)数据流图

数据流图(DFD)描绘信息系统的逻辑模型。

没有任何具体的物理元素,描绘信息流和数据从输入

移动到输出的过程所经受的变换,即在系统中流动

和被处理的逻辑过程.

巡标幽用来概括摊那彝表示,

/.

薨国翼跳做#W四前榭幽稠螂闹碗

椒碟调硼色鹿揖标酹颈

脚I翳不需要考虑如何具体实现这些功能,是今

后进行软件设计很好的出发点。

数据流图中的基本符号

0)数据转换—转换数据的处理过程

II外部实体-----数据的源点/终点,位于软件

1—1系统边界之外的信息生产者或消费者

---"数据流-----在转换之间有向流动的数据

项或数据集合

2kL数据存储-----可以是数据库文件或任何形式的数

据组织。箭头向内则表示写入文件

或查询文件,箭头向外则表示从文

件中读取数据或得到查询结果

数据流图的层次结构

。为了表达复杂的实际问题,需要采用层次结

构的数据流图,即按照问题的层次结构进行逐

步分解,并以分层的数据流图反映这种结构

关系,能清楚地表达和容易理解整个系统.

。做法:系统的基本模型(把整个系统看成一

个加工点)一逐层地对系统进行分解,系统

的加工数量就会增多f所有的加工都足够简

单,不必再分解为止-“基本加工”O

3)实体■联系图

。从用户角度描绘了系统的数据对象及对象关

4)状态转换图

❖描述状态以及导致系统改变状态的事件来表

示系统的行为,此外还指明了作为特定事件

的结果系统将做哪些动作(如处理数据)。

它对于实时系统和控制系统尤为重要。

状态1||状态2_

邂一…iij矍表达式:瑛菽侬里0

、活动表岛,转换活动表2,

二例

学生成绩管理系统

。某校准备开发一个学生成绩管理系统。在该

系统中,教务人员录入学生信息、课程信息

和成绩信息,学生可以随时查询自己所选课

程的成绩。由于学生成绩属于敏感信息,系

统必须提供必要的安全措施以防非法存取。

1)创建实体关系图

,实体:学生、课程、成绩。

实体属性定义:

学生:学号、姓名、性别、出生日期、入学年月

课程:课程编号、课程名称、课程学分、课程描述

成绩:学号、课程编号、分数、考核日期

实体关系图:

2)创建数据流模型

。第0层DFD图

教务人员维护学生信息和课程信息,并登录

学生的选课成绩;

学生查询自己的成绩单。

1层DFD图:

A学生

课程信息

教务人员A课程

成绩

成绩

查询请求

学生

查询结果

第2层DFD图:对第1层DFD图中的一个加工,,查

询学生成绩”进行展开。一'

工一■查询

生L请求V合*'性%----------学生

\

查询条件\\

查恂结果合法查询条件\课程

\

查询条件V

成绩

数据分量名:学号

唯一标识学生

数据字典描述:

的编号

数据项别名:无

学生

名:类型:字符串

描述:包括学生的主要信息长度:6位字符

别名:无其他说明:学号不能重复

学号+姓名+性别+

定义:数据流名:学生成绩查询

出生日期+入学年月

数据量:10000左右描述:系统处理的一个命令

随时,但经常在新生别名:无

峰值:

入学时期频率:10000次左右

其他说在系统功能扩充时可随时,但经常在学期

峰值:

明:能增加定义项开学

在系统功能扩充时可

其他说明:

能增加种类

3)创建行为模型

♦:♦学生成绩信息需要采取安全措施,采取登录方法避

免非法使用系统。

第3篇软件开发

总体设计

。详细设计

♦编码和单元测试

。综合测试

信息描述

数据设计

——软件开发阶段的信息流

软件设计是后续开发步骤及软件维护工作的基础。

如果没有设计,只能建立一个不稳定的系统结构

有软件设计没有软件设计

从技术和管理的角度看设计的关系

/详细设计

’数据设计~

技术观点,系统结构设计,

过程设计

3.1总体设计

总体设计通常由两个阶段组成:

。系统设计阶段确定系统的具体实现方案,划I

分出组成系统的物理元素一程序、文件、数

据库、人工过程和文档等.

。结构设计阶段确定软件的结构一确定系统中)

每个程序由哪些模块组成以及这些模块相互

间的关系。;

.

确定物理实现方案

1)联机接收事务并存储,批量方式更新库存

清单、处理定货和产生报表

J2)联机接收事务、更新库存清单和处理定货及输

出定货信息,以批量方式产生报表

--

D自

/#单1

z清1T

T111产

>事

1.2一

务采购

单员

清1

I货

71-

I息

=单==r

Dr2订货信息

面向数据流的设计方法

目标:是给出设计软件结构的一个系统化的途径。

结构化设计方法(SD-StructuredDesign)

目标系统的DFDSD.目标系统的SC

SQ图™StructuredChart

该图常用来表示系统的软件结构。利

用它可以清楚地表达软件结构中模块间的

层次调用关系和模块之间的联系。

2实例:.某学校的学生“选课”系统:具有明显变换流特征的数据

流程图。首先登录到系统,输入密码,经过验证合格后,即可进

行选课处理。先查询相关课程信息,再进行选课登记,选课完成

后,显示所选课程表,并打印输出课表

3.2详细设计

详细设计的目标

(1)逻辑上正确实现每个模块的功能。

(2)设计出的处理过程应该尽可能简明易懂。

采用结构化程序设计方法,改善控制结构,降

低程序复杂度,提高程序的可读性、可测试性

和可维护性。

1)过程设计的工具

程序流程图

盒图

PAD图

判定表

判定树

过程设计语言

2)面向数据结构的设计方法

*数据结构既影响程序的结构又影响程序的处

理过程。)

〃面向数据结构设计方法的最终目标是得出对I

程序处理过程的描述。适合于在详细设计阶

段设计每个模块的处理过程。I

:♦首先需要分析确定数据结构,并用适当的工

具清晰地描绘数据结构。

改进的Jackson图

标识循环条件和分支条件

。框间连线改为直线

(a)顺序结构(b)可选结构(c)选择结构(d)重复结构

改进的Jackson图

J习

考生基本情况文件中的考生记录的内容包括:

准考证号、姓名、通讯地址。

考分文件中的考生记录的内容包括:准考证I

号和各门考分。I

要求高考后将两文件合并成一个新文件(简;

称考生新文件),内容包括:准考证号、姓名、

通讯地址和各门考分。

第一步数据结构表示

对问题进行分析,确定输入数据和输出数据的

逻辑结构,并用Jackson图描述这些数据结构。

(a)输入数据结构(b)输出数据结构

第二步找出输入和输出数据结构的对应关系

有直接因果关系、在程序中可以同时处理的数

据单元称为有对应关系。注:重复的数据单元必须

是重复的次序、次数都相同才可能有对应关系。

第三步确定程序结构图

实际上,这一步是一个综合的过程:每对有对应关系的

数据单元合画一个处理框,没有对应关系的数据单元则各画

一个处理框。\

产生新文件

处理考生记录*

产生准考证号产生姓名产生通讯地址产生考分

第四步列出并分配所有操作和条件

列出所有操作和条件(包括分支条件和循环结束条件),

并把它们分配到程序结构图的适当位置。

操作:(1)停止

(2)打开两个输入文件;

(3)建立输出文件。

(4)从输入文件中各读一条记录

(5)生成一条新记录。

(6)将新记录写入输出文件。

(7)关闭全部文件。

条件:I(1)文件结束。

把操作和条件分配到程序结构图的适当位置

第五步用伪码表示程序

用Jackson伪码描述的程序:

产生新文件seq产生考分

打开两个输入文件生成一条新记录

从输入文件中各读一条记录将新记录写入输出文件

分析考生记录iter从输入文件中各读一条记录

until文件结束处理考生记录end

处理考生记录seq关闭全部文件

产生准考证号停止

产生姓名产生新文件end

产生通讯地址

3)人机界面设计

”人机界面设计是接口设计的一个重要

的组成部分。在个别系统中人机界面的

设计工作量甚至占总设计量的一半以上。

人机界面的设计质量,直接影响用户

对软件产品的评价,从而影响软件产品

的竞争力和寿命,因此,必须对人机界

面设计给予足够重视。

界面设计是否存在问题?

Windows2000操作系统关机窗口

♦♦..---

WindowsXP操作系统关机窗口

3.3实现

脑常把编码和测试统称为实现。

编码:把软件设计结果翻译成用某种程序设计语言书写

的程序。I

软件测试在软件生命周期中横跨两个阶段:I

单元测试:在编写出每个模块之后就对它做必要的测I

试,模块的编写者和测试者是同一个人,编码和单I

元测试属于软件生命周期的同一个阶段。I

♦:♦综合测试:对软件系统进行各种综合测试,这是软件:

生命周期中的另一个独立的阶段,通常由专门的测

试人员承担这项工作。

;1)编码风格

。程序实际上也是一种供人阅读的文

章,要求逻辑简明清晰易读易懂。

应该使程序遵循下述规则。

9程序内部的文档

i数据说明

f语句结构

9输入/输出方法

9效率

例如,

rADDAMOUNTTOTOTAL7

TOTAL=AMOUNT,TOTALS好。

。如果注明把月销售额计入年度总额,便

使读者理解了下面语句的意图:

rADDMONTHLY-SALESTO

ANNUAL-TOTAL7

TOTAL=AMOUNT,TOTAL

要点.

《描述一段程序,而不是每一个语句;

《用缩进和空行,使程序与注释容易区别;

s注正确___________________

♦:♦尽量减少使用“否定”条件的条件语句。

例如,如果在程序中出现

if(!(char<||char>9))

改成if(char>='O'&&char<='9')

避免大量使用循环嵌套和条件嵌套;

♦:♦利用括号使逻辑表达式或算术表达式的

运算次序清晰直观。

2)测试步骤

大型软件系统通常由若干个子系统组成,每个子系

统又由许多模块组成,因此,大型软件系统的测试

过程基本上由下述几个步骤组成:(

1,模块测试)

把每个模块作为一个单独的实体来测试。目的是保

证每个模块作为一个单元能正确运行,所以模块测

试通常又称为单元测试。在这个测试步骤中所发现

的往往是编码和详细设计的错误。,

2,子系统测试

把经过单元测试的模块放在一起形成一个子系统来

测试。模块相互间的协调和通信是这个测试过程中

的主要问题,因此,这个步骤着重测试模块的接口。j

3.系统测试

系统测试是把经过测试的子系统装配成一个完整的

系统来测试。在这个测试步骤中发现的往往是软件

设计中的错误,也可能发现需求说明中的错误。

不论是子系统测试还是系统测试,都兼有检测

和组装两重含义,通常称为集成测试。

4.验收测试

测试内容与系统测试基本类似,但它在用户参与下

进行,而且主要使用实际数据(系统将来要处理的信

息)进行测试。目的是验证系统确实能够满足用户的

需要,在这个测试步骤中发现的往往是系统需求说

明书中的错误。验收测试也称为确认测试。

案例

。第一次海湾战争,美国爱国者导弹防御系统

首次被应用于对抗伊拉克的飞毛腿导弹,但

其中一枚在沙特阿拉伯的多哈爆炸,造成2

名美国士兵死亡。

。原因:导弹的软件包含一个累加计时故障。

当系统时钟累计运行超过14个小时后,跟踪

系统不能准确运行,在多哈袭击战争中,爱

国者的累计运行时间已经超过了100小时。

案例

》94年圣诞前夕,美国迪斯尼公司发布

T第一款面向儿童的多媒体光盘游戏

“狮子王童话”

*没有对当时市场上的各种pc机型进行

完整的系统兼容性测试,只能在少数

pc上定常运行

3)测试方法

任何产品都可以使用以下两种方法进行测试:

(1)如果已知产品的功能,则可以对它的每

一个功能进行测试,看是否都达到了预期的要求;

(2)如果已知产品的内部工作过程,则可以

对它的每种内部操作进行测试,看是否按照规格

说明书的规定正常进行。

第一种方法是黑盒测试,第二种方法是白盒

测试。

设计测试方案是测试阶段的关键技术问题。

1

具体的测试目的(如,预定要测试的具体功能)

测试方案,应输入的测试数据

测试用例

、预期的结果

为用有限的测试发现更多的错误,需精心设

计测试用例。其中最困难的问题是设计测试

用的输入数据:

不同的测试数据发现程序错误的能力差

别很大,为了提高测试效率降低测试成本,

应该选用高效的测试数据。

例如:一程序两个输入数据为32位

二进制数,则可能的输入为多少?

❖232*232=264=10192

♦:♦若每微秒可进行一次测试,则每秒可

进行个测试,每年:

106106

*60*60*24*365=3.139*1013;

“所有可能输入进行测试所需时间:.

❖1019.2/3.139*1013>105年

程序插桩技术

想要了解一个程序在某次运行中所有可执行语句

被覆盖的情况,或是每个语句的实际执行次数,

最好的办法是利用插桩技术。这里仅以计算整数

X和整数Y的最大公约数程序为例,说明插桩方法

的要点。图3・1给出了这一程序的流程图。

❖设计插桩程序时需要考虑的问题包括:1

①探测哪些信息;I

②在程序的什么部位设置探测点;flI

③需要设置多少个探测点;

④程序特定部位插入某些用以判断变量特性的语句。I)

3

1

C(5)=C(5)+1C(6)=C(6)+1流

Q=QRR=R-Q

等价划分法

所谓等价划分,就是把输入数据的可能值

划分为若干等价类(等价类是指某个输入域的子

集合。在该集合中,各个输入数据对于揭露程

序中的错误都是等价的)。

在每一个等价类中取一个数据作为测试的

输入条件,这样就可以少量的代表性测试数据,

来取得较好的测试结果。

有效等价类

是指对于程序的规格说明来说,是合理的

有意义的输入数据构成的集合。利用它可以检

验程序是否实现预先规定的功能和性能。

无效等价类

是指对于程序的规格说明来说,是不合理

的,是无意义的输入数据构成的集合。主要利

用这一类测试用例来检查程序中功能和性能的实

现是否不符合规格说明要求。

金山词霸出现的错误

金山词霸2003和金山快译2003正式在全国各

地上市后,很多用户强烈批评这两款软件在

某些词语翻译上的错误|

♦:♦当词霸的安装路径不按默认路径,或者用户I

使用其他以英文命名的目录路径进行安装时,

系统就会出现安装完成后无法取词和无法解

释等多类错误,以致金山公司在正式版发布

几天之后不得不发布补丁。

4)调试过程

调试过程从执行一个测试用例开始,评估测

5)软件可靠性

,估算平均无故障时间

经验表明,平均无故障时间与单位长度程序中剩余

的错误数成反比,即

MTTF=1/[K(ET/IT-EC(T)/IT)](7.5)

其中K为常数,它的值应该根据经验选取。美国的

一些统计数字表明,K的典型值是200。

估算平均无故障时间的公式,可以评价软件测试的

进展情况。此外,由(7.5)式可得

EC=ET-IT/(KXMTTF)(7.6)

因此,也可以根据对软件平均无故障时间的要求,

估计需要改正多少个错误之后,测试工作才能结束。

估计错误总数ET的方法

(1)植入错误法

测试前在程序中随机地植入一些错误,测试之]

后根据测试小组发现的错误中原有的和植入的两种

错误的比例,来估计原有错误的总数|

假定测试方案发现植入错误和发现原有错误的能力

相同,则能够估计出程序中原有错误的总数为

A

N=n/nsXNs)

义为植入的错误数,经过一段时间的测试之后发现

八个植入错误和n个原有错误。

((2)分别测试法

随机地把程序中一部分原有的错误加上标记,

然后根据测试过程中发现的有标记错误和无标记错

误的比例,估计程序中的错误总数。

分别测试法使用两个测试员(或测试小组),彼

此独立地测试同一个程序的两个副本,把其中一个

测试员发现的错误作为有标记的错误,由另一名分

析员分析他们的测试结果。用T表示测试时间,假设

T=o时错误总数为B。;

T=Ti时测试员甲发现的错误数为Bi;

T=一时测试员乙发现的错误数为B2;

Tf时两个测试员发现的相同错误数为

则:A

B0=B2/bcB1

第4篇软件维护

♦改正性维护

。适应性维护

。完善性维护

♦:♦预防性维护

维护在软件生四类维护占

存期所占比例总维护比例

改正性维护

♦:♦在软件交付使用后,因开发时测试的不

彻底、不完全,必然会有部分隐藏的错

‘误遗留到运行阶段。!

。这些隐藏下来的错误在某些特定的使用I

环境下就会暴露出来。I

。为了识别和纠正软件错误、改正软件性/

能上的缺陷、排除实施中的误使用,应

当进行的诊断和改正错误的过程就叫做

改正桂筵护。(

适应性维护

❖在使用过程中,

i外部环境(新的硬、软件配置)

f数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论