《软件工程(完整教程)PPT.ppt》由会员分享,可在线阅读,更多相关《软件工程(完整教程)PPT.ppt(705页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程软件工程(SoftwareEngineering)1 第第1章:软件工程学概述章:软件工程学概述1.1软件危机软件危机60年年代代中中期期以以前前:通通用用硬硬件件相相当当普普遍遍,软件件却却是是为某个具体的某个具体的应用而用而编写的。写的。60年代中到年代中到70年代中:年代中:软件作坊。件作坊。2软件危机软件危机:计算机软件的开发和维护过程:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题)运行软件都具有这种问题)1.1.1软件危机的介绍软件危机的介绍31)对对软软件件开开发发成成本本和和进进度度的的估
2、估计计常常常常很很不准确;不准确;2)用用户户对对完完成成的的软软件件系系统统不不满满意意的的现现象象经常发生;经常发生;3)软件产品的质量往往靠不住;)软件产品的质量往往靠不住;软件危机的典型表现:软件危机的典型表现:44)软件常常是不可维护的;)软件常常是不可维护的;5)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;6)软软件件成成本本在在计计算算机机系系统统总总成成本本中中所所占占的比例逐年上升;的比例逐年上升;7)软件开发生产率提高的速度跟不上计)软件开发生产率提高的速度跟不上计算机应用的发展趋势。算机应用的发展趋势。51.1.2产生软件危机的原因产生软件危机的原因1)软件
3、本身特点造成;)软件本身特点造成;2)软件开发与维护的方法不正确。)软件开发与维护的方法不正确。主要表现:主要表现:(a)忽视软件需求分析;)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;)认为软件开发就是写程序并使之运行;(c)轻视软件维护;)轻视软件维护;6在软件开发的不同阶段进行修改需要付出的在软件开发的不同阶段进行修改需要付出的代价很不相同:代价很不相同:高高中中低低早期早期中期中期后期后期软件开发时期软件开发时期代价代价引入同一修改的代价随时间变化的趋势引入同一修改的代价随时间变化的趋势71)推推广广使使用用在在实实践践中中总总结结出出来来的的开开发发软软件件的的成成功功
4、技技术术和和方方法法,并并研研究究探探索索更更有效的技术和方法;有效的技术和方法;2)开发和使用更好的软件工具;)开发和使用更好的软件工具;3)良好的组织管理措施。)良好的组织管理措施。1.1.3解决软件危机的途径解决软件危机的途径8为为了了解解决决软软件件危危机机产产生生的的问问题题,软软件件工工程程与与方方法法学学逐逐渐渐形形成成,然然后后出出现现了了两两个个相相互互相相承承又又各有侧重的学科:各有侧重的学科:1)软软件件工工程程学学:主主要要应应用用工工程程的的方方法法和和技技术术研研究究软软件件开开发发与与维维护护的的方方法法、工工具具和和管管理理的的一门交叉学科。一门交叉学科。2)程
5、序设计方法学程序设计方法学:主要应用数学的方法:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的研究程序的性质以及程序设计的理论和方法的学科。学科。91.2软件工程软件工程1.2.1软件工程的介件工程的介绍1968年年NATO会会议议:软软件件工工程程就就是是为为了了经经济济地地获获得得可可靠靠的的且且能能在在实实际际机机器器上上有有效效地地运运行行的的软软件件,而建立和使用完善的工程原理。而建立和使用完善的工程原理。1993年年IEEE:软软件件工工程程是是(1)把把系系统统的的、规规范范的的、可可度度量量的的途途径径应应用用于于软软件件开开发发、运运行行和和维维护护过程;(过程;
6、(2)研究()研究(1)中提到的途径。)中提到的途径。101.软件工程关注于大型程序的构造;件工程关注于大型程序的构造;2.软件工程的中心件工程的中心课题是控制复是控制复杂性;性;3.软件件经常常变化;化;4.开开发软件的效率非常重要;件的效率非常重要;5.和和谐地合作是地合作是软件开件开发的关的关键;6.软件必件必须有效地支持它的用有效地支持它的用户;7.在在软件工程件工程领域中是由具有一种文化背景域中是由具有一种文化背景的人替具有另一种文化背景的人的人替具有另一种文化背景的人创造造产品。品。软件工程的本质特性:软件工程的本质特性:111.2.2软件工程的基本原理件工程的基本原理1.用分阶段
7、的生命周期计划严格管理;用分阶段的生命周期计划严格管理;2.坚持进行阶段评审;坚持进行阶段评审;3.实行严格的产品控制;实行严格的产品控制;4.采用现代程序设计技术;采用现代程序设计技术;5.结果能清楚地审查;结果能清楚地审查;6.开发小组的人员应该少而精;开发小组的人员应该少而精;7.承认不断改进软件工程实践的必要性。承认不断改进软件工程实践的必要性。121.2.3软件工程方法学件工程方法学通常把在通常把在软件生命周期全件生命周期全过程中使用的一整套程中使用的一整套技技术方法的集合称方法的集合称为方法学(方法学(Methodology),),也称也称为范型(范型(Paradigm)。)。软件
8、工程方法学的件工程方法学的3要素:方法、工具和要素:方法、工具和过程程131.传统方法学方法学也称也称为生命周期方法学或生命周期方法学或结构化范型。构化范型。结构化方法(构化方法(StructureMethod)有:有:1)结构化构化设计方法(方法(SD););2)结构化分析方法(构化分析方法(SA););3)结构化分析与构化分析与设计技技术(SADT)4)JACKSON方法方法5)WARNIER方法方法142.面向面向对象方法学象方法学把数据和把数据和对数据的操作数据的操作紧密密结合起来的方法,合起来的方法,模模拟人人类认识世界解决世界解决问题的方法和的方法和过程。程。面向面向对象的方法象的
9、方法=对象(属性与服象(属性与服务的封装)的封装)+分分类+继承承+通通过消息的通消息的通讯151)适适用用于于实时事事物物处理理系系统的的有有限限状状态机机方法(方法(FSM););2)适用于并适用于并发软件系件系统的的PETRI网方法;网方法;3)以数学概念和理)以数学概念和理论为基基础的形式化方法,的形式化方法,如如 SDC公司的形式化开公司的形式化开发方法方法FDM:(FormalDevelopmentMethodology)IBM公司的公司的维也也纳开开发方法方法VDM:(ViennaDevelopmentMethod)3.其他开发方法其他开发方法 161.3软件生命周期件生命周期软
10、件生命周期软件生命周期:指软件从提出到最终被淘汰的这个存在期。指软件从提出到最终被淘汰的这个存在期。17软件生命周期件生命周期组成:成:1)软件定件定义;A.问题定定义B.可行性研究可行性研究C.需求需求分析分析2)软件开件开发;D.总体体设计E.详细设计F.编码和和单元元测试G.综合合测试3)运行)运行维护。181.问题定义;问题定义;2.可行性研究;可行性研究;3.需求分析;需求分析;4.总体设计(概要设计);总体设计(概要设计);5.详细设计;详细设计;6.编码与单元测试;编码与单元测试;7.综合测试;综合测试;8.维护。维护。软件生命周期各个阶段:软件生命周期各个阶段:191.4软件件
11、过程程软件件过程程:为了了获得得高高质量量软件件所所需需要要完完成成的的一一系系列列任任务的的框框架架,它它规定定了了完完成成各各项任任务的的工工作步作步骤。软件件过程程(ISO9000):使使用用资源源将将输入入转化化为输出的活出的活动所构成的系所构成的系统。输入:如入:如软件需求件需求输出:如出:如软件件产品品201.4.1瀑布模型瀑布模型1.阶阶段段间间具具有有顺顺序序性性和和依赖性依赖性2.推迟实现的观点推迟实现的观点3.质量保证的观点质量保证的观点21优优点点:采采用用规规范范的的方方法法;严严格格规规定定每每个个阶阶段段提提交交的的文文档档;要要求求每每个个阶阶段段交交出出的的产产
12、品品必必须须经经过过验验证。证。221.4.2快速原型模型快速原型模型优点点:不:不带反反馈环,基本,基本上是上是线性性顺序序进行。行。231.4.3增量模型增量模型优优点点:能能较较短短时时间间内内提提交交可可完完成成部部分分工工作作的的产产品品;可可以以使使用用户有充裕的时间学习和适应新产品。户有充裕的时间学习和适应新产品。24一种风险更大的增量模型:一种风险更大的增量模型:251.4.4螺旋模型螺旋模型可把它看作在每可把它看作在每个个阶段之前都增加段之前都增加风险分析的快速原分析的快速原型模型。型模型。26271.4.5喷泉模型泉模型 典型的面向对象软件典型的面向对象软件开发过程模型之一
13、。开发过程模型之一。281.4.6Rational统一一过程程1.RUP软件开件开发经验(1)迭代式开)迭代式开发(2)管理需求)管理需求(3)使用基于构件的体系)使用基于构件的体系结构构(4)可)可视化建模化建模(5)贯穿于开穿于开发过程的程的软件件质量量验证(6)控制)控制软件件变更更291.4.7敏捷敏捷过程与极限程与极限编程程1.敏捷敏捷过程程具有高效、快速响具有高效、快速响应变化的开化的开发过程。程。(1)个体和交互)个体和交互胜过过程和工具;程和工具;(2)可以工作的)可以工作的软件件胜过面面俱到的文档;面面俱到的文档;(3)客)客户合作合作胜过合同合同谈判;判;(4)响)响应变化
14、化胜过遵循遵循计划。划。2.极限极限编程程敏捷敏捷过程中最著名的一种,指把好的开程中最著名的一种,指把好的开发实践运用到极致,多践运用到极致,多应用于用于软件需求模糊的件需求模糊的场合。合。301.4.8微微软过程程1.微微软过程准程准则2.微微软软件生命周期件生命周期(1)规划划阶段段(2)设计阶段段(3)开)开发阶段段(4)稳定定阶段段(5)发布布阶段段3.微微软过程模型程模型31问问题题定定义义就就是是要要确确定定为为用用户户建建立立什什么么样样的的软软件件系系统统,软软件件叫叫什什么么样样的的名名称称等等等等。“问问题题”是指软件最基本的问题,如:是指软件最基本的问题,如:软件的总体目
15、标什么?软件的总体目标什么?有什么用途?有什么用途?为那些用户设计?为那些用户设计?1.5问题定定义阶段段32问问题题定定义义是是软软件件生生命命周周期期中中时时间间最最短短的的阶阶段段,一一般般都都比比较较简简单单,因因此此在在实实际际开开发发中中它它是是最最容容易被忽视的一个阶段。易被忽视的一个阶段。这这一一阶阶段段工工作作主主要要由由系系统统分分析析员员来来完完成成,系系统统分分析析员员要要尽尽可可能能从从较较高高的的角角度度概概括括软软件件所所要要做的工作,而不用写明问题的实现细节。做的工作,而不用写明问题的实现细节。34第第2章:可行性研究章:可行性研究可可行行性性研研究究就就是是要
16、要回回答答“所所定定义义的的问问题题有有可行的解决办法吗?可行的解决办法吗?”。可可行行性性研研究究的的目目的的是是:用用最最小小的的代代价价在在尽尽可可能能短短的的时时间间内内确确定定问问题题是是否否有有解解,以以及及是是否值得去解。否值得去解。2.1可行性研究的任务可行性研究的任务35可可行行性性研研究究所所需需的的时时间间取取决决于于工工程程的的规规模模,所所需需要要的的成成本本要要占占工工程程总总成成本本的的5%10%。36可行性研究的内容:可行性研究的内容:1)技术可行性技术可行性技术可行性要分析各种技术因素,例如:技术可行性要分析各种技术因素,例如:使用现有的技术能否实现这个系统?
17、使用现有的技术能否实现这个系统?是否有胜任开发该项目的熟练技术人员?是否有胜任开发该项目的熟练技术人员?能能否否按按期期得得到到开开发发该该项项目目所所需需的的软软件件、硬硬件件资源?资源?372)经济可行性经济可行性对经济合理性进行评价,所要考虑的问题是:对经济合理性进行评价,所要考虑的问题是:这个系统的经济效益能否超过它的开发成本?这个系统的经济效益能否超过它的开发成本?这这就就需需要要对对项项目目进进行行价价格格/利利益益分分析析,即即“投投入入/产出产出”分析。分析。由由于于利利益益分分析析取取决决于于软软件件系系统统的的特特点点,因因此此在在软软件件开开发发之之前前,很很难难对对新新
18、系系统统产产生生的的效效益益作作出出精精确的定量描述,所以往往采用一些估算方法。确的定量描述,所以往往采用一些估算方法。383)操作可行性操作可行性操操作作可可行行性性评评价价系系统统运运行行后后会会引引起起的的各各方方面面变变化化,如如:对对组组织织机机构构管管理理模模式式、用用户户工工作作环境等产生的影响。环境等产生的影响。394)社会可行性社会可行性社社会会可可行行性性主主要要讨讨论论法法律律方方面面和和使使用用方方面面的可行性。的可行性。例例如如,被被开开发发软软件件的的权权利利归归属属问问题题、软软件件所使用的技术是否会造成侵权等问题。所使用的技术是否会造成侵权等问题。402.2可行
19、性研究的步骤可行性研究的步骤1)复)复查系系统规模和目模和目标;2)研究目前正在使用的系)研究目前正在使用的系统;3)导出出新新系系统的的高高层逻辑模模型型(数数据流据流图、数据字典);、数据字典);4)重新定重新定义问题;415)导出和评价供选择的解法(物理解决方案);)导出和评价供选择的解法(物理解决方案);6)推荐行动方案;)推荐行动方案;7)草拟开发计划;)草拟开发计划;8)书写文档提交审查。)书写文档提交审查。2.2可行性研究的步骤可行性研究的步骤422.3系统流程图系统流程图(描绘物理系统的工具)(描绘物理系统的工具)2.3.1符号符号符号符号名称名称说明说明处理处理如:程序,处理
20、机,人工加工如:程序,处理机,人工加工输入输入/输出输出连接连接换页连接换页连接数据流数据流表示输入或输出表示输入或输出同一页上图的连接同一页上图的连接不同页上图的连接不同页上图的连接指明数据流动方向指明数据流动方向图图2.1基本符号基本符号43符号符号名称名称说明说明穿孔卡片穿孔卡片文档文档磁带磁带联机存储联机存储磁盘磁盘磁鼓磁鼓显示显示人工输入人工输入人工操作人工操作辅助操作辅助操作通信链路通信链路穿孔卡片输入穿孔卡片输入/输出,或穿孔卡片文件输出,或穿孔卡片文件打印输出,或打印终端输入数据打印输出,或打印终端输入数据磁带输入磁带输入/输出,或表示磁带文件输出,或表示磁带文件任何种类磁盘存
21、储,如磁盘、磁鼓等任何种类磁盘存储,如磁盘、磁鼓等磁盘输入磁盘输入/输出,或磁盘上文件、数据库输出,或磁盘上文件、数据库磁鼓输入磁鼓输入/输出,或磁鼓上文件、数据库输出,或磁鼓上文件、数据库显示器部件显示器部件人工输入数据,如填写表格人工输入数据,如填写表格人工完成的处理人工完成的处理使用辅助设备进行的脱机操作使用辅助设备进行的脱机操作通过远程通信线路传送数据通过远程通信线路传送数据图图2.2系统符号系统符号442.3.2例子例子事务事务库存清单程序库存清单程序报告生成程序报告生成程序定货定货信息信息定货报告定货报告库存清单库存清单主文件主文件图图2.3库存清单系统的系统流程图库存清单系统的系
22、统流程图452.4数据流图(描绘数据在系统中流动的逻辑过程)数据流图(描绘数据在系统中流动的逻辑过程)2.4.1符号符号或或或或或或数据源点或终点数据源点或终点变换数据的处理变换数据的处理数据存储数据存储数据流数据流图图2.4基本符号的含义基本符号的含义46TABC*TABC*附加符号附加符号TABC+TABC+47注意:注意:“处理处理”可表示:单个程序、一系列程序、程可表示:单个程序、一系列程序、程序的一个模块、人工处理过程等等;序的一个模块、人工处理过程等等;“数据存储数据存储”可表示:一个文件、文件的一部可表示:一个文件、文件的一部分、数据库记录等等;分、数据库记录等等;数据流图忽略出
23、错处理、打开文件、关闭文件。数据流图忽略出错处理、打开文件、关闭文件。482.4.2绘制数据流图的绘制数据流图的例子例子事务事务库存清单程序库存清单程序报告生成程序报告生成程序定货定货信息信息定货报告定货报告库存清单库存清单主文件主文件图图2.3库存清单系统的系统流程图库存清单系统的系统流程图492.4.2绘制数据流图的绘制数据流图的例子例子仓库仓库管理员管理员采购员采购员定货系定货系统统事务事务定货报表定货报表图图2.5定货系统的基本系统模型定货系统的基本系统模型502.4.2绘制数据流图的例子绘制数据流图的例子库存清单库存清单仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.
24、6定货系统的功能级数据流图定货系统的功能级数据流图处理处理事务事务1产生产生报表报表2D1库存清单库存清单D2定货信息定货信息定货信息定货信息定货信息定货信息51组成该例子的数据流图的元素组成该例子的数据流图的元素源点源点/终点终点处理处理 采购员采购员 仓库管理员仓库管理员 产生报表产生报表 处理事务处理事务数据流数据流数据存储数据存储 订货报表订货报表 零件编号零件编号 零件名称零件名称 订货数量订货数量 目前价格目前价格 主要供应商主要供应商 次要供应商次要供应商 事务事务 零件编号零件编号 事务类型事务类型 数量数量 订货信息订货信息 (见订货报表)(见订货报表)库存清单库存清单 零件
25、编号零件编号 库存量库存量 库存量临界值库存量临界值52上述数据流图所描述的功上述数据流图所描述的功能够详细了吗?能够详细了吗?532.4.2绘制数据流图的例子绘制数据流图的例子仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.7定货系统进一步分解后的数据流图定货系统进一步分解后的数据流图更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存清单D2定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息541)为数据流(或数据存数据流(或数据存储)命名)命名A名名字字应该代代表表整整个个数数据据流流(或或数数据据存存
26、储)的内容;)的内容;B不不要要使使用用空空洞洞的的、缺缺乏乏具具体体含含义的的名字(如名字(如“数据数据”、“输入入”););2.4.3命名命名55C如果如果为某个数据流(或数据存某个数据流(或数据存储)起名字起名字时遇到困遇到困难,则很可能是因很可能是因为对数据流数据流图的分解不恰当造成的,的分解不恰当造成的,应该试试重新分解数据流重新分解数据流图;562)为处理命名理命名A通通常常先先为数数据据流流命命名名,然然后后再再为与之相关与之相关联的的处理命名;理命名;B名字名字应该反映整个反映整个处理的功能;理的功能;C应该尽尽量量避避免免空空洞洞笼统的的动词做做名字,如名字,如“处理理”、“
27、加工加工”;57D通通常常用用一一个个动词命命名名,如如果果必必须用用两两个个动词才才能能描描述述整整个个处理理的的功功能能,则可可能能要要把把这个个处理分解成两个理分解成两个处理更恰当;理更恰当;E如如果果在在为某某个个处理理命命名名时遇遇到到困困难,则很很可可能能是是发现了了分分解解不不当当的的情情况况,应考考虑重新分解。重新分解。58通常,通常,为“数据源点数据源点/终点点”命名命名时,采用它,采用它们在在问题域中域中习惯使用的名字(如使用的名字(如“仓库管理管理员”、“采采购员”)。)。591)利用它作)利用它作为交流信息的工具;交流信息的工具;2)作)作为软件分析和件分析和设计的工具
28、。的工具。2.4.4数据流图的用途数据流图的用途602.4.4数据流图的用途数据流图的用途仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.8这种自动化边界建议以联机方式更新库存清单这种自动化边界建议以联机方式更新库存清单更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存清单D2定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息61图2.8对应的物理的物理实现硬件方案硬件方案622.4.4数据流图的用途数据流图的用途仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.9这种自动化边界暗示以批量方式
29、更新库存清单这种自动化边界暗示以批量方式更新库存清单更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存清单D2 定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息D3 事务事务63图2.9对应的物理的物理实现硬件方案硬件方案64数据字典数据字典:对数据流图中包含的所有:对数据流图中包含的所有元素的定义的集合;元素的定义的集合;可行性研究阶段,数据流图与数据字可行性研究阶段,数据流图与数据字典共同构成系统的典共同构成系统的逻辑模型逻辑模型。2.5数据字典数据字典 652.5.1数据字典的内容数据字典的内容数据字典应该对下列元
30、素进行定义:数据字典应该对下列元素进行定义:1)数据流;)数据流;2)数据元素(数据流分量);)数据元素(数据流分量);3)数据存储;)数据存储;4)处理。)处理。661)数据元素数据元素字典字典定定义其定其定义的基本内容有:的基本内容有:A数据元素数据元素编号、名称及其含号、名称及其含义;B数据数据类型和型和长度;度;C合理取合理取值;D其其他他内内容容,如如它它与与其其它它数数据据的的逻辑关系等。关系等。2.5.2定义数据的方法定义数据的方法67数据元素字典数据元素字典定定义实例:例:数据元素编号数据元素编号:DC001数据元素名称数据元素名称:考试成绩:考试成绩别名别名:成绩、分数:成绩
31、、分数简述简述:学生考试成绩,分五个等级:学生考试成绩,分五个等级类型类型/长度长度:两个字节,字符类型:两个字节,字符类型取值取值/含义含义:优:优90-100良良80-89中中70-79及格及格60-69不及格不及格0-59有关数据项或结构有关数据项或结构:学生成绩档案:学生成绩档案有关处理逻辑有关处理逻辑:计算成绩:计算成绩图图2.10数据元素字典定义数据元素字典定义682)数据流字典数据流字典定定义其定其定义的基本内容有:的基本内容有:A数据流数据流编号及名称;号及名称;B数据流来源;数据流来源;C数据流去数据流去处;D数据流的数据流的组成;成;E流通量;流通量;F峰峰值。69数据流字
32、典数据流字典定义实例:定义实例:数据流编号数据流编号:DF001数据流名称数据流名称:订票单:订票单简述简述:订票时填写的订票单:订票时填写的订票单数据流来源数据流来源:外部实体:外部实体“乘客乘客”数据流去处数据流去处:处理逻辑:处理逻辑“预订机票预订机票”数据流组成数据流组成:订单编号:订单编号日期日期乘客号乘客号航班号航班号状态状态订单失效日期订单失效日期流通量流通量:每天:每天300份份高峰值流通量高峰值流通量:每天早上:每天早上9:00,约,约160份份图图2.11数据流字典定义数据流字典定义703)数据存数据存储字典定字典定义其定其定义的基本内容有:的基本内容有:A数据存数据存储编
33、号及名称;号及名称;B数据存数据存储的的组成;成;C其它要求。其它要求。714)数据数据处理理字典定字典定义其定其定义的基本内容有:的基本内容有:A数据数据处理理编号及名称;号及名称;B简单描述;描述;C输入入/输出;出;D功能描述;功能描述;E有关数据存有关数据存储。72数据处理数据处理字典定义实例:字典定义实例:数据处理编号数据处理编号:DP001数据处理名称数据处理名称:编辑订票:编辑订票简述简述:接收从终端录入的订票单,检验是否正确:接收从终端录入的订票单,检验是否正确输入输入:乘客订单,来源:外部实体:乘客订单,来源:外部实体“乘客乘客”输输出出:1.合合格格订订单单,去去处处:处处
34、理理逻逻辑辑“确确定定订订票票”2.不及格订单,去处:外部实体不及格订单,去处:外部实体“乘客乘客”功能描述:功能描述:(略)(略)图图2.12数据处理字典定义数据处理字典定义735)组成数据项的表示方法)组成数据项的表示方法=表示表示“等价于等价于”或或“定义为定义为”+表示表示“与与”与与|表示表示“或或”表示重复表示重复()表示可选项表示可选项通讯录通讯录=通讯地址通讯地址 通通讯讯地地址址=姓姓名名+邮邮编编+省省|直直辖辖市市|自自治治区区+市市|县县+街道街道+门牌号门牌号+(电话)(电话)741.作作为分析分析阶段的重要工具;段的重要工具;2.数据元素的控制信息非常有用;数据元素
35、的控制信息非常有用;3.有助于开有助于开发数据数据库。2.5.3数据字典的用途数据字典的用途75实现数据字典:实现数据字典:1)程序处理;)程序处理;2)卡片式人工书写;)卡片式人工书写;2.5.4数据字典的实现数据字典的实现762.6成本成本/效益分析效益分析1)代码行技术代码行技术 软件成本软件成本=每行代码的平均成本每行代码的平均成本估计的源代码总行数估计的源代码总行数2.6.1成本估计成本估计772)任务分解技术任务分解技术软软件件开开发发项项目目分分解解为为若若干干个个相相对对独独立立的的任任务,分别估计每个单独任务的成本:务,分别估计每个单独任务的成本:单单独独任任务务成成本本=任
36、任务务所所需需人人力力估估计计值值每每人每月平均工资;人每月平均工资;软件开发项目总成本估计软件开发项目总成本估计=各个单独任务各个单独任务成本估计值之和。成本估计值之和。78常用的办法是按开发阶段划分任务,典型环境下各个常用的办法是按开发阶段划分任务,典型环境下各个开发阶段需要使用的人力百分比大致如下:开发阶段需要使用的人力百分比大致如下:任务任务人力()人力()可行性研究可行性研究需求分析需求分析设计设计编码与单元测试编码与单元测试综合测试综合测试总计总计510252040100793)自动估计成本技术自动估计成本技术 采用自动估计成本的软件工具估计。采用自动估计成本的软件工具估计。801
37、)Putnam模型模型1978年年Putnam提出的,一种提出的,一种动态多多变量模型:量模型:软件开发成本估算的经验模型:软件开发成本估算的经验模型:81Ck为技技术状状态常数,它反映常数,它反映“妨碍开妨碍开发进展展的限制的限制”,取,取值因开因开发环境而异,境而异,见下表:下表:Ck的典型的典型值值开发环开发环境境开发环境举例开发环境举例2000差差没有系统的开发方法,缺乏文档和复没有系统的开发方法,缺乏文档和复审审8000好好有合适的系统的开发方法,有充分的有合适的系统的开发方法,有充分的文档和复审文档和复审11000优优有自动的开发工具和技术有自动的开发工具和技术822)COCOMO
38、模型模型(constructivecostmodel)这是由是由TRW公司开公司开发,Boehm提出的提出的结构化成本估算构化成本估算模型,是一种精确的、易于使用的成本估算方法。模型,是一种精确的、易于使用的成本估算方法。基本基本COCOMO模型估算工作量和模型估算工作量和进度的公式如下:度的公式如下:工工作作量:量:MM=r(KDSI)c(人月)人月)开开发时间:TDKV=a(MM)b(月)月)DSI:源指令条数,不包括注源指令条数,不包括注释,1KDSI=1000DSIMM:开开发工作量(以人月工作量(以人月计),),1MM=19人日人日=152人人时=1/12人年人年经验常数常数r,c,
39、a,b取决于取决于项目的目的总体体类型型83COCOMO模型中,考模型中,考虑开开发环境,境,软件开件开发项目的目的类型可以分型可以分为3种:种:1)组织型型(organic)相相对较小、小、较简单的的软件件项目。开目。开发人人员对开开发目目标理解比理解比较充分,与充分,与软件系件系统相关的工作相关的工作经验丰富,丰富,对软件的使用件的使用环境很熟悉,受硬件的境很熟悉,受硬件的约束束较小,程序的小,程序的规模不是很大(模不是很大(下个状下个状态加入谓词集加入谓词集P P,把系统扩展成一个把系统扩展成一个6 6元组后元组后:当前状当前状态【菜【菜单】事件【所】事件【所选择的的项】谓词下个状下个状
40、态 计计算算机机系系统统中中每每个个菜菜单单驱驱动动的的用用户户界界面面都都是是一个有穷状态机的实现。一个有穷状态机的实现。128定定义状状态:(1)M(d,e,f):电梯梯e正沿正沿d方向移方向移动,即将到达第,即将到达第f层楼。楼。(2)S(d,e,f):电梯梯e停在停在f层楼,将朝楼,将朝d方向移方向移动(未关(未关门)。(3)W(e,f):电梯梯e在在f层等待(已关等待(已关门)。)。(4)DC(e,f):电梯梯e在楼在楼层f关上关上门。(5)ST(e,f):电梯梯e靠近靠近f层时触触发传感器,感器,电梯控制器梯控制器决定在当前楼决定在当前楼层是否停下。是否停下。(6)RL:电梯按梯按
41、钮或楼或楼层按按钮被按下被按下进入打开状入打开状态4.2.2例子例子:电梯的状态转电梯的状态转换换129电梯状态转换规则:电梯状态转换规则:S(U,e,f)+DC(e,f)=M(U,e,f+1);S(D,e,f)+DC(e,f)=M(D,e,f-1);S(N,e,f)+DC(e,f)=W(e,f)1304.2.3评价价有有穷状状态机描述机描述规格格说明:明:当前状态事件谓词当前状态事件谓词=下个状态下个状态易于易于书写、写、验证、转变成成设计或程序代或程序代码。有有穷穷状状态态机机方方法法比比数数据据流流图图技技术术更更精精确确,一样易于理解。但不能处理定时需求。一样易于理解。但不能处理定时需
42、求。1314.3Petri网网4.3.1概念概念132Petri网包含网包含4种元素:种元素:1)一)一组位置位置P,上例上例PP1,P2,P3,P42)一一组转换T,上例上例Tt1,t23)输入函数入函数I,上例上例I(t1)=P2,P4I(t2)=P24)输出函数出函数O,上例上例O(t1)=P1O(t2)=P3,P3更形式化的更形式化的Petri网网结构,是一个构,是一个4元元组(P,T,I,O)133权标向量(权标向量(1,2,0,1)134权标向量(权标向量(2,1,0,0)135权标向量(权标向量(2,0,2,0)136更形式化地:更形式化地:标记M:P0,1,2,Petri网成网
43、成为一个一个5元元组(P,T,I,O,M)137对Petri网的一个重要网的一个重要扩充是加入禁止充是加入禁止线:1384.3.2例子例子1.电梯按钮电梯按钮EBf 电梯中楼层电梯中楼层f 的按钮;的按钮;Fg楼层楼层g;Ff 楼层楼层f。1392.楼层按钮楼层按钮FBfu第第f 楼层向上按钮;楼层向上按钮;FBfd第第f 楼层向下按钮;楼层向下按钮;140小结基于数学的形式化说明技术,目前还没有在基于数学的形式化说明技术,目前还没有在软件产业界广泛应用;软件产业界广泛应用;应该把形式化方法与传统方法有机结合。应该把形式化方法与传统方法有机结合。141第5章:总体设计 5.1设计过程设计过程1
44、.设想供选择的方案设想供选择的方案2.选择合理的方案选择合理的方案对每个合理的方案要提供:对每个合理的方案要提供:A系统流程图系统流程图B组成系统的物理元素清单组成系统的物理元素清单C成本成本/效益分析效益分析D实现这个系统的进度计划实现这个系统的进度计划1423.推荐最佳方案推荐最佳方案4.功能分解功能分解5.设计软件件结构构6.数据数据库设计A模式模式设计B子模式子模式设计C完整性和安全性完整性和安全性设计D优化化1437.制定制定测试计划划8.书写文档写文档A系系统说明明B用用户手册手册C测试计划划D详细的的实现计划划E数据数据库设计结果果9.审查和复和复审1445.2设计原理设计原理如
45、果一个大型程序如果一个大型程序仅由一个模由一个模块组成,很成,很难被人理解。被人理解。设函函数数C(x)定定义问题x的的复复杂程程度度,函函数数E(x)定定义解解决决问题x需需要要的的工工作作量量(时间)。对于于两两个个问题P1和和P2,如如果:果:C(P1)C(P2)那么那么E(P1)E(P2)根据解决根据解决问题的的经验,有一个,有一个规律是:律是:C(P1+P2)C(P1)+C(P2)于是有于是有E(P1+P2)E(P1)+E(P2)5.2.1模块化模块化145模块数目模块数目接口成本接口成本成本成本/模块模块软件总成本软件总成本M最小成本区最小成本区成成本本图图5.1模块化与软件成本模
46、块化与软件成本1465.2.2抽象抽象5.2.3逐步求精逐步求精模块的独立性很重要,因为:模块的独立性很重要,因为:1)有有效效的的模模块块化化的的软软件件比比较较容容易易开开发发出出来来;2)独立的模块比较容易测试和维护。)独立的模块比较容易测试和维护。5.2.4信息隐蔽和局部化信息隐蔽和局部化5.2.5模块独立模块独立147一、耦合一、耦合 耦合耦合:指软件结构内不同模块彼此之间相:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。互依赖(连接)的紧密程度。模块独立程度可以由两个定性标准度量:模块独立程度可以由两个定性标准度量:耦耦合合与与内聚内聚。148模块的偶合分四类:模块的偶合
47、分四类:1)数据耦合数据耦合两个模块之间只是通过参数交换信息,而且两个模块之间只是通过参数交换信息,而且交换的信息仅仅是数据。交换的信息仅仅是数据。数据耦合是最低程度的耦合。数据耦合是最低程度的耦合。AB数据数据(1)数据耦合)数据耦合1492)控制耦合控制耦合两个模块之间所交换的信息包含控制信息。两个模块之间所交换的信息包含控制信息。控制耦合是中等程度的耦合。控制耦合是中等程度的耦合。图中模块图中模块A的内部处理程序判断是执行的内部处理程序判断是执行C还是执行还是执行D,要取决于模块要取决于模块B传来的信息状态(传来的信息状态(Status)。)。BACD(2)控制耦合)控制耦合astatu
48、s1503)公用耦合公用耦合 两个或多个模块通过一个公共区相互作用两个或多个模块通过一个公共区相互作用时的耦合。时的耦合。公共区可以是:全程数据区、共享通信区、公共区可以是:全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设内存公共覆盖区、任何介质上的文件、物理设备等。备等。软件结构中存在大量的公用耦合时会给诊软件结构中存在大量的公用耦合时会给诊断错误带来困难。断错误带来困难。151 图中存在公用耦合,假中存在公用耦合,假设模模块A、C、E都存取全程数据都存取全程数据区(如公用一个磁区(如公用一个磁盘文件)中的一个数据文件)中的一个数据项。如果如果A模模块读取取该项数据,然后数据
49、,然后调用用C模模块对该项重新重新计算,并算,并进行数据更新。行数据更新。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合152 如果此如果此时C模模块错误地更新了地更新了该项数据,在往下的数据,在往下的处理中模理中模块E读该数据数据项时出出现错误。表面上看,表面上看,问题由模由模块E产生,生,实际上由模上由模块C引起。引起。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合1534)内容耦合内容耦合 一个模块与另一个模块的内容直接发生联系。一个模块与另一个模块的内容直接发生联系。内容耦合对维护会带来严重的困难。内容耦合对维护会带来严重的困难。模块模块ALAB:MOVE1模块模块BG
50、OTOLAB内容耦合内容耦合(4)内容耦合)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的耦合,应该避免采用。耦合,应该避免采用。154 软件设计应追求尽可能松散耦合,避免强软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。性就越强,对模块的测试、维护就越容易。因此建议:因此建议:尽量使