传统软件工程方法.ppt
《传统软件工程方法.ppt》由会员分享,可在线阅读,更多相关《传统软件工程方法.ppt(234页珍藏版)》请在三一办公上搜索。
1、传统软件工程方法,李 宣 东 南京大学计算机科学与技术系,主要内容,传统软件工程方法面向对象软件工程(统一建模语言UML)软件过程、管理与质量,传统软件工程方法,问题定义需求分析概要设计详细设计编 码测 试维 护,基本概念,软件 计算机系统中的程序及其有关文件。程序 计算任务中的处理对象和处理规则的描述。文件 为了便于了解程序所需的资料说明。,基本概念,软件的作用用户与硬件的接口计算机系统的指挥者计算机系统结构设计的重要依据,基本概念,软件的发展过程第一阶段:从第一台计算机上的第一个程序的出现到实用的高级程序设计语言出现之前(1946-1956);第二阶段:从实用的高级程序设计语言出现到软件工
2、程出现之前(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公司销售产品
14、,计算机软件,计算机服务,计算机硬件,存储器,备件,处理机,应用,系统,软件服务,培训,操作系统,编译程序,工具,编辑程序,测试驱动程序,设计辅助工具,.,.,.,.,.,.,.,.,.,.,.,.,.,需求分析,Warnier图Warnier图把信息表示成一种树形数据结构。可以规定某些信息种类或信息量是重复性的,也可以说明在某一种类中信息是有条件出现的。,需求分析,计算机系统,系统软件,应用软件,操作系统(P1),编译程序(P2),工 具,编 辑(P3),测试驱动(P4),设计辅助(P5),需求分析,软件需求说明书1.概述2.信息描述(1)数据流程图(2)数据字典(3)数据结构(4)系统接口
15、说明(5)内部接口,需求分析,软件需求说明书3.功能说明(1)功能(2)处理说明(3)设计的限制4.检验标准(1)性能界限(2)测试种类(3)预期的软件响应(4)应考虑的特殊问题5.参考文献6.附录,需求分析,初步的用户手册 当确定了人机交互作用的软件需求后,准备一份初步的用户手册是作为对所要求文件的补充往往是有用的,这种手册将起到两个作用:手册的准备迫使分析人员从用户的角度来看待软件,从而及早考虑接口方面的人机环境工程。用户可以审查一个明确描述人机接口的实际文件。,需求分析,软件需求说明的审查审查需求的一致性审查需求的现实性审查需求的完整性和有效性,需求分析,软件需求说明审查中的问题:所规定
16、的软件目标和任务与系统的目标和任务相符合吗?与所有系统成分的重要接口都已被描述了吗?研制项目的数据流程图、数据字典、数据结构充分确定了吗?图表都清楚吗?每个图表在不加补充说明的情况下能被理解吗?主要功能在规定的范围之内吗?每一种功能被充分说明了吗?,需求分析,软件需求说明审查中的问题:设计的限制条件是现实的吗?开发的技术风险是什么?考虑过软件需求的其他方案吗?检验标准是否详细?他们能否确认系统是成功的?有无遗漏、重复或不一致的地方?用户是否审查了初步的用户手册?软件计划中的估算是否需要修改?,需求分析,用于软件需求分析的工具,概要设计,软件设计是把软件需求变为软件的具体方案软件设计包括两个阶段
17、:概要设计和详细设计概要设计根据软件需求所确定的信息流程或信息结构,导出软件的总体表示-软件结构或程序过程,概要设计,软件结构:软件结构是一种层次化的表示,其指出了由需求分析隐含地确定的某一问题的软件解法的各个元素(称之为模块)之间的相互控制关系软件结构的演变从确定问题开始,当该问题的每个部分用一个或多个软件加以解决以后,整个问题的解也就有了,概要设计,P3,P1,P2,P4,P5,S1,S2,S3,S4,S5,概要设计,软件结构的度量和术语:深度:表示控制的层数。宽度:表示控制(同一层次)总跨度。扇出数:指由一模块直接控制的其他模块的数目。扇入数:指有多少个模块直接控制一个给定的模块。上级模
18、块下级模块,概要设计,程序过程:程序过程是用于描述每个模块的操作细节,是关于模块算法的详细描述,它应当包括处理的顺序、精确的判定位置、重复的操作以及数据组织和结构等。,概要设计,模块:模块是数据说明、可执行语句等程序对象的集合,是单独命名的并且可以通过名字来访问,例如过程、函数、子程序、宏、modula等。,概要设计,模块化:软件被划分成独立命名和可独立访问的被称作模块的构件,每个模块完成一个子功能,它们集成到一起满足问题需求。,概要设计,模块化论据:C(x)定义为问题x的感知复杂性E(x)定义为解决问题x所需要的工作量对p1和p2两个问题,若 C(p1)C(p2),则 E(p1)E(p2)C
19、(p1+p2)C(p1)+C(p2)E(p1+p2)E(p1)+E(p2),概要设计,软件总成本,集成成本,成本/模块,模块数量,成本或工作量,最小成本区域,M,概要设计,实现模块化的手段:抽象:抽出事物的本质特性而暂时不考虑它们的细节。信息隐蔽:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不可访问的。,概要设计,模块独立性:模块独立是指开发具有独立功能而且和其它模块之间没有过多的相互作用的模块。模块独立的意义:功能分割,简化接口,易于多人合作开发同一软件;独立的模块易于测试和维护。,概要设计,模块独立程度的衡量标准:耦合性:对一个软件结构内不
20、同模块间互连程度的度量。内聚性:标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。,概要设计,耦合分类:无任何连接:两个模块中的每一个都能独立地工作而不需要另一个的存在(最低耦合)。数据耦合:两个模块彼此通过参数交换信息,且交换的仅仅是数据(低耦合)。控制耦合:两个模块之间传递的信息有控制成分(中耦合)。,概要设计,耦合分类:公共环境耦合:两个或多个模块通过一个公共环境相互作用:1.一个存数据,一个取数据(低耦合);2.都存取数据(低-中之间)。内容耦合:1.一个模块访问另一个模块的内部数据;2.两个模块有一部分程序代码重叠;3.一个模块不通过正常入口而转移的另一个的内
21、部;4.一个模块有多个入口(意味着该模块有多个功能)。,概要设计,内聚分类:偶然内聚:一组任务关系松散(低)逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低)时间内聚:一组任务必须在同一段时间内执行(低),概要设计,内聚分类:信息内聚:模块内所有元素都引用相同的输入或输出数据集合(中)顺序内聚:模块中的每个元素都是与同一功能紧密相关,一个元素的输出是下一个元素的输入(高)功能内聚:一个模块完成一个且仅完成一个功能(高),概要设计,关于耦合性和内聚性的设计原则:力争尽可能弱的耦合性:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合力争尽可能高的内聚性:力争尽可能高的内
22、聚性,并能识别出低内聚性,概要设计,概要设计的启发式准则:改进软件结构,提高模块独立性模块规模应该适中(最好能写在一页纸上)大模块分解不充分;小模块使用开销大,接口复杂。尽量减少高扇出结构的数目,随着深度的增加争取更多的扇入 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。,概要设计,概要设计的启发式准则:模块的作用范围保持在该模块的控制范围内 模块的作用范围是指该模块中一个判断所影响的所有其它模块;模块的控制范围指该模块本身以及所有直接或间接从属于它的模块。力争降低模块接口的复杂程度 模块接口的复杂性是引起软件错误的一个主要原因。接口设
23、计应该使得信息传递简单并且与模块的功能一致。,概要设计,概要设计的启发式准则:设计单入口单出口的模块 避免内容耦合,易于理解和维护。模块的功能应该可以预测 相同的输入应该有相同的输出,否则难以理解、测试和维护。,概要设计,设计方法:逐步精化-自顶向下设计方法结构化程序设计 结构化程序设计的基础建立在三种能够构成结构化程序的逻辑构造(顺序,选择,重复)上。面向数据的设计方法 面向数据流的设计 面向数据结构的设计面向对象的设计方法,概要设计,面向数据流的设计:面向数据流的设计方法把信息流映射成软件结构信息流的类型决定了映射的方法信息流有两种类型:变换流 事务流,概要设计,变换流:信息沿输入通路进入
24、系统,同时由外部形式变换成内部形式。进入系统的信息通过变换中心,经过加工处理以后再沿着输出通路变换成外部形式离开系统。,概要设计,信息,外部表示,内部表示,时间,输入流,输出流,变换中心,概要设计,事务流:事务流的特点是数据沿着接收通路把外部世界的信息转换成一个事务项,然后,计算该事务项的值,根据它的值激励起多条活动通路中的一条数据流。发出多条通路的信息流中枢被称为“事务中心”。,概要设计,T,事务,事务中心,活动通路,概要设计,变换型分析第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定输入流和输出流的边界,从而孤立出变换中心。,
25、概要设计,变换型分析第5步 完成“第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。对于变换流,数据图将被映射成一个特殊的软件结构,这个结构控制输入、变换和输出信息等处理过程:位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:(1)输入信息处理控制模块Ca,协调对所有输入数据的接收;(2)变换中心控制模块Ct,管理对内部形式的数据的所有操作;(3)输出信息控制模块Ce,协调输出信息的产生过程。,概要设计,Cm,Ct,Ca,Ce,概要设计,变换型分析第6步 完成“第二级分解”。把数据流图中的每一个处理映射成软件结构中一个适当的模块:从变换中心的边界开始沿着输入通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传统 软件工程 方法
链接地址:https://www.31ppt.com/p-2283246.html