大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1第11章软件设计过程的技术与方法本章主要内容软件工程基本方法软件工程的标准化软件文档的类型及作用软件能力成熟度模型CMM和能力成熟度模型集成CMMI大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法2第11章软件设计过程的技术与方法本章结构:1.1软件工程方法学1.2软件工程的标准化1.3软件文档的类型和作用1.4能力成熟度模型CMM大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法311.1软件工程方法学11.1.1软件开发流程与软件工程方法学软件工程方法学是指导和管理软件开发的应用工程学科,一个软件的开发流程不外乎涉及三个方面的内容:分析、软件设计和实现。随着开发方法的不断进步,人们设计了不同的软件生命周期模型。对不同生命周期模型实现过程的演化反映了软件工程方法的进化。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法411.1软件工程方法学11.1.2软件工程基本方法软件工程的基本方法经历了传统的结构化方法、面向对象方法、软件过程方法和构件工程方法四个阶段的演变。当前采用的软件开发方法主要是结构化方法和面向对象方法。1.结构化方法结构化方法是按功能将问题分解抽象成模块、建立模块和模块之间的调用关系来进行软件开发的。它的基本思想是将系统中的功能与数据相分离。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法51.1软件工程方法学11.1.2软件工程基本方法2.面向对象方法面向对象方法是一种围绕真实世界中的事物来组织软件系统的方法。在这种方法中,系统的基本构成要素是对象。3.软件过程方法软件过程(SoftwareProcess)是在软件生存期中所实施的一系列活动的集合,且每个活动可由一些任务组成。软件过程方法是为建立软件过程所必须实施的一系列工程化的活动,它的研究对象是与此有关的方法、工具和环境。它的出现被认为是人们对软件工程方法认识的又一次质的飞跃。它促使软件开发人员把注意力从抽象的软件生命周期模型转向对软件项目成功起着关键作用的过程细节。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法611.1软件工程方法学11.1.2软件工程基本方法4.构件工程方法基于构件的软件工程(Component-BasedSoftwareEngineering,CBSE)是强调使用可复用的软件构件来设计和构造基于计算机的系统。它借鉴了工业界开发新产品中的使用已有部件,而不是一切都从头开始设计的成功经验。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法711.1软件工程方法学11.1.3软件对象与方法选择在软件的设计中一般涉及两类常见的软件系统。一类称为过程驱动的系统,另一类称为用户驱动的系统。在软件开发中要充分地对开发对象予以考虑,以选择合适的软件开发方法。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法811.2软件工程的标准化标准是对重复性事物和概念所做的统一规定。标准以科学、技术和实践经验的综合成果为基础,以获得最佳秩序和促进最佳社会效益为目的,经有关方面协商一致,由主管或公认机构批准,并以规则、指南或特性文件形式发布,作为共同遵守的准则和依据。规范、规程都是标准的一种形式。标准化的实质是通过制定、发布和实施标准而达到统一。11.2.1软件工程标准化的意义软件工程标准化会给软件工作带来以下好处:①提高软件的可靠性、可维护性和可移植性,从而提高软件产品的质量。②提高软件的生产率,提高软件人员的技术水平。③改善软件开发人员之间的通信效率。④有利于软件工程的管理。⑤有利于降低软件成本、缩短软件开发周期,降低运行与维护成本。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法911.2软件工程的标准化11.2.2软件工程标准化的内容软件工程的标准化一般从两个方面来规范软件的开发:(1)程序设计语言的标准化。为某一程序设计语言规定若干个标准子集,对于语言的实现者和用户都带来了很大方便。(2)软件过程的标准化。为软件生命周期各个阶段的工作建立标准或规范。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1011.2软件工程的标准化11.2.3软件工程标准的层次根据软件工程标准的制定机构与适用范围,软件工程标准可分为国际标准、国家标准、行业标准、企业(机构)标准以及项目(课题)标准五个层次。11.2.4我国的软件工程标准化工作我国有关软件工程的国家标准可分为基础标准、开发标准、文档标准和管理标准四类。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1111.3软件文档的类型和作用11.3.1软件文档在软件开发中的作用软件文档作为计算机软件的主要组成部分,在软件开发人员、软件管理人员、软件维护人员、用户以及计算机之间起着重要的桥梁作用。软件开发人员通过软件文档交流设计思想和设计软件;软件管理人员通过文档了解软件开发项目安排、进度、资源使用和成果等;软件维护人员通过文档对项目进行维护;用户通过文档掌握软件的使用和操作。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1211.3软件文档的类型和作用11.3.2软件文档的类型按照文档产生和使用的范围,软件文档大致可分为用户文档、开发文档和管理文档三种类型。软件文档结构如图11.1所示。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1311.3软件文档的类型和作用图11.1软件文档结构大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1411.3软件文档的类型和作用11.3.3编制软件设计文档应遵循的原则在《计算机软件产品开发文档编制指南(GB8567—1988)》中给出了文档编制时要考虑的三条因素。1.文档的使用者2.重复性3.灵活性大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1511.4能力成熟度模型CMM11.4.1CMM模型简介软件能力成熟度模型CMM是英文(CapacityMaturityModel)的简称。1986年,美国卡内基—梅隆大学软件工程研究所(简称SEI)为了满足美国联邦政府评估软件供应商软件开发能力的要求开始研究并建立此模型。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1611.4能力成熟度模型CMM11.4.2能力成熟度的等级根据CMM提供的阶梯式进化框架,软件开发组织的能力成熟度可分为5个等级。每一个等级定义一组过程能力目标,并描述了要达到这些目标应该采取的实践活动,为不断改进过程奠定了循序渐进的基础。1.初始级2.可重复级3.已定义级4.已管理级5.优化级大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1711.4能力成熟度模型CMM11.4.3CMM与ISO9000系列标准CMM和ISO9001都以全面质量管理为理论基础,都针对过程进行描述,但二者的设计思路不同,属于两个不同的体系。CMM专门针对软件领域,而ISO9001适用范围很广(如硬件、软件、流程性材料和服务等),存在很大差别。CMM和ISO9001这两者的最大相似之处就是它们都起到了过程要描述和改进按规程的作用。在CMM中,虽然有的问题谈的还不够充分,但大体上包容了ISO9001,而ISO9001却不能包容CMM。大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1811.4能力成熟度模型CMM11.4.4应用CMMCMM的用途主要有两个:软件开发组织用它来改进开发和维护软件的过程;政府或商业企业用它来评价与一个特定的软件公司签订软件项目合同的风险。1.软件过程评估和软件能力评价2.评估的基本步骤大连理工大学出版社《软件工程》(第3版)第11章软件设计过程的技术与方法1911.4能力成熟度模型CMM11.4.5CMMI简介CMMI(CapabilityMaturityModelIntegration)即CMM的集成,它是在CMM的基础上发展起来的,它继承并发扬了CMM的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成果,是一个可以改进系统工程和软件工程的整合模式,更适合于信息系统集成企业。CMMI有两种表示方法,一种是和CMM一样的阶段式表示方法,另一种是连续式的表示方法。CMMI是作为改进模型提出来的,提出了较多的最佳实践,利于过程的改进。CMMI将以更加系统和一致的框架指导组织改善软件过程,提高产品和服务的开发。很多业内人士认为,随着软件行业的发展,CMMI模型将最终取代CMM模型。