新软件工程40100.pptx
《新软件工程40100.pptx》由会员分享,可在线阅读,更多相关《新软件工程40100.pptx(223页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软 件 工 程 李 宣 东 南京大学计算机科学与技术系 http:/ Roger S.Pressman著 黄柏素 梅宏 译 机械工业出版社可视化面向对象建模技术 刘超 张莉 编著 北京航空航天大学出版社http:/传统软件工程方法问题定义需求分析概要设计详细设计编 码测 试维 护基本概念软件 计算机系统中的程序及其有关文件。程序 计算任务中的处理对象和处理规则的描述。文件 为了便于了解程序所需的资料说明。基本概念软件的作用用户与硬件的接口计算机系统的指挥者计算机系统结构设计的重要依据基本概念软件的发展过程第一阶段:从第一台计算机上的第一个程序的出现到实用的高级程序设计语言出现之前(1946-1
2、956);第二阶段:从实用的高级程序设计语言出现到软件工程出现之前(1956-1968);第三阶段:软件工程(1968-)。基本概念软件的分类:系统软件支撑软件应用软件基本概念软件危机供求关系失调开发费用失控,进度拖延可靠性差难以维护基本概念产生软件危机的原因(软件本身的特点)软件开发进展情况较难衡量软件开发质量难以评价管理和控制软件开发过程相当困难软件没有“磨损”概念,软件维护通常意味着改进或修改原来的设计基本概念 产生软件危机的原因(软件开发人员的错误观点)“有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充”“所谓软件开发就是编写程序并设法使它运行”“用户对软件的要求不
3、断变化,然而软件是柔软而灵活的,可以轻易地改动”“软件投入生产性运行以后需要的维护工作并不多,而且维护是一件很容易做的简单工作”基本概念软件工程应用计算机科学、数学及管理科学等原理,以工程化原则、方法解决软件问题的工程。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、降低成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。基本概念软件工程的基本内容:软件设计方法论软件工具软件工程标准和规范软件工程管理软件工程理论基本概念软件工程的基本原理:严格按照计划进行管理坚持进行阶段评审实行严格的产品控制采用现代的程序技术结果要能清晰地审计开发小组人员素质要好,数量不宜多要
4、承认不断改善软件工程实践的必要性基本概念软件生存期(过程)模型:软件生存期是软件产品或系统一系列相关活动的全周期。从形成概念开始,经过研制,交付使用,在使用中不断增补修订,直到最后被淘汰,让位于新的软件产品的过程。对软件生存期的不同划分,形成了不同的软件生存期模型。基本概念瀑布式软件生存期模型强调阶段的划分及其顺序性、各阶段工作及其文档的完备性,是一种严格线性的、按阶段顺序的、逐步细化的开发模式。定义分析设计编码测试维护基本概念 瀑布式软件生存期模型把软件开发过程划分成若干阶段,每个阶段的任务相对独立,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。在软件生存期的每个阶段都采用科学
5、的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行严格的审查,经确认之后才开始下一阶段的工作。基本概念瀑布式模型的特点:结构简单明了;历史较长、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具。确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的;反馈信息慢。基本概念软件质量要素:正确性:软件产品准确执行软件规格说明中所规定的能力。健壮性:在异常条件下软件仍能运行的能力。可靠性:软件在给定的时间内和规定的环境条件下,按规格说明的规定成功地运行的概率。可靠性理解为正确性和健壮性之和。问题定义 问题定义的关键
6、任务是确切地定义用户要求解决的问题,也就是确定问题的性质、工程的目标和规模。可行性研究对软件进行分析与估算确定软件作用范围问题定义可行性研究:经济可行性技术可行性法律可行性不同的方案问题定义对软件进行分析与估算:确定软件的范围估算完成软件开发任务所需的资源估算软件的成本估算和安排软件开发项目的进度问题定义确定软件的作用范围:详细描述软件的任务和具体的要求,抱括软件的功能、性能、接口和可靠性等四个方面的内容。问题定义软件计划:范围(研制的目标,主要功能,其他特性,开发概况)资源(人力资源、硬件资源、软件资源、可用性资源窗口)成本进度安排需求分析软件需求分析是软件生存期的一个重要阶段,是软件开发项
7、目得以成功的基础。其最根本的任务是确定为了满足用户的需要软件系统必须做什么。软件需求分析是一个不断发现和决定的过程,在此过程中,软件开发者和软件申请者(用户)同样起着重要的作用。在需求分析与说明过程中,需要大量交换意见,其间充满着传错信息和发生误解的可能性:“我知道你相信你明白了你认为我所说的是什么,但是我不能肯定你是否意识到你听到的并不是我所指的意思.”。需求分析软件需求分析实现以下几个目标:给出软件系统的数据流程图与数据结构,构造一个完全的系统逻辑模型;提出详细的功能说明确定设计限定条件,规定性能要求;密切与用户的联系,使用户明确自己的任务,以便实现上述两项目标。需求分析软件需求分析包括的
8、工作:问题的认识 需求分析人员通过频繁与用户联系,充分理解用户提出的每一个功能与性能要求,从软件系统特征、软件开发全过程以及软件计划给出的资源和时间约束,来确定软件开发的总策略。评价与综合 需求分析人员必须求得数据的流程和数据结构,评价优缺点;结合用户要求,修改现行的系统,提出新系统的功能,加以细化;提出软件的约束条件、响应时间、存储条件等。需求分析软件需求分析包括的工作:建立需求说明书 软件需求说明书包含软件功能、性能、接口、有效性和逻辑模型的描述。为了证实软件能否被成功实现就要规定相应的检验标准,这些标准在软件开发期间将作为测试的依据。复审 由软件开发人员和用户共同对需求说明书进行严格的审
9、查。需求分析软件需求分析人员应该具备的特征:善于领会一些抽象的概念,重新整理使之成为各种逻辑成分,并根据各种逻辑成分综合出问题的解决办法;善于从各种相互冲突或混淆的原始资料中吸取恰当的论据;能够理解用户的环境及领域知识;需求分析软件需求分析人员应该具备的特征:具备把系统的硬件和软件部分应用于用户环境的能力;具备良好的书面和口头形式进行讨论和交换意见的能力;具有“既能看到树木,又能看到森林”的能力。需求分析基本系统模型:软件系统的全部功能被表示成一个单一的信息变换过程:软件系统输入1输入2输入n输出n输出2输出1.需求分析需求分析信息信息流程信息结构出来的是什么进去的是什么中间如何变换单个元件是
10、什么怎样把它们安置在一起一组元件合在一起分类各组元件之间的关系需求分析结构化分析方法(SA)SA方法采用“抽象”和“分解”两个基本手段,用抽象模型的概念,按照软件内部数据传递、变换关系,由顶向下逐层分解,直到找到满足功能需要的所有可实现的软件元素为止。SA方法采用“分解”的方式来理解一个复杂系统,“分解”需要有描述手段,数据流程图就是作为描述信息流程和分解的手段而引入的。需求分析数据流程图:表示外部实体,代表数据源和数据池。表示加工,代表接收输入,经过变换,继而产生输出的处理过程。表示数据流,代表数据的流向和路径。表示数据存储,代表系统加工的数据所存储的地方。需求分析数据流程图的特点:可以表示
11、任何一个系统(人工的、自动的、或混合的)中的数据流程;每个表示加工的圆圈可能需要进一步分解以求得对问题的全面理解;着重强调的是数据流程而不是控制流程。需求分析例:病员监视系统病员监视系统病员护士护士病员病历基本模型病情信号报告警告信号病历数据请求提出报告需求分析本地监视中央监视报告产生更新病历护士护士病员病员病历病员的病情界限警告信号病员数据请求报告经过整理后的病员数据病情信号需求分析分解病情信号整理病员数据检查是否超出界限产生警告信号时钟整理后的病员 数据日期时间病员病情界限体温血压脉搏病员数据警告信号需求分析推导数据流程图的简单准则:第一层数据流程图应当是基本的系统模型;应当仔细说明原始的
12、输入/输出文件;所有箭头和圆圈均应当加上标注(使用有意义的名字);必须保持信息的连续性;每次只加工一个圆圈。需求分析数据字典数据流程图中,所有的图形元素都进行了命名,所有名字的定义集中起来就构成一本数据字典。数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。对数据的这一系列严密一致的定义也有助于改进在不同的开发人员之间或者不同开发小组之间的通信。如果要求所有开发人员都根据公共的数据字典描述数据或设计模块,则能避免许多麻烦的接口问题。需求分析信息结构信息结构是各个数据成分之间逻辑关系的一种表示方法。数据结构决
13、定信息的组织、存取方法、结合性程度以及不同的处理方案。典型的数据结构包括标量项、顺序向量、n维空间、链接表等。需求分析分层数据结构表示法:分层框图Warnier图需求分析分层框图分层框图把信息用多层方框按照树形结构组织起来。在结构的顶层,用一个方框代表整个结构。下面各层由表示不同信息类别的方框组成,它们可以看成是上一层方框的子集。在该图的最低一层,每个框包含单独的数据实体。需求分析XX公司销售产品计算机软件计算机服务计算机硬件存储器备件处理机应用系统软件服务培训操作系统编译程序工具编辑程序测试驱动程序设计辅助工具.需求分析Warnier图Warnier图把信息表示成一种树形数据结构。可以规定某
14、些信息种类或信息量是重复性的,也可以说明在某一种类中信息是有条件出现的。需求分析计算机系统系统软件应用软件操作系统(P1)编译程序(P2)工 具编 辑(P3)测试驱动(P4)设计辅助(P5)需求分析软件需求说明书1.概述2.信息描述(1)数据流程图(2)数据字典(3)数据结构(4)系统接口说明(5)内部接口需求分析软件需求说明书3.功能说明(1)功能(2)处理说明(3)设计的限制4.检验标准(1)性能界限(2)测试种类(3)预期的软件响应(4)应考虑的特殊问题5.参考文献6.附录需求分析初步的用户手册 当确定了人机交互作用的软件需求后,准备一份初步的用户手册是作为对所要求文件的补充往往是有用的
15、,这种手册将起到两个作用:手册的准备迫使分析人员从用户的角度来看待软件,从而及早考虑接口方面的人机环境工程。用户可以审查一个明确描述人机接口的实际文件。需求分析软件需求说明的审查审查需求的一致性审查需求的现实性审查需求的完整性和有效性需求分析软件需求说明审查中的问题:所规定的软件目标和任务与系统的目标和任务相符合吗?与所有系统成分的重要接口都已被描述了吗?研制项目的数据流程图、数据字典、数据结构充分确定了吗?图表都清楚吗?每个图表在不加补充说明的情况下能被理解吗?主要功能在规定的范围之内吗?每一种功能被充分说明了吗?需求分析软件需求说明审查中的问题:设计的限制条件是现实的吗?开发的技术风险是什
16、么?考虑过软件需求的其他方案吗?检验标准是否详细?他们能否确认系统是成功的?有无遗漏、重复或不一致的地方?用户是否审查了初步的用户手册?软件计划中的估算是否需要修改?需求分析用于软件需求分析的工具概要设计软件设计是把软件需求变为软件的具体方案软件设计包括两个阶段:概要设计和详细设计概要设计根据软件需求所确定的信息流程或信息结构,导出软件的总体表示-软件结构或程序过程概要设计软件结构:软件结构是一种层次化的表示,其指出了由需求分析隐含地确定的某一问题的软件解法的各个元素(称之为模块)之间的相互控制关系软件结构的演变从确定问题开始,当该问题的每个部分用一个或多个软件加以解决以后,整个问题的解也就有
17、了概要设计P3P1P2P4P5S1S2S3S4S5概要设计软件结构的度量和术语:深度:表示控制的层数。宽度:表示控制(同一层次)总跨度。扇出数:指由一模块直接控制的其他模块的数目。扇入数:指有多少个模块直接控制一个给定的模块。上级模块下级模块概要设计程序过程:程序过程是用于描述每个模块的操作细节,是关于模块算法的详细描述,它应当包括处理的顺序、精确的判定位置、重复的操作以及数据组织和结构等。概要设计模块:模块是数据说明、可执行语句等程序对象的集合,是单独命名的并且可以通过名字来访问,例如过程、函数、子程序、宏、modula等。概要设计模块化:软件被划分成独立命名和可独立访问的被称作模块的构件,
18、每个模块完成一个子功能,它们集成到一起满足问题需求。概要设计模块化论据: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)概要设计软件总成本集成成本成本/模块模块数量成本或工作量最小成本区域M概要设计实现模块化的手段:抽象:抽出事物的本质特性而暂时不考虑它们的细节。信息隐蔽:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不可访问的。概要设计模块独立性:模块独立是指开发具有独立功能而
19、且和其它模块之间没有过多的相互作用的模块。模块独立的意义:功能分割,简化接口,易于多人合作开发同一软件;独立的模块易于测试和维护。概要设计模块独立程度的衡量标准:耦合性:对一个软件结构内不同模块间互连程度的度量。内聚性:标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。概要设计耦合分类:无任何连接:两个模块中的每一个都能独立地工作而不需要另一个的存在(最低耦合)。数据耦合:两个模块彼此通过参数交换信息,且交换的仅仅是数据(低耦合)。控制耦合:两个模块之间传递的信息有控制成分(中耦合)。概要设计耦合分类:公共环境耦合:两个或多个模块通过一个公共环境相互作用:1.一个存数据
20、,一个取数据(低耦合);2.都存取数据(低-中之间)。内容耦合:1.一个模块访问另一个模块的内部数据;2.两个模块有一部分程序代码重叠;3.一个模块不通过正常入口而转移的另一个的内部;4.一个模块有多个入口(意味着该模块有多个功能)。概要设计内聚分类:偶然内聚:一组任务关系松散(低)逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低)时间内聚:一组任务必须在同一段时间内执行(低)概要设计内聚分类:信息内聚:模块内所有元素都引用相同的输入或输出数据集合(中)顺序内聚:模块中的每个元素都是与同一功能紧密相关,一个元素的输出是下一个元素的输入(高)功能内聚:一个模块完成一个且仅完成一个功能(高)概
21、要设计关于耦合性和内聚性的设计原则:力争尽可能弱的耦合性:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合力争尽可能高的内聚性:力争尽可能高的内聚性,并能识别出低内聚性概要设计概要设计的启发式准则:改进软件结构,提高模块独立性模块规模应该适中(最好能写在一页纸上)大模块分解不充分;小模块使用开销大,接口复杂。尽量减少高扇出结构的数目,随着深度的增加争取更多的扇入 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。概要设计概要设计的启发式准则:模块的作用范围保持在该模块的控制范围内 模块的作用范围是指该模块中一个判断所
22、影响的所有其它模块;模块的控制范围指该模块本身以及所有直接或间接从属于它的模块。力争降低模块接口的复杂程度 模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得信息传递简单并且与模块的功能一致。概要设计概要设计的启发式准则:设计单入口单出口的模块 避免内容耦合,易于理解和维护。模块的功能应该可以预测 相同的输入应该有相同的输出,否则难以理解、测试和维护。概要设计设计方法:逐步精化-自顶向下设计方法结构化程序设计 结构化程序设计的基础建立在三种能够构成结构化程序的逻辑构造(顺序,选择,重复)上。面向数据的设计方法 面向数据流的设计 面向数据结构的设计面向对象的设计方法概要设计面向数据流
23、的设计:面向数据流的设计方法把信息流映射成软件结构信息流的类型决定了映射的方法信息流有两种类型:变换流 事务流概要设计变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式。进入系统的信息通过变换中心,经过加工处理以后再沿着输出通路变换成外部形式离开系统。概要设计信息外部表示内部表示时间输入流输出流变换中心概要设计事务流:事务流的特点是数据沿着接收通路把外部世界的信息转换成一个事务项,然后,计算该事务项的值,根据它的值激励起多条活动通路中的一条数据流。发出多条通路的信息流中枢被称为“事务中心”。概要设计T事务事务中心活动通路概要设计变换型分析第1步 复查基本系统模型。第2步 复查并精化数
24、据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定输入流和输出流的边界,从而孤立出变换中心。概要设计变换型分析第5步 完成“第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。对于变换流,数据图将被映射成一个特殊的软件结构,这个结构控制输入、变换和输出信息等处理过程:位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:(1)输入信息处理控制模块Ca,协调对所有输入数据的接收;(2)变换中心控制模块Ct,管理对内部形式的数据的所有操作;(3)输出信息控制模块Ce,协调输出信息的产生过程。概要设计CmCtCaCe概要设计变换型分析第6步 完成“第二级分
25、解”。把数据流图中的每一个处理映射成软件结构中一个适当的模块:从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受Ce控制的一个低层模块;最后把变换中心内的每个处理映射成受Ct控制的一个模块。第7步 使用设计度量和启发式规则对得到的软件结构进一步精化。概要设计BCDACmCaBCAD概要设计事务型分析第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定事务中心和每个活动通路的流程特征。概要设计事务型分析第5步 把数据流图映
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 40100
限制150内