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