交通软件系统分析与设计201603_第1页
交通软件系统分析与设计201603_第2页
交通软件系统分析与设计201603_第3页
交通软件系统分析与设计201603_第4页
交通软件系统分析与设计201603_第5页
已阅读5页,还剩163页未读 继续免费阅读

下载本文档

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

文档简介

交通软件系统分析与设计李志慧E_mail:lizhih@电话考教材张海藩编著,《软件工程导论》,清华大学出版社郑人杰编,《实用软件工程》,清华大学出版社,1997年《数据结构》,严蔚敏等编著,清华大学出版社数据结构,殷人坤,清华大学出版社第一章绪论交通软件系统分析与设计关注的问题:1、

软件系统开发过程

2、

数据结构+算法

数据结构:相互之间存在一种或多种特点关系的数据元素的结合。由某一数据对象及该对象中所有数据成员之间的关系组成,表示为

data_structure={D,R}数据结构线性表

栈和队列

数组和广义表

二叉树

树和森林

算法查找排序算法评价:空间复杂度

时间复杂度

生命周期各阶段的任务(1)问题定义

问题定义阶段必须回答的关键问题是:”要解决的问题是什么?”通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。(2)可行性研究该阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”

可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据。

(3)需求分析该阶段的任务不是具体地解决问题,而是准确地确定“为下解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。

(4)总体设计该阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?生命周期各阶段的任务(5)详细设计

总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”(6)编码和单元测试

该阶段的关键任务是写出正确的容易理解、容易维护的程序模块。(7)综合测试该阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。(8)软件维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

结构分析过程小节阶段关键问题结束标准问题定义问题是什么关于规模和目标的报告书可行性研究有可行的解吗?系统的高层逻辑模型:数据流图、成本/效益分析需求分析系统必须做什么?系统的逻辑模型:数据流因、数据字典、算法描述总体设计概括地说,应该如何解决这个问题?可能的解法:系统硫程图、成本/效益分析推荐的系统结构:层次图或结构图详细设计怎样具体地实现这个系统?编码规格说明:

HIPO图或PDL编码和单元测试正确的程序模块源程序清单‘单元测试方案和结果综合测试符合要求的软件综合测试方案和结果;完整一致的软件配置维护持久地满足用户需要的软件完整准确的维护记录软件生存期模型软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架瀑布模型螺旋模型喷泉模型智能模型瀑布模型瀑布模型特点:(1)为一个整体开发模型(2)开发前可完整、准确地定义系统各个阶段

适用条件:

适用开发,如:编译系统,数据库系统于功能和性能明确、完整、无重大变化地软件等螺旋模型螺旋模型(原型开发模型)特点:(1)降低软件开发风险(2)按照软件的演化规律进行开发

(3)开发初期不要求开发人员准确、无二义了解系统适用:适用与复杂系统的开发或系统目标不明确的情况喷泉模型喷泉模型

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型它以面向对象的软件开发方法为基础,以用户需求作为喷泉模型的源泉。特点(1)喷泉模型规定软件开发过程有4个阶段,即分析、系统设计、软件设计和实现(2)喷泉模型的各阶段相互重叠,它反映了软件过程并行性的特点。(3)喷泉模型以分析为基础,资源消耗呈塔型,在分析阶段消耗的资源最多‘(4)喷泉模型反映了软件过程迭代的自然特性,从高层返回低层无资源消耗软件开发方法结构化方法结构化方法由结构化分析、结构化设计和结构化程序设计构成,它是一种面向数据流的开发方法Jackson方法一种面向数据结构的开发方法维也纳开发方法一种形式化的开发方法,软件的需求用严格的形式语言描述,把描述模型逐步变换成目标系统面向对象的开发方法面向对象开发方法包括面向对象分析(OOA)、面向对象设计(OOD)和面向对象实现。

其包括Booch、Coad、OMT方法统一建模语言UML第二章可行性分析可行性分析的任务

1)“问题是否可行?”2)目的:可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。3)首先需要进一步分析和澄清问题定义。在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述三方面研究每种解法的可行性:(1)技术可行性

使用现有的技术能实现这个系统吗?(2)经济可行性

这个系统的经济效益能超过它的开发成本吗?(3)操作可行性

系统的操作方式在这个用户组织内行得通吗?可行性研究的步骤

(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)重新定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查

系统流程图

系统流程图的作用:系统流程图是描述物理系统的工具。所谓物理系统,就是一个具体实现的系统,也就是描述一个单位、组织的信息处理的具体实现的系统。在进行可行性研究过程中,要以概括的形式描述现有系统的高层逻辑模型,并通过概要的设计变成所建议系统的物理模型,可以用系统流程图来描述所建议系统的物理模型。系统流程图可用图形符号来表示系统中的各个元素,表达了系统中各个元素之间的信息流动的情况画系统流程图时,首先要搞清业务处理过程以及处理中的各个元素,同时要理解系统的流程图的各个符号的含义,选择相应的符号来代表系统中的各个元素。所画的系统流程图要反映出系统的处理流程。系统流程图的符号系统流程图的符号例子某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果那种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。该装配厂使用一台小型计算机处理更新库存清单主文件和产生定货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告分层面对复杂的系统时,一个比较好的方法是分层次地描绘这个系统。首先用一张高层次的系统流程图描绘系统总体格朗,表明系统的关键功能。然后分别把每个关键功能扩展到适当的详细程度,面在单独的一页纸上。这种分层次的描绘方法便于阅读者按从抽象到具体的过程逐步深入地了解一个复杂的系统。系统流程图与程序流程图系统流程图表达的是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程,因此尽管系统流程图使用的某些符号和程序流程图中用的符号相同,但是它却是物理数据流因而不是程序流程图。

数据流图

数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。符号例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务、通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。数据流图有四种成分:源点或终点,处理,数据存储和数据流。分析方法:数据字典

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元柬的定义的集合。数据流图和数据字典共同构成系统的逻辑模型—般说来,数据字典由四类元素组成:

1)数据流

2)数据流分量(即,数据元素)3)数据存储

4)处理。数据处理工具(如IPO图或PDL)描述成本/效益分析

第三章需要分析需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的任务是对目标系统提出完整、准确、清晰、具体的要求。可行性研究阶段产生的文档,持别是数据流图,是需求分折的出发点。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。因此,必须用行之有效的方法对软件需求进行严格的审查验证。需求分析的任务

1、确定对系统的综合要求

1)系统功能要求

2)系统性能要求

3)运行要求

4)将来可能提出的要求

2、分析系统的数据要求

数据结构表示数据元素之间的逻辑关系

3、导出系统的逻辑模型

导出系统的详细的逻辑模型,通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。

4、修正系统开发计划

5、开发原型系统需求分析的特点

1、问题的复杂性。

2、交流障碍

3、不完备性和不一致性

4、需求易变性需求分析的原则

1、必须能够表达相理解问题的数据域和功能域。

2、可以把一个复杂问题按功能进行分解并可逐层细化3、建模需求分析的方法1、功能分解方法2、结构化分析方法3、信息建模方法4、面向对象分析方法需求说明书的主要内容

(1)前言:说明项目的目的、范围,所用的术语的定义;用到的缩略语和缩写词;资料。

(2)项目概述:产品的描述;产品的功能;用户的特点,一般的约束等。

(3)具体需求:说明每个功能的输入、处理和输出;外部接口需求,包括用户接口、软件接口、硬件接口相通信接口;性能需求;设计约束;共他需求,包括数据库、操作等第二节需求分析过程

分析步骤:1、建立用例关系图2、细化数据流图3、用户复查4、细化数据流图5、修正开发计划6、书写文档7、审查和复审3.3.2用例模型(Usecasemodel)用例图(Usecasediagram)从用户角度描述系统功能,并指出各功能的操作者用例模型描述的是外部执行者(Actor)所理解的系统功能。它描述了待开发系统的功能需求。用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。在UML中,构成用例图的主要元素是用例和执行者及其它们之间的联系。创建用例模型的工作包括:

定义系统、确定执行者和用例、描述用例、定义用例间的关系、确认模型。一、执行者(Actor)执行者是指用户在系统中所扮演的角色。执行者在用例图中是用类似人的图形来表示,但执行者可以是人,也可以是一个外界系统。注意:用例总是由执行者启动的。如何确定执行者:1、谁使用系统的主要功能(主执行者)?2、谁需要从系统获得对日常工作的支持和服务?3、需要谁维护管理系统的日常运行(副执行者)?4、系统需要控制哪些硬件设备?5、系统需要与其它哪些系统交互?6、谁需要使用系统产生的结果(值)?一、执行者5.3.2用例模型供货买饮料取货款客户供货人收银员图5.15自动售货系统回例1二、用例二、用例(usecase)

从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作(功能)。用例有以下特点:用例捕获某些用户可见的需求,实现一个具体的用户目标。用例由执行者激活,并将结果值反馈给执行者。用例必须具有功能上的完整描述。如何确定用例:1、与系统实现有关的主要问题是什么?2、系统需要哪些输入/输出?这些输入/输出从何而来?到哪里去?3、执行者需要系统提供哪些功能?4、执行者是否需要对系统中的信息进行读、创建、修改、删除或存储?二、用例5.3.2用例模型回例15.3.3用例图

图5.16用例图的元素5.3.3用例图用例图描述了系统的功能需求,它是从执行者的角度来理解系统,由“执行者”、“用例”和“用例之间的关系”3类模型元素构成。图中还有另外两种类型的连接,即《使用》和《扩展》关系,是两种不同形式的泛化关系。 用例2用例A用例执行者用例1用例3用例B《使用》《使用》《扩展》(a)(b)(c)《Use》表示一个用例使用另一个用例。《Extend》通过向被扩展的用例添加动作来扩展用例。用例图实例用例图实例图5.18应用生命周期用例图图5.17金融贸易系统贸易经理风险分析设置边界进行交易交易估价更新帐目《使用》《使用》《扩展》营销人员超越边界评价记帐系统销售人员5.3.4用例图实例应用设计者应用提供者

改变应用运行应用

实现应用<<使用>><<扩展>><<展开>>应用操作者<<实现>>设计应用5.3.4用例图实例例1建立项目与资源管理系统的Usecase图

系统的主要功能是:项目管理,资源管理和系统管理。项目管理包括项目的增加、删除、更新。资源管理包括对资源和技能的添加、删除和更新。系统管理包括系统的启动和关闭,数据的存储和备份等功能。1、分析确定系统的执行者(角色)到确定到确定

项目管理员、资源管理员、系统管理员、备份数据系统。项目管理,资源管理和系统管理。2、确定用例3、对用例进行分解,画出下层的Usecase图

对上层的用例进行分解,并将执行者分配到各层次的Usecase图中。角色:角色职责:角色职责识别:图5.19角色描述模板

还应画出相应的执行者描述模板及用例描述模板。例1项目与资源管理系统(PRMS)添加技能删除技能更新技能资源管理员添加资源删除资源更新资源查找技能《Use》查找资源《Use》《Use》《Use》把技能指定给资源从资源中清除技能《Extend》《Extend》5.21资源管理UseCase图UseCase图可以自顶而下不断精化,抽象出不同层次的UseCase图。5.3.4用例图实例系统管理员项目管理员资源管理员资源管理项目管理系统管理备份系统图5.20PRMS高层UseCase图例1项目与资源管理系统(PRMS)项目管理员添加项目删除项目更新项目添加活动删除活动更新活动查找项目《Use》添加任务《Use》把技能指定给资源从资源中清除技能《Extend》《Extend》删除任务更新任务《Extend》《Extend》《Extend》《Extend》《Extend》《Extend》图5.22项目管理UseCase图5.3.4用例图实例系统管理员图5.23系统管理UseCase图添加技能存储数据启动系统关闭系统查找技能《Use》《Use》《Use》备份资源数据备份项目数据《Extend》《Extend》《Use》备份数据备份系统

现有一医院病房监护系统,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历,当病症出现异常时,系统会立即自动报警,并实时打印病人的病情报告,立及更新病历。要求根据现场情景,对医院病房监护系统进行需求分析,建立系统的Usecasemodel。

请对系统需求进行分析!经过初步的需求分析,得到系统功能要求:1、监视病员的病症(血压、体温、脉搏等)2、定时更新病历3、病员出现异常情况时报警。4、随机地产生某一病员的病情报告。

例2医院病房监护系统产生病情报告监视病情更新病历情景教学二、简单的需求分析说明

系统名称:医院病房监护系统根据分析系统主要实现以下功能:

1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。

2、中央监护系统将病人的病症信号开解后与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。

3、当病症信号异常时,系统自动更新病历并打印病情报告。

4、值班护士可以查看病情报告并进行打印。

5、医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。

6、系统定期自动更新病历。退出上页首页下页末页需求分析三、用UML的静态建模机制定义并描述系统的静态结构

(一)建立系统的用例图

1、通过以下六个问题识别角色

(1)谁使用系统的主要功能?

(2)谁需要系统的支持以完成日常工作任务?

(3)谁负责维护,管理并保持系统正常运行?

(4)系统需要应付(或处理)哪些硬设备?

(5)系统需要和哪些外部系统交互?

(6)谁(或什么)对系统运行产生的结果(值)感兴趣?需求分析

通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。角色描述模板角色:病人角色职责:提供病症信号角色职责识别:负责生成、实时提供各种病症信号。角色:值班护士角色职责:负责监视病人的病情变化角色职责识别:

(1)使用系统主要功能

(2)对系统运行结果感兴趣角色:标准病症信号库角色职责:负责向系统提供病症信号的正常值角色职责识别:

(1)负责保持系统正常运行

(2)与系统交互角色:医生角色职责:对病人负责,负责处理病情的变化角色职责识别:

(1)需要系统支持以完成其日常工作

(2)对系统运行结果感兴趣通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:角色描述

通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:提供标准病症信号病历管理病人标准病症信号库

医生值班护士病症监护病情报告管理中央监护《使用》《使用》《使用》角色描述将用例细化,可以得到分解的用例:1、中央监护

分解为:a分解信号将从病症监护器传送来的组合病症信号分解为系统可以处理的信号。

b比较信号将病人的病症信号与标准信号比较。

c报警如果病症信号发生异常(即高于峰值),发出报警信号。

d数据格式化将处理后的数据格式化以便写入病历库。2、病症监护

分解为:e信号采集采集病人的病症信号。

f模数转化将采集来的模拟信号转化为数字信号。

g信号数据组合将采集到的脉搏,血压等信号数据组合为一组信号数据。

h采样频率改变根据病人的情况改变监视器采样频率。3、提供标准病症信号

i(此用例不分解)用例细化4、病历管理

分解为:j生成病历

k查看病历

l更新病历

m打印病历

5、病情报告

分解为:n显示病情报告

在显示器上显示病情

o打印病情报告在打印机打印病情报告用例细化给出细化的用例图病人模数转化数据格式化值班护士报警信号采集比较信号标准病症信号库

医生信号数据组合采样频率改变提供标准病症信号生成病历查看病历更新病历打印病历显示病情报告打印病情报告分解信号《Extend》《Extend》《Extend》《use》《use》《use》《use》《use》《use》《use》《use》细化的用例图第三节概念模型和规范化

用户的数据要求----需要哪些数据,数据之间有哪些联系,数据本身有哪些性质,数据的结构等)。用户的处理要求---对数据进行哪些处理,每个处理的逻辑功能。

概念性模型(信息模型)---一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。表示概念性数据模型的最常用方法是实体-联系方法,采用用ER图的方式,这种表示又称为ER模型。ER模型

实体:客观世界中存在的且可区分的事物。联系:客观事物之间的联系(三类--1:1,1:N,M:N)属性:实体或联系所具有的性质。教师姓名性别职称职务教师号教1课程N课程号课名学时学分学M学生N学号姓名性别系年级成绩

范式通常用范式定义消除数据的冗余度(略)ER关系图与数据库映射关系描述关系数据库数据以2维表的形式进行表示,每个表的列表示字段、行表示数据库表的一个记录

Primarykey(主键):字段的唯一标识Foreignkey(外键):其它表的主键在该表的参考SQL(结构化查询语言):可以进行数据库表记录的操作.SQL语言基础1、创建数据库CREATEDATABASEdatabase-name

2、删除数据库dropdatabasedbname

3、创建新表createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

4、删除新表droptabletabname

5、添加主键:Altertabletabnameaddprimarykey(col)

删除主键:Altertabletabnamedropprimarykey(col)

6、创建索引:create[unique]indexidxnameontabname(col….)

删除索引:dropindexidxname

SQL语言基础7、创建视图:createviewviewnameasselectstatement

删除视图:dropviewviewname

8、选择:select*fromtable1where范围

插入:insertintotable1(field1,field2)values(value1,value2)

删除:deletefromtable1where范围

更新:updatetable1setfield1=value1where范围

E-R与数据库映射E-R模型映射为数据库表:属性的映射每个实体映射为一个表实体的每个属性映射为一个字段每个实体的个体映射为数据库的一个记录N:M关系映射为一个单独的表1:N关系利用外键进行映射例子:E-R关系模型与数据库表的映射ICitycityNameAirportairportCodeairportName**ServescityNameHoustonAlbanyMunichHamburgCityTablecityNameHoustonHoustonAlbanyMunichHamburgServesTableairportCodeIAHHOUALBMUCHAMAirportTableairportCodeIAHHOUALBMUCHAMairportNameIntercontinentalHobbyAlbanyCountyMunichAirportHamburgAirportPrimaryKey

N:M(多对多关系):将关系映射为单个表SeparateTable例子:E-R关系模型与数据库表的映射II

会议transactionID职员portfolioID...NportfolioID...PortfolioTabletransactionIDTransactionTableportfolioIDForeignKey1:N或N:1关系:隐藏外键的处理1例子:E-R关系模型与数据库表的映射Ⅲ

doordoorIDskyskyID...*doorIDTransactionTabledoorID1-To-1关系门与钥匙关系

习题给出E_R的数据库设计教师姓名性别职称职务教师号教1课程N课程号课名学时学分学M学生N学号姓名性别系年级E_R与数据结构映射关系数据元素四种基本结构:

(1)集合结构(2)线性结构

(3)树状结构(4)图状结构

应用举例线性表、树、图数据内存的存储顺序存储结构、链式存储问题数据结构的核心:(1)关注数据元素在计算机内存的存储问题;(2)根据数据关系,利用数据基本操作来描述与表达算法数据结构基本形式线性表:n个数据元素的有限序列如:树:n个节点的有限集图C语言描述C语言描述Typedefstruct{数据类型属性1;数据类型属性2;

数据类型属性n;}structname;如:typedefstruct{Inti;chars;}Course;Coursetraffic[100],*signal,;线性表顺序存储:

数组描述链式存储:指针动态分配如线性表的元素若将上例改为合并为一个新的非递减的集合,则算法为线性链表循环链表双向链表栈:先进后出链栈链栈解决内存空间预分配不足问题如何出栈和入栈??队列:先进先出第四节.图形工具

层次方框图:用树形结构的一系列多层次的矩形框描绘数据的层次结构。

产品

硬件

软件

服务

处理机

存储器外部设备系统软件应用软件软件服务硬件维修培训操作系统编译程序软件工具层次方框图的一个例子

注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构4.图形工具(续)

Warnier图:用树形结构描绘数据的层次结构。软件产品系统软件操作系统(P1)编译程序(P2)软件工具编辑程序(P3)测试驱动程序(P4)设计辅助程序(P5)应用软件⊕5.验证软件需求

从哪几个方面验证软件需求的正确性(四个方面)一致性:任何一条需求不能和其他需求互相矛盾。完整性:规格说明书应该包括用户需要的每一个功能和性能。现实性:指定的需求是用现有的硬件、软件技术可以实现的。有效性:需求是正确有效的,确实能解决用户面对的问题。

验证软件需求的方法一致性:人工审查---》形式化描述软件需求,软件工具自动验证。现实性:参考以往的开发经验,分析,仿真或模拟完整性和一致性:原型系统第四章总体设计总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。总体设计又称为概要设计或初步设计,其任务:(1)划分出组成系统的物理元素----程序、文件、数据库、人工过程和文档通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。(2)总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。1总体设计的过程(两个主要阶段):

系统设计:确定系统的具体实现方案。结构设计:确定软件结构。设想供选择的方案选取合理的方案推荐最佳方案功能分解设计软件结构数据库设计制订测试计划书写文档数据流图

系统流程图组成系统的物理元素清单成本/效益分析实现系统的进度计划

系统说明用户手册测试计划详细的实现计划数据库设计结果审查和复审2软件设计的概念和原理模块是数据说明、可执行语句等程序对象的说明。

(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模块数目成本/模块接口成本最小成本区

(2)抽象(3)信息隐蔽和局部化

信息隐蔽原理指出:使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。模块化和软件成本耦合:一个软件结构内不同模块之间互连程度的度量,耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。数据耦合:模块之间通过参数交换数据信息。控制耦合:模块之间传递的参数含有控制信息。公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。内容耦合:如果出现下列情况之一,两个模块间就发生了内容耦(1)一个模块访问另一个模块的内部数据;2)一个模块不通过正常入口而转到另一个模块的内部;3)两个模块有一部分程序代码重叠4)一个模块有多个入口。

设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。数据耦合控制耦合公共环境耦合内容耦合低高(4)模块独立----每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果,独立的优点:(1)有效的模块化的软件比较容易开发

(2)独立的模块比较容易测试和维护模块的独立程度两个定性标准度量:内聚和耦合耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。2软件设计的概念和原理

----耦合非直接耦合数据耦合特征耦合控制耦合外部耦合公共耦合内容耦合弱耦合中耦合较强耦合强耦合模块1模块2模块3模块4数据耦合通过简单变量交换数据特征耦合通过数据结构交换数据非直接耦合模块之间没有信息传递模块A模块B模块C模块D模块L模块N全局性数据结构公共耦合Flag=1?S1S2模块1控制耦合模块之间传递的是控制信息TF全局性简单变量外部耦合模块A

模块B内容耦合

访问其它模块的内部数据直接跳到其他模块内部执行2软件设计的概念和原理(续1)内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。(如模板函数)时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。低内聚中内聚高内聚过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个输出数据。顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必须顺序执行。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。模块A模块B模块CS1;S2;模块A模块B模块C模块A模块B模块C模块D2软件设计的概念和原理(续2)

改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇入、扇出都应适当扇入:一个模块的扇人表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多。扇出:扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。模块的作用域应该在控制域之内模块的作用域:为受该模块内一个判定影响的所有模块的集合。模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。力争降低模块接口的复杂程度设计单入口单出口的模块模块的功能应该可以预测3启发式规则4图形工具

层次图和HIPO图层次图用来描述软件结构,层次图+IPO图=HIPO图正文加工系统输入输出编辑加标题存储检索编目录格式化添加删除插入修改合并列表

结构图方框之间的箭头表示模块的调用关系,带注释的箭头表示模块间来回传递的信息:空心圆—数据,实心圆—控制信息。结构图还可以表示模块的选择调用或循环调用参见:P645面向数据流的设计方法1)变换流2)事务流3)设计过程时间输入流输出流变换流外部表示内部表示信息变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些持征时,这种信息流就叫作变换流。这种数据流是“以事务为中心的”.也就是说,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。事务T事务中心活动通路事务中心T完成下述任务:接受输入数据(事务)分析每个事务以确定它的类型根据事务类型选取一条活动通路变换流与事务流三要素变换流三要素输入、输出、变换中心

事务流三要素事务、事务中心、活动通路5面向数据流的设计方法(续)精化数据流图流类型区分事务中心和数据接收通路映射成事务结构区分输入和输出分支映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析5面向数据流的设计方法(续)

变换分析:汽车数字仪表板功能:

1)通过A/D转换实现传感器和微处理器接口,

2)在发光二极管面板上显示数据,

3)指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。

4)指示加速或减速;

5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。A/D转数计数器流量传感器微处理机里程表车速表油效表油管系统加速/减速指示超速报警5面向数据流的设计方法(续)读旋转信号收集和求平均转换成转/分(rpm)计算里程确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值计算燃料消耗发出铃声产生mph显示产生mpg显示读和校核计算gph旋转信号信号/秒SPS△SPSSPSrpmrpm箭头指示上箭头⊕⊕水平线下箭头英里超速值显示铃声mphmphmpggph燃料流燃料流传感器信号Mpg显示数字仪表板控制接受传感器信号数据转换控制驱动仪表板输入控制变换控制输入控制5面向数据流的设计方法(续)设计步骤:复查基本系统模型复查并精化数据流图确定数据流图具有变换特性还是事务特性确定输入流和输出流的边界,划分变换或事务中心完成“第一级分解”CmCaCtCe第一级分解的方法5面向数据流的设计方法(续)ADBCCmCaCBDA接受传感器信号转换成rpm收集SPS读旋转信号计算gph读燃料流数字仪表板控制确定加/减速计算mph计算gpg计算里程驱动仪表板加速/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示5面向数据流的设计方法(续)数字仪表板控制接受传感器信号转换成rpm读旋转信号计算gph读燃料流数字仪表板控制确定加/减速计算mph计算gpg计算里程驱动仪表板加速/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示数字仪表板软件系统经过调整后的结构图注意:红色模块的位置有所调整5面向数据流的设计方法(续)

事务分析432总控接收通路C通路B通路A通路调度A_CTL142+1321B_CTLC_CTL

设计优化设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。‘数据流图软件结构总体设计说明书的主要内容如下:(1)引言:编写目的,背景,定义,参考资料。(2)总体设计:需求规定,运行环境,基本设计概念和处理流程,结构。(3)接口设计:用户接口,外部接口,内部接口。(4)运行设计:运行模块组合.运行控制,运行时间。(5)系统数据结构设计:逻辑结构设计,物理结构设计,数据结构与程序的关系,(6)系统出错处理设计:出错信息,补救措施.系统恢复设计。第五章详细设计详细设计:过程设计设计方法:结构程序设计结构序设计:一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构详细设计阶段的目标:确定应该怎样具体地实现所要求的系统。精确地描述整个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。详细设计的基本任务1.算法设计用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来2.数据结构设计对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。

3.物理设计对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。

4.其他设计根据软件系统的类型,还可能要进行以下设计:(1)代码设计;为了提高数据的输入、分类、存储及检索等操作的效率空间,对数据库中的某些数据项的值要进行代码设计。(2)输入/输出格式设计。(3)人机对话设计:对于一个实时系统,用户与计算机颠蟹对话,因此要进行对话方式、内容及格式的具体设计。5.编写详细设计说明书详细设计说明书有下列的主要内容:(1)引言:包括编写目的、背景、定义(2)程序系统的组织结构。(3)程序l(标识符)设计说明:(4)程序2(标识符)设计说明。(5)程序N(标识符)设计说明6.评审结构程序设计顺序、选择、循环三种基本结构BexpAABexpAAexpTFTTFF顺序结构选择结构循环结构1)“While”型循环2)Do….Until型循环结构程序设计技术好处:(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律。(2)先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,容易阅读和理解。

(3)不使用GoTo语句仅使用单入口单出口的控制结构.使得程序的静态结构和它的动态执行情况比较一致。

(4)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。习题1.For(inti=0;i<n;i++){A}2.while(i<100){A}3.Do{A}While(i<100)非结构化程序转换方法:1、设置标志位2、变换结构1结构程序设计

经典的结构程序设计:顺序,选择,当型循环扩展的结构程序设计:顺序,选择+多分支,当型循环+直到型循环修正的结构程序设计:顺序,选择+多分支,当型循环+直到型循环,break结构详细设计的工具程序流程图开始或停止准备选择多分支选择注释预先定义的处理,子程序循环下界循环上界处理控制流2详细设计的工具----盒图(N_S图)S1S2S3条件FTElse部分Then部分Case条件值1值2。。。值nCase1部分Case2部分Casen部分循环条件Do-While

部分循环条件Do-Until

部分A特点:1)功能域(既一个特定控制结构的作用域)明确

2)不可能任意转移控制

3)很容易确定局部和全程数据的作用域

4)很容易表现嵌套关系,也可以表示模块的层次结构Nassi&Shneiderman2详细设计的工具----PAD图P1P2P1P2条件CPnP2P1WHILECPUNTILCPdef顺序选择Case型多分支选择当型循环直到型循环语句标号定义2详细设计的工具----PAD图P1P2P3P4CP5P2defP6P3P8CUntilC3UNTILC2P9P10PAD图的主要优点:使用PAD符号设计的程序必然是结构化的程序.PAD图所描绘的程序结构十分清晰.用PAD图表现程序逻辑,易读,易记,易懂.容易将PAD图转换成高级语言源程序.可用软件工具实现自动转换.即可以表示程序逻辑,也可以描绘数据结构.支持自顶向下,逐步求精方法的使用.2详细设计的工具----判定表程序流程图、N-S图、PAD图或过程设计语言(PDL)都不易清楚的描述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系。例子假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时,对头等舱的国内乘客超重部分每公斤收费4元,对其它舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表来表示与上述每种条件组合相对应的动作。所有条件条件组合矩阵与每种条件组合所对应的动作表所有可能的动作列表国内乘客头等舱残疾乘客行李≤30kg免费(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*2TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF×××××××××2详细设计的工具----判定树行李费算法行李重量

W>30国内乘客外国乘客头等舱其它舱残疾乘客----(W-30)*2正常乘客----(W-30)*4残疾乘客----(W-30)*3正常乘客----(W-30)*6头等舱其它舱残疾乘客----(W-30)*4正常乘客----(W-30)*8残疾乘客----(W-30)*6正常乘客----(W-30)*12行李重量

W≤30免费过程设计语言(PDL)PDL应该具有下述特点:

(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的待点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如:if...fi(或endif)等等。

(2)自然语言的自由语法,它描述处理待点。

(3)数据说明的手段。应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。

(4)模块定义和调用的技术,应该提供各种接口描述模式。PDL作为一种设计工具的优点:(1)可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。

(2)可以使用普通的正文编辑程序或文字处理系统,很方便池完成PDL的书写和编辑工作。

(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

PDL的缺点是不如图形工具形象直观,描述复杂的条件组合百动作间的对应关系时,不如判定表清晰简单。Jackson程序设计方法特点:面向数据结构的设计方法,也就是用数据结构作为程序设计的基础方法:首先需要分析确定数据结构,并且用适当的工具清晰地描绘数据结构。Jackson图数据元素彼此间的逻辑关系只有顺序、选择和重复三类顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。Jackson图优点:·便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;·形象直观可渎性好;·既能表示数据结构也能表示程序结构改进的Jackson图Jackson方法Jackson结构程序设计方法基本上由下述五个步骡组成:1.分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

2.找出输入数据结构和输出数据结构中有对应关系的数据单元。

3.用下述三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson:第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框第二,根据输入数据结构中剩余的每个数据单元所处的层次,分别为它们面上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所处的层次,次分别为它们画上对应的处理框。总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。

4.列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。

5.用伪码表示程序。例子:

一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。5详细设计的工具----程序复杂度的定量度量

利用软件设计的基本原理和概念可以定性的衡量软件模块的质量。但定量的度量程序复杂程度的方法很有价值:估算程序中软件故障的数量;估算软件开发的工作量;比较两个不同的设计或两个不同算法的友劣;作为模块规模的精确上限。程序定量度量方法是一个有待进一步研究的重要领域。1)McCabe方法程序图–把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为程序图。程序图仅仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。入口点:程序图中开始点后面的那个节点。出口点:程序图中停止点前面的那个节点。用McCabe方法度量得出的结果称为程序的环形复杂度。程序的环形复杂度=强连通图中线性无关的有向环的个数。5详细设计的工具----程序复杂度的定量度量2)环形复杂度的计算方法在一个强连通的有向图中,线性无关环的个数由以下公式确定:

V(G)=m–n+p

其中:V(G)----有向图G中的环数。

m----有向图G中的弧数。

n----有向图G中的节点数。

p----有向图G中的分离部分的数目。(对于正常的程序,p=1)

一般来说,由于程序图不是强连通的,要直接应用以上结论到程序图中还不行,因此要对程序图进行扩展,从其出口点到入口点增画一条虚弧,则原程序图必然成为强连通图。这样就可以应用以上公式来计算环形复杂度。3)环形复杂度的用途:程序的环形复杂度与程序控制流的复杂程度,也就是与程序结构的复杂程度有关。程序内分支数或循环个数增加时,环形复杂度就增加,因此它是对测试难度的一种度量,也能对软件最终的可靠性给出某种预测。McCabe发现:环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明:模块规模以V(G)≤10为宜。也就是说,V(G)=10是模块规模的一个更科学更精确的上限。5详细设计的工具----程序复杂度的定量度量开始K=0L=0TOTAL=0输入ADowhileTOTAL≤1000andA≠0A>0TOTAL=TOTAL+AK=K+1输入AL=L+1输出K,L,TOTAL停止abcdefghijkabcdefghjikV(G)=13-11+1=313条弧11

个节点1

个独立部分第六章编码程序设计语言:人与计算机通信的基本工具,指挥计算机按人的意志工作。

1946—1954:机器语言和汇编语言,与计算机硬件操作一一对应。

1954:第一个高级语言FORTRAN语言。

高级语言的种类:基础语言----Fortran,Basic,Cobol,Algol

结构化语言----Pl/1,Pascal,C,Ada

专用语言-------特殊应用如LISP,Prolog.

程序设计语言的特点:名字说明:类型说明:初始化:程序对象(语句,存储,过程)的局部性:程序模块:循环控制结构:分支选择结构:异常处理:独立编译:选择程序设计语言的原则:系统用户的要求;可以使用的编译程序;可以使用的软件工具;工程规模;程序员的知识;软件可移植要求;软件的应用领域。在这个阶段的任务是:把软件设计的结果翻译成计算机可以“理解”的形式

—用计算机语言表示的程序。第六章编码(续)程序设计途径写程序的风格程序内部的文档----恰当的意义明确的标识符,注解,程序的视觉组织(语句布局).数据说明----次序标准化,归类化.语句构造----每个语句的构造应该简单、直接和易于理解。一般不要为了节省纸张多个语句写在一行;避免复杂的条件测试;减少对“非”条件的测试;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。输入/输出----效率----程序运行时间、存储器效率、输入和输出的效率。程序设计方法论程序设计自动化----三种途径(用户需求形式化精确定义,组件技术,范型)程序设计工具----编译程序代码管理系统第七章测试基本概念软件测试的目标或定义(G.Myers):1)测试是为了发现程序中的错误而执行程序的过程。

2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

3)成功的测试是发现了至今为止尚未发现的错误的测试。黑盒测试和白盒测试黑盒测试:已经知道了软件产品应该具有的功能,通过测试来检验是否每个功能都能正常使用。这种测试方法又称功能测试。白盒测试:知道软件产品内部的工作过程,通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。这种测试方法又称结构测试。不论是每个功能或每个逻辑控制通路,如果对所有的情况都进行测试,这样的测试成为穷尽测试。穷尽测试在一般情况下是实际不可行的。例一、Sum(inta,intb,intc){return(a+b+c);}假定int类型为16位整数。需要测试216*216*216次。每次1ms,约要1万年循环20次各种组合,约520种例二:白盒测试7.1基本概念(1)软件测试的步骤:模块测试子系统测试系统测试平行运行

目的:保证每个模块作为一个单元能够正确运行,又称为单元测试集成测试、组装测试、联合测试;重点在于测试模块之间的接口;

将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试。同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。验收测试

有用户参加的系统测试;验证是否满足用户的需要。7.1基本概念(2)测试阶段的信息流:测试软件配置测试配置测试结果预期结果评价错误错误率数据调试可靠性模型正确可靠性预测测试与软件开发各个阶段的关系软件开发过程是一个自顶向下,逐步细化的过程软件计划阶段定义软件作用域软件需求分析建立软件信息域、功能和性能需求、约束等软件设计把设计用某种程序设计语言转换成程序代码测试过程是依相反顺序安排的自底向上,逐步集成的过程。包括需求说明书、设计说明书、源程序清单等包括测试计划和测试方案7.1基本概念(3)测试与软件开发各个阶段的关系(示意图)7.2单元测试(1)单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。1.单元测试的内容在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。(1)模块接口测试在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;

模块接口局部数据结构重要的执行通路出错处理通路影响上述各方面特性的边界条件7.2单元测试(2)

在做内外存交换时要考虑:文件属性是否正确;

OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写/输入错误,

I/O错误是否检查并做了处理。

(2)局部数据结构测试不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错不一致的数据类型全局数据对模块的影响(3)路径测试选择适当的测试用例,对模块中重要的执行路径进行测试。应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。对基本执行路径和循环进行测试可以发现大量的路径错误.(4)错误处理测试出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干预等7.2单元测试(3)(5)边界测试注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素2.单元测试的步骤代码审查:组长+程序设计、编写、测试者模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。

驱动模块(driver):调用测试单元的“主程序”,它接受测试数据,把这些数据传送给被测试的模块并打印有关结果。

桩模块(stub)──存根模块:是被测试模块单元所调用模块的代替模块,在模块调用接口、相关数据处理、控制返回等方面对被代替模块进行“模拟”。驱动模块被测模块桩模块桩模块桩模块测试用例测试结果单元测试的测试环境7.3集成测试(1)

集成测试是组装软件的系统技术;组装测试、联合测试通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。子系统的组装测试特别称为部件测试,它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致。通常,把模块组装成为系统的方式有两种一次性组装方式:又称为非渐增式测试;增殖式组装方式:其中又分为自顶向下、自底向上和两种方法混合测试方式。7.3集成测试(2)1.一次性组装方式(bigbang)它是一种非增殖式组装方式。也叫做整体拼装。使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。系统结构图单元测试整体组装7.3集成测试(3)2.增殖式组装方式这种组装方式又称渐增式组装首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统在组装的过程中边连接边测试

温馨提示

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

评论

0/150

提交评论