软件工程复习大纲课件_第1页
软件工程复习大纲课件_第2页
软件工程复习大纲课件_第3页
软件工程复习大纲课件_第4页
软件工程复习大纲课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

第一章软件工程概述软件:软件的概念严格说来,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。软件的特点(分类、发展)软件是一种具有抽象特性的逻辑实体软件的生产、开发无明显的制造过程,容易复制软件的使用、运行期间无机械磨损……(8)软件危机(1)软件开发的进度和开发成本估计不准,用户不满意;(2)软件质量不可靠;(3)软件维护困难;(4)软件不容易使用和管理,缺乏文档资料;(5)软件的开发跟不上硬件的发展和用户要求的日益增长;(6)缺乏高素质的软件开发人员。第一章软件工程概述软件:1产生软件危机的原因:(1)软件本身的问题(2)软件人员本身的问题(3)软件生命期中的管理问题解决软件危机的办法:(1)开发新型的计算机系统,使用新的监督与控制机制;(2)总结和吸取前人的经验和教训,使用成熟的开发方法;(3)消除错误思想和观念,探索新的方法;(4)使用良好的开发工具和环境,提高开发效率;(5)进行严格的组织和管理,采取有效的监督。软件危机的含义:在软件开发和维护过程中所产生的一系列严重问题的现象,统称为软件危机。产生软件危机的原因:2软件工程:概念:是采用工程的概念、原理、技术和方法来开发、维护软件,是开发与维护软件的规范化系统方法,它将完善的工程原理应用于经济地生产既可靠、又能在实际机器上有效运行的软件。其核心内容就是“以工程化的方式组织软件的开发”,涉及软件计划、开发和维护各个阶段。软件工程的基本目标软件工程的七条原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性软件工程:3三种软件开发模型(瀑布、渐增、快速原型化)的优缺点机适用范围。软件生命周期的经典模型——瀑布模型计划:问题定义可行性研究开发:需求分析设计编码测试运行维护注意:各个阶段产生的文档资料的名称。(13份)各个阶段结束标志(文档的内容)软件生命周期的定义软件工程的产生三种软件开发模型(瀑布、渐增、快速原型化)的优缺点机适用范围4问题定义要解决的问题是什么?可行性研究可行性分析对于上一阶段确定的问题有行得通的解决方法吗?(可行性分析的目的)进一步分析和澄清问题定义探索若干种可能的解法

Operationalfeasibility,操作可行性系统的操作方式在这个用户组织内行得通?Technicalfeasibility,技术可行性使用现有的技术能实现这个系统吗?Economicfeasibility,经济可行性这个系统的经济效益能超过它的开发成本吗?对以后的行动方针提出建议问题定义5例如,修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需5000元;系统修改后能及时定货将消除零件短缺问题,估计因此每年可以节省2500元,五年共可节省12500元。但是,不能简单地把5000元和12500元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。年将来值现在值累计现在值125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.94例如,修改一个已有的库存清单系统,使它能在每天送6(1)货币的时间价值

(2)投资回收期通常用投资回收期衡量一项开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,因此这项工程也就越值得投资。

例如,修改库存清单系统两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元,第三年以后将再节省1779.45元。774.88/1779.45=0.44,因此,投资回收期是2.44年。投资回收期仅仅是一项经济指标;为了衡量一项开发工程的价值,还应该考虑其他经济指标。(1)货币的时间价值

(2)投资回收期通常用投7(3)纯收入衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。如果纯收入为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于零,那么这项工程显然不值得投资。

例如,上述修改库存清单系统,工程的纯收入预计是9011.94-5000=4011.94(元)(3)纯收入衡量工程价值的另一项经济指标是工程8需求分析所谓软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。具体任务确定对系统的综合要求分析系统的数据要求需求分析的本质就是对数据和加工进行分析。导出系统的逻辑模型通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型修正系统开发计划开发原型系统(可选)调查组织概况组织的业务活动存在问题、约束条件未来要求需求分析9需求获取技术访谈与会议书面调查法观察用户工作流程用户和开发人员共同组成联合小组数据流图(DFD)数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。主要包括四种基本成分:数据源点/终点数据流加工数据存储/文件基本系统模型

系统

输入1

输入2

输出1

输出2

需求获取技术10

机票预定系统

帐单

订票单

机票

下图是一个飞机机票预定系统的基本系统模型

11

旅行社

预定机票

机票准备

旅客

记帐

订票单

机票

航班目录

费用

帐单

记帐文件

航班

下图是机票预定系统的DFD

12DFD图各成分的作用和注意事项:数据流由一组数据项组成数据流可以从加工流向加工;从源点流向加工;从加工流向终点;从加工流向文件或从文件流向加工两个加工之间可以有几股数据流,这些数据流之间没有任何联系,DFD也不表明它们的流动次序数据流命名的原则:现实环境中,传递的一些表格、单据的名字可直接作为数据流的名字。把现实环境中传递的一组数据中最重要的那个数据作为数据流的名字。不要把控制流作为数据流。在数据流命名时,不要仅使用“数据”、“信息”等缺乏实际具体含义的词汇作为数据流的名字。DFD图各成分的作用和注意事项:13加工是对数据进行处理的单元。在分层DFD中,要对加工进行编号,以便于管理。加工也要选取适当的名字,以提高DFD的易读性。加工命名原则是:顶层的加工名可以是软件项目的名字通常先为数据流命名,然后再为与之相关联的加工命名。加工的名字最好是由一个谓语动词加上一个宾语组成,也可把宾语和谓语颠倒书写应该避免仅使用“加工”、“处理”这样空洞笼统的动词做加工名。名字应该反映整个加工的功能,而不是它的一部分功能通常名字中仅包括一个动词如果在为某个加工命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解加工是对数据进行处理的单元。14文件文件是用来暂时存储数据的。在分层DFD中,文件一般都局部于某一层或某几层。源点和终点是软件系统之外的实体,可以是人、物或其他软件系统。源点和终点是为了帮助理解系统接口界面而引入的,在DFD中不需要进一步描述它们。分层图的编号原则是:(1)顶层图编号为0,顶层图只有一张,它的加工就是整个系统;(2)顶层图的子图称为第一层数据流图,其中的各个加工按自然数顺序1,2,3,…进行编号,第一层数据流图也只有一张;(3)在第一层以下的各分层图中,每个加工的编号应该是其所在的父图的编号加小数点,再加该图的局部加工编号构成。每个加工编号中所含小数点的个数加1,就是该图所在的层次数;文件15几点说明:一个加工并不一定是一个程序。一个数据存储也不等同于一个文件数据存储和数据流都是数据,仅仅所处的状态不同通常在数据流图中忽略出错处理,也不包括诸如打开或关闭文件之类的内务处理。数据流的基本要点是描绘“做什么”而不考虑“怎么做”。有时数据的源点和终点相同,如果只用一个符号代表数据的源点和终点,则至少将有两个箭头和这个符号相连(一个进一个出),可能其中一条箭头线相当长,这将降低数据流图的清晰度。另一种表示方法是再重复画一个同样的符号表示数据的终点。有时数据存储也需要重复,以增加数据流图的清晰度。几点说明:16假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号、零件名称、定货数量、目前价格、主要供应者、次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。分析:第一步可以从问题描述中提取数据流图的四种成分首先考虑数据的源点和终点接下来考虑加工最后,考虑数据流和数据存储注意,并不是所有数据存储和数据流都能直接从问题描述中提取出来假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序17

定货

系统

仓库

管理员

采购员

事务

定货报表

仓库

管理员

1处理事务

2产生报表

采购员

库存清单

库存清单

事务

定货报表

定货信息

定货信息

定货信息

定货系统仓库管理员采购员181.1接收事务

1.2更新库存清单

2产生报表

1.3处理定货

仓库

管理员

采购员

库存清单

事务

事务

库存信息

库存清单

定货信息

定货信息

定货报表

定货信息

1.1接收事务1.2更新库存清单2产生报表1.3处理定19数据字典(DD)数据字典是关于数据的信息的集合,也就是对数据流图中包含的系统元素的定义的集合。有了DFD和DD,才算是完整地描述了一个系统。数据流图和数据字典是需求规格说明书的主要组成部分。数据流条目数据流条目是定义数据流的。定义的方式一般是列出该数据流的各组成数据项。在定义数据流时,通常借助于一些简单的符号。存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999户名=2{字母}24所号=“001”…“999”帐号=“00000001”…“99999999”开户日=年+月+日性质=“1”..“6”印密=“0”数据字典(DD)20存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”摘要=1{字母}4支出=金额金额=“0000000.01”..“9999999.99”操作=“00001”..“99999”…………存取行=日期+(摘要)+支出+存入+余额+操作+复核21数据文件条目文件条目是定义文件的,一般只需列出文件的组成数据项,以及文件的组织方式存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999组织:按帐号次序从小至大排列加工条目(小说明)小说明集中描述一个加工“做什么”,即加工逻辑,也包括其它一些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。目前用于写小说明的工具有结构化英语、判定表和判定树。数据文件条目22下面是商店业务处理系统中“检查发货单”的例子IFtheinvoiceexceeds$500THEN IFtheaccounthasanyinvoicemorethan60daysoverdue THEN theconfirmationpendingresolutionofthedebt ELSEissueconfirmationandinvoice ENDIFELSE IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN issueconfirmation,invoiceandwritemessageoncreditactionreport ELSEissueconfirmationandinvoice ENDIFENDIF下面是商店业务处理系统中“检查发货单”的例子23

1234条件发货单金额>$500>$500≤$500≤$500赊欠情况>60天≤60天>60天≤60天操作不发出批准书√

发出批准书

√√√发出发货单

√√√发出赊欠报告

1234发货单金额>$500>$500≤$500≤$50024

检查发货单

金额>$500

金额?$500

欠款>60天——不发出批准书

欠款?60天——发出批准书、发货单

欠款>60天——发出批准书、发货单及赊欠报告

欠款?60天——发出批准书、发货单

检查发货单金额>$500金额?$500欠款>6025从工程管理的角度看,软件设计可分为概要设计/总体设计和详细(detail)设计两大步骤。概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法表示和数据结构。从技术角度来看,软件设计可分为数据设计、系统结构设计和过程设计。数据设计把分析阶段建立的信息描述转换为实现软件所要求的数据结构,侧重于数据结构的定义;系统结构设计定义软件系统各主要部件、成分之间的关系,过程设计则是把结构成分转换成软件的过程性描述即完成每一部件的过程化描述。从工程管理的角度看,软件设计可分为概要设计/总体设计和详细(26概要设计在进行软件结构设计时应该遵循的最重要的原理是模块独立原理。采用模块化原理的优点:可以使软件结构清晰,容易设计、容易阅读和理解、容易测试和调试。提高软件的可靠性。有利于软件开发工程的组织管理。概要设计27模块独立性可用两个定量准则来度量:耦合和内聚。耦合分七级:非直接耦合、数据耦合、特征耦合/标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。内聚分七级:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。内聚和耦合是相互关联的。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,二者不能兼顾的情况下,应当把更多的注意力集中到提高模块的内聚程度上来。模块独立性可用两个定量准则来度量:耦合和内聚。28系统结构设计的七条启发式原则改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇出和扇入都应适当模块的作用范围应在控制范围之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测概要设计常用图形工具有:层次图、HIPO图、结构图。系统结构设计的七条启发式原则29变换流的DFD是一个线性结构,由输入、变换和输出三部分组成。数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流称为事务流。概要设计的步骤:分析DFD确定DFD的特点及边界映射为软件结构细化后,得到初始结构图获得最终的软件结构图 变换分析事务分析变换流的DFD是一个线性结构,由输入、变换和输出三部分组成。30扇入深度宽度软件层次结构图扇出扇出

A

B

C

DEFEGH

IJKLM结构图参数举例:深度:5宽度:5A的扇出:3M的扇入:3扇入深度宽度软件层次结构图扇出扇出ABC31变换型分析举例变换型分析举例32第一级分解McMAMTMEC,eC,eu,wu,wMcMA1ME1CeruMA2ME2QPRepc,pru,ww第一级分解McMAMTMEC,eC,eu,wu,wMcMA133McMAMTMEC,eC,eu,wu,werQPRpc,pru,wGetCGetEWriteWWriteUecGetBBtoCcbReadDDtoEedReadAAtoBbaadbuwUtoVWriteVuvvMcMAMTMEC,eC,eu,wu,werQPRpc,pr34下面以信用卡报账系统为例某商店开展信用卡购物业务。建立了两个账目付款账目和用户总账目。前者记录了每位用户每次付款的日期、金额,由用户的账号、日期和交易金额组成。后者记录了用户存款余额。这两个账目都是按用户的账号进行登录的(见图)。店方每隔一段时间都需要根据上述两个账目产生一个会计报告。包括账号、日期、交易金额、旧余额、新余额等内容(见图)。现在要求用Jackson方法设计一个能够产生上述会计报告的程序。下面以信用卡报账系统为例35顾客账号支付日期交易金额.........顾客账号存款余额......用户数据顾客账号支付日期交易金额旧存款余额新存款余额...店方数据店方总计付款账目用户总账目会计报告顾客账号支付日期交易金额...顾客账号存款余额..用户数据顾36Jackson开发方法实现步骤①画数据结构图

这个系统的两个输入文件是付账账目和用户总账目。输出文件是会计报告。两个输入文件是以用户账号组织记录的。他们的输出数据结构的Jackson图表示如图所示。付账账目用户账号组付账记录存款余额用户总账号用户记录信用卡报账系统的输入Jackson开发方法实现步骤①画数据结构图付账账目用户账37会计报告中最后一行店方总计中由两项内容组成即交易额总计和点方余额总计。报告其他部分是顾客数据。其输出数据结构的Jackson图表示如图所示。会计报告顾客数据店方数据用户账号组*交易金额总计存款金额总计用户账号存款记录用户总支付存款余额新存款余额旧存款余额报告行*信用卡报账系统的输出会计报告中最后一行店方总计中由两项内容组成即交38处理付款账目和用户总账目并给出会计报告处理报告行*处理店方数据处理用户账号组*处理用户账号处理付款记录计算交易金额总计计算存款余额总计计算旧存款余额计算用户总支付计算新存款余额处理用户数据计算存款余额I1I2图4-47信用卡报账系统程序结构图处理付款账目和用户总账目并给出会计报告处理报告行*处理店方数39③写出程序的过程性描述

首先列出图4-47中的循环结构的终止条件I1和I2.

I1:付款账目文件结束;I2:用户账号组结束。

必要的可执行操作和辅助操作说明。

打开文件:open

读取文件数据:read向文件写数据:write

寻找数据项:finds关闭文件:close③写出程序的过程性描述首先列出图4-47中的循环结构的终止40用Jackson伪代码写出过程性描述:({}内为注释部分),处理付款账目和用户总账目并给出会计报告seq。

open会计报告;

open付款账目;

open用户总账目;处理用户数据iteruntil付款账目文件结束;处理用户账号组seq;read付款账目;处理用户账号{write处理用户账号行};处理付款记录iteruntil用户账号组结束;write报告行;计算交易金额总计;用Jackson伪代码写出过程性描述:({}内为注释部分)41read付款账目;end付款记录;计算用户总支付;计算存款余额seq;处理旧存款余额{read用户总账目finds存款余额};计算新存款余额;{write总计行}end计算存款余额;end处理用户账号组;end处理用户数据;处理店方数据seq;计算交易金额总计;read付款账目;42计算存款余额总计;write店方总计行;end处理店方数据;close付款账目;close用户总账目;close会计报告;end处理付款账目和用户总账目并给出会计报告。用Jackson方法得到的程序结构图一般都需要求精和优化。因为这种方法是从输入输出数据结构导出程序结构图,因此有些中间处理过程在结构图中无法反映出来。在求精过程和,不断对数据结构图进行改进和细化,使之完整。计算存款余额总计;43详细设计详细设计阶段采用自顶向下逐步求精的方法,把一个模块的功能逐步分解细化为一系列具体的处理步骤。结构化程序设计技术是详细设计的逻辑基础。结构化程序设计的三种基本控制结构是顺序、选择、循环。结构化程序设计目前一个比较流行的定义是:结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。详细设计44怎么判断一个程序是否为结构化的呢?如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。怎么判断一个程序是否为结构化的呢?如果对流程图中每一构件用“45

begin

A

1

B

3

4

2

B

6

5

C

7

D

8

end

F

F

F

F

F

T

T

T

T

T

beginA1B342B65C7D46

begin

A

1B3

4

2B6

5C

7D

end

F

FFF

T

T

T58F=0F=1F=0?

F

T

C

7

D

8

7

FTTbeginA1B342B65C7DendF47程序流程图、盒图、PAD图、判定表、判定树和PDL语言等都是完成详细设计的工具,选择合适的工具并且正确地使用它们是十分重要的。注意:各种图形的特点,优缺点,适用范围等,各种图形之间的转换。程序流程图、盒图、PAD图、判定表、判定树和PDL语言等都是48PAD图应用举例(N-S图→PAD图)abTxiFfx2Tx4F=1=2=3ix5gdo-whiledeDo-untilhx3cDo-untilx6jPAD图应用举例(N-S图→PAD图)49aUntilx6bx1fx4Untilx5ighjUntilx3ede=1=2=3x2对应的PAD图aUntilx6bx1fx4Untilx5ighjUnt50程序流程图的优点是:直观、易学、历史长、使用广泛。缺点是:诱使程序员过早地考虑控制流,容易忽略整体结构;控制流绘制时容易乱转移,破坏结构;不容易表示数据结构;不适于大型程序的设计仅适于小规模程序的设计;

例如:前面讲到的折扣率例题购货时间4~6、10、12

1~3、7~9、11

购货数量〈1010~20〉20〈1010~20〉20折扣率5%10%20%10%20%30%程序流程图的优点是:直观、易学、历史长、使用51读入购货月份T和购货量WTin{4-6,10,12}折扣率=5%W<10W>20W<10W>20折扣率=10%折扣率=20%折扣率=20%折扣率=30%结束TFTFTFTFTF读入购货月份T和购货量WTin{4-6,10,12}折扣52购货时间T与购货量WTTin{4-6,10,12}FTW<10FTW<10F折扣率为5%TW>20F折扣率为10%TW>20F折扣率为20%折扣率为10%折扣率为30%折扣率为20%折扣率问题的N-S图购货时间T与购货量WT53编码所谓编码就是把软件设计的结果翻译成计算机可以“理解”的形式—用某种程序设计语言书写的程序。按照软件工程的方法论,编码是在对软件进行了概要设计和详细设计之后进行的,编码不过是把软件设计的结果翻译成用某种程序设计语言书写的程序。因此,程序的质量基本上由设计的质量决定。但是,编码使用的语言,特别是写程序的风格和途径也对程序质量有相当大的影响。编码54测试软件测试的目的就是软件投入生产性运行之前,尽可能多地发现软件中的错误。通常分为单元测试/模块测试,集成测试(包括子系统测试/系统测试),验收测试/有效性测试。设计测试方案是测试阶段的关键技术问题,基本目标是选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。设计测试方案的实用策略是,用黑盒法设计基本的测试方案,再用白盒法补充一些必要的测试方案。测试55软件工程复习大纲56维护所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件维护通常包括四类活动:为了纠正使用过程中暴露出来的错误而进行的改正性维护;为了适应外部环境的变化而进行的适应性维护;为了改进原有的软件而进行的完善性维护;为了改进将来的可维护性和可靠性而进行的预防性维护。软件的可理解性、可测试性和可修改性是决定软件可维护性的基本因素。维护57维护有三种副作用:文档、代码、数据。文档是影响软件可维护性的决定因素。文档可分用户文档和系统文档两大类。预防性维护方法是由Miller提出的。他的想法是“结构化翻新”,并将其定义为:把今天的方法用于昨天的系统,以支持明天的需要。逆向工程与重构工程是目前预防性维护采用的主要技术。维护有三种副作用:文档、代码、数据。58软件项目管理成本由四个部分组成:购置并安装软硬件及有关设备的费用系统开发费用系统安装、运行和维护费用人员培训费用成本估算:代码行技术、任务分解技术系统效益包括经济效益和社会效益两部分货币的时间价值、纯收入、投资回收期、投资回收率进度安排两个主要的工具:横道图、工程网络人员组织:主程序员组软件项目管理59软件工程期末考试题型填空选择判断计算题(成本估算)分析题(需求分析---数据流程图、数据字典)画图题(详细设计的图形表示之间的转换)设计题(变换型/Jackson)测试用例的设计(白盒法)软件工程期末考试题型填空60第一章软件工程概述软件:软件的概念严格说来,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。软件的特点(分类、发展)软件是一种具有抽象特性的逻辑实体软件的生产、开发无明显的制造过程,容易复制软件的使用、运行期间无机械磨损……(8)软件危机(1)软件开发的进度和开发成本估计不准,用户不满意;(2)软件质量不可靠;(3)软件维护困难;(4)软件不容易使用和管理,缺乏文档资料;(5)软件的开发跟不上硬件的发展和用户要求的日益增长;(6)缺乏高素质的软件开发人员。第一章软件工程概述软件:61产生软件危机的原因:(1)软件本身的问题(2)软件人员本身的问题(3)软件生命期中的管理问题解决软件危机的办法:(1)开发新型的计算机系统,使用新的监督与控制机制;(2)总结和吸取前人的经验和教训,使用成熟的开发方法;(3)消除错误思想和观念,探索新的方法;(4)使用良好的开发工具和环境,提高开发效率;(5)进行严格的组织和管理,采取有效的监督。软件危机的含义:在软件开发和维护过程中所产生的一系列严重问题的现象,统称为软件危机。产生软件危机的原因:62软件工程:概念:是采用工程的概念、原理、技术和方法来开发、维护软件,是开发与维护软件的规范化系统方法,它将完善的工程原理应用于经济地生产既可靠、又能在实际机器上有效运行的软件。其核心内容就是“以工程化的方式组织软件的开发”,涉及软件计划、开发和维护各个阶段。软件工程的基本目标软件工程的七条原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性软件工程:63三种软件开发模型(瀑布、渐增、快速原型化)的优缺点机适用范围。软件生命周期的经典模型——瀑布模型计划:问题定义可行性研究开发:需求分析设计编码测试运行维护注意:各个阶段产生的文档资料的名称。(13份)各个阶段结束标志(文档的内容)软件生命周期的定义软件工程的产生三种软件开发模型(瀑布、渐增、快速原型化)的优缺点机适用范围64问题定义要解决的问题是什么?可行性研究可行性分析对于上一阶段确定的问题有行得通的解决方法吗?(可行性分析的目的)进一步分析和澄清问题定义探索若干种可能的解法

Operationalfeasibility,操作可行性系统的操作方式在这个用户组织内行得通?Technicalfeasibility,技术可行性使用现有的技术能实现这个系统吗?Economicfeasibility,经济可行性这个系统的经济效益能超过它的开发成本吗?对以后的行动方针提出建议问题定义65例如,修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需5000元;系统修改后能及时定货将消除零件短缺问题,估计因此每年可以节省2500元,五年共可节省12500元。但是,不能简单地把5000元和12500元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。年将来值现在值累计现在值125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.94例如,修改一个已有的库存清单系统,使它能在每天送66(1)货币的时间价值

(2)投资回收期通常用投资回收期衡量一项开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,因此这项工程也就越值得投资。

例如,修改库存清单系统两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元,第三年以后将再节省1779.45元。774.88/1779.45=0.44,因此,投资回收期是2.44年。投资回收期仅仅是一项经济指标;为了衡量一项开发工程的价值,还应该考虑其他经济指标。(1)货币的时间价值

(2)投资回收期通常用投67(3)纯收入衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。如果纯收入为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于零,那么这项工程显然不值得投资。

例如,上述修改库存清单系统,工程的纯收入预计是9011.94-5000=4011.94(元)(3)纯收入衡量工程价值的另一项经济指标是工程68需求分析所谓软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。具体任务确定对系统的综合要求分析系统的数据要求需求分析的本质就是对数据和加工进行分析。导出系统的逻辑模型通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型修正系统开发计划开发原型系统(可选)调查组织概况组织的业务活动存在问题、约束条件未来要求需求分析69需求获取技术访谈与会议书面调查法观察用户工作流程用户和开发人员共同组成联合小组数据流图(DFD)数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。主要包括四种基本成分:数据源点/终点数据流加工数据存储/文件基本系统模型

系统

输入1

输入2

输出1

输出2

需求获取技术70

机票预定系统

帐单

订票单

机票

下图是一个飞机机票预定系统的基本系统模型

71

旅行社

预定机票

机票准备

旅客

记帐

订票单

机票

航班目录

费用

帐单

记帐文件

航班

下图是机票预定系统的DFD

72DFD图各成分的作用和注意事项:数据流由一组数据项组成数据流可以从加工流向加工;从源点流向加工;从加工流向终点;从加工流向文件或从文件流向加工两个加工之间可以有几股数据流,这些数据流之间没有任何联系,DFD也不表明它们的流动次序数据流命名的原则:现实环境中,传递的一些表格、单据的名字可直接作为数据流的名字。把现实环境中传递的一组数据中最重要的那个数据作为数据流的名字。不要把控制流作为数据流。在数据流命名时,不要仅使用“数据”、“信息”等缺乏实际具体含义的词汇作为数据流的名字。DFD图各成分的作用和注意事项:73加工是对数据进行处理的单元。在分层DFD中,要对加工进行编号,以便于管理。加工也要选取适当的名字,以提高DFD的易读性。加工命名原则是:顶层的加工名可以是软件项目的名字通常先为数据流命名,然后再为与之相关联的加工命名。加工的名字最好是由一个谓语动词加上一个宾语组成,也可把宾语和谓语颠倒书写应该避免仅使用“加工”、“处理”这样空洞笼统的动词做加工名。名字应该反映整个加工的功能,而不是它的一部分功能通常名字中仅包括一个动词如果在为某个加工命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解加工是对数据进行处理的单元。74文件文件是用来暂时存储数据的。在分层DFD中,文件一般都局部于某一层或某几层。源点和终点是软件系统之外的实体,可以是人、物或其他软件系统。源点和终点是为了帮助理解系统接口界面而引入的,在DFD中不需要进一步描述它们。分层图的编号原则是:(1)顶层图编号为0,顶层图只有一张,它的加工就是整个系统;(2)顶层图的子图称为第一层数据流图,其中的各个加工按自然数顺序1,2,3,…进行编号,第一层数据流图也只有一张;(3)在第一层以下的各分层图中,每个加工的编号应该是其所在的父图的编号加小数点,再加该图的局部加工编号构成。每个加工编号中所含小数点的个数加1,就是该图所在的层次数;文件75几点说明:一个加工并不一定是一个程序。一个数据存储也不等同于一个文件数据存储和数据流都是数据,仅仅所处的状态不同通常在数据流图中忽略出错处理,也不包括诸如打开或关闭文件之类的内务处理。数据流的基本要点是描绘“做什么”而不考虑“怎么做”。有时数据的源点和终点相同,如果只用一个符号代表数据的源点和终点,则至少将有两个箭头和这个符号相连(一个进一个出),可能其中一条箭头线相当长,这将降低数据流图的清晰度。另一种表示方法是再重复画一个同样的符号表示数据的终点。有时数据存储也需要重复,以增加数据流图的清晰度。几点说明:76假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号、零件名称、定货数量、目前价格、主要供应者、次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。分析:第一步可以从问题描述中提取数据流图的四种成分首先考虑数据的源点和终点接下来考虑加工最后,考虑数据流和数据存储注意,并不是所有数据存储和数据流都能直接从问题描述中提取出来假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序77

定货

系统

仓库

管理员

采购员

事务

定货报表

仓库

管理员

1处理事务

2产生报表

采购员

库存清单

库存清单

事务

定货报表

定货信息

定货信息

定货信息

定货系统仓库管理员采购员781.1接收事务

1.2更新库存清单

2产生报表

1.3处理定货

仓库

管理员

采购员

库存清单

事务

事务

库存信息

库存清单

定货信息

定货信息

定货报表

定货信息

1.1接收事务1.2更新库存清单2产生报表1.3处理定79数据字典(DD)数据字典是关于数据的信息的集合,也就是对数据流图中包含的系统元素的定义的集合。有了DFD和DD,才算是完整地描述了一个系统。数据流图和数据字典是需求规格说明书的主要组成部分。数据流条目数据流条目是定义数据流的。定义的方式一般是列出该数据流的各组成数据项。在定义数据流时,通常借助于一些简单的符号。存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999户名=2{字母}24所号=“001”…“999”帐号=“00000001”…“99999999”开户日=年+月+日性质=“1”..“6”印密=“0”数据字典(DD)80存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”摘要=1{字母}4支出=金额金额=“0000000.01”..“9999999.99”操作=“00001”..“99999”…………存取行=日期+(摘要)+支出+存入+余额+操作+复核81数据文件条目文件条目是定义文件的,一般只需列出文件的组成数据项,以及文件的组织方式存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999组织:按帐号次序从小至大排列加工条目(小说明)小说明集中描述一个加工“做什么”,即加工逻辑,也包括其它一些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。目前用于写小说明的工具有结构化英语、判定表和判定树。数据文件条目82下面是商店业务处理系统中“检查发货单”的例子IFtheinvoiceexceeds$500THEN IFtheaccounthasanyinvoicemorethan60daysoverdue THEN theconfirmationpendingresolutionofthedebt ELSEissueconfirmationandinvoice ENDIFELSE IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN issueconfirmation,invoiceandwritemessageoncreditactionreport ELSEissueconfirmationandinvoice ENDIFENDIF下面是商店业务处理系统中“检查发货单”的例子83

1234条件发货单金额>$500>$500≤$500≤$500赊欠情况>60天≤60天>60天≤60天操作不发出批准书√

发出批准书

√√√发出发货单

√√√发出赊欠报告

1234发货单金额>$500>$500≤$500≤$50084

检查发货单

金额>$500

金额?$500

欠款>60天——不发出批准书

欠款?60天——发出批准书、发货单

欠款>60天——发出批准书、发货单及赊欠报告

欠款?60天——发出批准书、发货单

检查发货单金额>$500金额?$500欠款>6085从工程管理的角度看,软件设计可分为概要设计/总体设计和详细(detail)设计两大步骤。概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法表示和数据结构。从技术角度来看,软件设计可分为数据设计、系统结构设计和过程设计。数据设计把分析阶段建立的信息描述转换为实现软件所要求的数据结构,侧重于数据结构的定义;系统结构设计定义软件系统各主要部件、成分之间的关系,过程设计则是把结构成分转换成软件的过程性描述即完成每一部件的过程化描述。从工程管理的角度看,软件设计可分为概要设计/总体设计和详细(86概要设计在进行软件结构设计时应该遵循的最重要的原理是模块独立原理。采用模块化原理的优点:可以使软件结构清晰,容易设计、容易阅读和理解、容易测试和调试。提高软件的可靠性。有利于软件开发工程的组织管理。概要设计87模块独立性可用两个定量准则来度量:耦合和内聚。耦合分七级:非直接耦合、数据耦合、特征耦合/标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。内聚分七级:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。内聚和耦合是相互关联的。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,二者不能兼顾的情况下,应当把更多的注意力集中到提高模块的内聚程度上来。模块独立性可用两个定量准则来度量:耦合和内聚。88系统结构设计的七条启发式原则改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇出和扇入都应适当模块的作用范围应在控制范围之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测概要设计常用图形工具有:层次图、HIPO图、结构图。系统结构设计的七条启发式原则89变换流的DFD是一个线性结构,由输入、变换和输出三部分组成。数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流称为事务流。概要设计的步骤:分析DFD确定DFD的特点及边界映射为软件结构细化后,得到初始结构图获得最终的软件结构图 变换分析事务分析变换流的DFD是一个线性结构,由输入、变换和输出三部分组成。90扇入深度宽度软件层次结构图扇出扇出

A

B

C

DEFEGH

IJKLM结构图参数举例:深度:5宽度:5A的扇出:3M的扇入:3扇入深度宽度软件层次结构图扇出扇出ABC91变换型分析举例变换型分析举例92第一级分解McMAMTMEC,eC,eu,wu,wMcMA1ME1CeruMA2ME2QPRepc,pru,ww第一级分解McMAMTMEC,eC,eu,wu,wMcMA193McMAMTMEC,eC,eu,wu,werQPRpc,pru,wGetCGetEWriteWWriteUecGetBBtoCcbReadDDtoEedReadAAtoBbaadbuwUtoVWriteVuvvMcMAMTMEC,eC,eu,wu,werQPRpc,pr94下面以信用卡报账系统为例某商店开展信用卡购物业务。建立了两个账目付款账目和用户总账目。前者记录了每位用户每次付款的日期、金额,由用户的账号、日期和交易金额组成。后者记录了用户存款余额。这两个账目都是按用户的账号进行登录的(见图)。店方每隔一段时间都需要根据上述两个账目产生一个会计报告。包括账号、日期、交易金额、旧余额、新余额等内容(见图)。现在要求用Jackson方法设计一个能够产生上述会计报告的程序。下面以信用卡报账系统为例95顾客账号支付日期交易金额.........顾客账号存款余额......用户数据顾客账号支付日期交易金额旧存款余额新存款余额...店方数据店方总计付款账目用户总账目会计报告顾客账号支付日期交易金额...顾客账号存款余额..用户数据顾96Jackson开发方法实现步骤①画数据结构图

这个系统的两个输入文件是付账账目和用户总账目。输出文件是会计报告。两个输入文件是以用户账号组织记录的。他们的输出数据结构的Jackson图表示如图所示。付账账目用户账号组付账记录存款余额用户总账号用户记录信用卡报账系统的输入Jackson开发方法实现步骤①画数据结构图付账账目用户账97会计报告中最后一行店方总计中由两项内容组成即交易额总计和点方余额总计。报告其他部分是顾客数据。其输出数据结构的Jackson图表示如图所示。会计报告顾客数据店方数据用户账号组*交易金额总计存款金额总计用户账号存款记录用户总支付存款余额新存款余额旧存款余额报告行*信用卡报账系统的输出会计报告中最后一行店方总计中由两项内容组成即交98处理付款账目和用户总账目并给出会计报告处理报告行*处理店方数据处理用户账号组*处理用户账号处理付款记录计算交易金额总计计算存款余额总计计算旧存款余额计算用户总支付计算新存款余额处理用户数据计算存款余额I1I2图4-47信用卡报账系统程序结构图处理付款账目和用户总账目并给出会计报告处理报告行*处理店方数99③写出程序的过程性描述

首先列出图4-47中的循环结构的终止条件I1和I2.

I1:付款账目文件结束;I2:用户账号组结束。

必要的可执行操作和辅助操作说明。

打开文件:open

读取文件数据:read向文件写数据:write

寻找数据项:finds关闭文件:close③写出程序的过程性描述首先列出图4-47中的循环结构的终止100用Jackson伪代码写出过程性描述:({}内为注释部分),处理付款账目和用户总账目并给出会计报告seq。

open会计报告;

open付款账目;

open用户总账目;处理用户数据iteruntil付款账目文件结束;处理用户账号组seq;read付款账目;处理用户账号{write处理用户账号行};处理付款记录iteruntil用户账号组结束;write报告行;计算交易金额总计;用Jackson伪代码写出过程性描述:({}内为注释部分)101read付款账目;end付款记录;计算用户总支付;计算存款余额seq;处理旧存款余额{read用户总账目finds存款余额};计算新存款余额;{write总计行}end计算存款余额;end处理用户账号组;end处理用户数据;处理店方数据seq;计算交易金额总计;read付款账目;102计算存款余额总计;write店方总计行;end处理店方数据;close付款账目;close用户总账目;close会计报告;end处理付款账目和用户总账目并给出会计报告。用Jackson方法得到的程序结构图一般都需要求精和优化。因为这种方法是从输入输出数据结构导出程序结构图,因此有些中间处理过程在结构图中无法反映出来。在求精过程和,不断对数据结构图进行改进和细化,使之完整。计算存款余额总计;103详细设计详细设计阶段采用自顶向下逐步求精的方法,把一个模块的功能逐步分解细化为一系列具体的处理步骤。结构化程序设计技术是详细设计的逻辑基础。结构化程序设计的三种基本控制结构是顺序、选择、循环。结构化程序设计目前一个比较流行的定义是:结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。详细设计104怎么判断一个程序是否为结构化的呢?如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。怎么判断一个程序是否为结构化的呢?如果对流程图中每一构件用“105

begin

A

1

B

3

4

2

B

6

5

C

7

D

8

end

F

F

F

F

F

温馨提示

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

评论

0/150

提交评论