重庆大学软件工程概述_第1页
重庆大学软件工程概述_第2页
重庆大学软件工程概述_第3页
重庆大学软件工程概述_第4页
重庆大学软件工程概述_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆大学计算机学院重庆大学计算机学院曾一曾一 email:Telo)第1讲 软件工程概述 1.1 1.1 软件危机与软件工程的产生软件危机与软件工程的产生 1.2 1.2 软件工程的基本概念软件工程的基本概念 1.3 1.3 软件工程研究的主要内容软件工程研究的主要内容 1.4 1.4 软件开发模型软件开发模型1.1 1.1 软件危机与软件工程的产生软件危机与软件工程的产生n1.1.1 1.1.1 软件与软件的特点软件与软件的特点n软件的定义:软件的定义:n软件是能够完成预定功能和性能的可执行的软件是能够完成预定功能和性能的可执行的计算机计算机程序程序和使程序正常执

2、行所需要的和使程序正常执行所需要的数据数据,加上描述程序的操作和使用的加上描述程序的操作和使用的文档文档。n简略地说:简略地说:软件程序文档软件程序文档 程序程序 程序按事先设计的功能和性能要求执行的指程序按事先设计的功能和性能要求执行的指令序列。令序列。 数据数据 数据是使程序能正常操纵信息的数据结构。数据是使程序能正常操纵信息的数据结构。文档文档 文档是与程序开发、维护和使用有关的图文文档是与程序开发、维护和使用有关的图文资料。资料。1.1.1 1.1.1 软件与软件的特点软件与软件的特点n软件的特点软件的特点n软件是一种逻辑实体,而不是具体的物理实体,它软件是一种逻辑实体,而不是具体的物

3、理实体,它具有抽象性具有抽象性n软件是软件是“开发开发”出来的,不是出来的,不是“制造制造”出来的出来的n软件维护不同于硬件维修(参看硬件和软件失效率软件维护不同于硬件维修(参看硬件和软件失效率的对比图)的对比图)n软件的开发和运行常常受到计算机系统的限制,对软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性n软件的开发效率仍相当低,至今尚未完全摆脱手工软件的开发效率仍相当低,至今尚未完全摆脱手工作坊式的开发方式作坊式的开发方式n软件本身是复杂的,相当多的软件工作还涉及到社软件本身是复杂的,相当多的软件工作还涉及到社会因素。会因素。1.1.

4、1 1.1.1 软件与软件的特点软件与软件的特点硬件和软件失效率的对比:硬件和软件失效率的对比:1.1.21.1.2软件的三个发展阶段软件的三个发展阶段第第1 1个阶段个阶段:程序时期(约为:程序时期(约为2020世纪世纪5050至至6060年代)年代) 硬件已经通用化,而程序却是个体化的。程序硬件已经通用化,而程序却是个体化的。程序的编写者和使用者往往是同一个人,程序规模小,的编写者和使用者往往是同一个人,程序规模小,每一个程序都是为求解某一个问题而专门设计的,每一个程序都是为求解某一个问题而专门设计的,几乎没有什么系统的方法可遵循,程序设计常常是几乎没有什么系统的方法可遵循,程序设计常常是

5、设计者头脑中进行的隐含过程,除了程序清单,基设计者头脑中进行的隐含过程,除了程序清单,基本没有设计文档资料,其生产方式完全是本没有设计文档资料,其生产方式完全是“个体手个体手工方式工方式”,人们只有程序的概念而没有软件的概念。,人们只有程序的概念而没有软件的概念。 第第2 2个阶段个阶段:程序程序+ +说明时期说明时期(约为约为2020世纪世纪6060至至7070年年代代)软件技术取得了很大的进展,如多道程序设计、软件技术取得了很大的进展,如多道程序设计、多用户人机交互、文件管理、多种高级语言的出现、多用户人机交互、文件管理、多种高级语言的出现、形式语言理论、编译技术的突破等,给计算机的广形式

6、语言理论、编译技术的突破等,给计算机的广泛应用奠定了基础。但是,软件应用的需求变多,泛应用奠定了基础。但是,软件应用的需求变多,规模变大,复杂程度变高,使得规模变大,复杂程度变高,使得“个体生产方式个体生产方式”已经不能适应生产要求,而是需要多人分工合作共已经不能适应生产要求,而是需要多人分工合作共同编制程序,形成了所谓的同编制程序,形成了所谓的“作坊式生产方式作坊式生产方式”,这种方式造成了开发约定不清晰、程序说明不完整,这种方式造成了开发约定不清晰、程序说明不完整,导致了软件质量不高、成本失控、生产效率过低、导致了软件质量不高、成本失控、生产效率过低、工期延误,后期难于维护,甚至一个软件项

7、目在开工期延误,后期难于维护,甚至一个软件项目在开发过程中途夭折等,最终导致发过程中途夭折等,最终导致“软件危机软件危机”的开始。的开始。 1.1.21.1.2软件的三个发展阶段软件的三个发展阶段软件危机软件危机 指指不断增加的为大系统制造可靠软件的困难不断增加的为大系统制造可靠软件的困难度。度。软件系统的规模和复杂性不断增长,对软件软件系统的规模和复杂性不断增长,对软件的需求增长超过了供应(开发、演化和维护)能的需求增长超过了供应(开发、演化和维护)能力。软件开发人员极度短缺、开发效率和软件质力。软件开发人员极度短缺、开发效率和软件质量不能满足用户的需求,最终延缓经济和社会的量不能满足用户的

8、需求,最终延缓经济和社会的发展。发展。1.1.21.1.2软件的三个发展阶段软件的三个发展阶段第第3 3个阶段:个阶段:软件工程时期软件工程时期( (约为约为2020世纪世纪7070年代以后年代以后) )为了摆脱软件危机这一困境,北大西洋公约组织为了摆脱软件危机这一困境,北大西洋公约组织NATO (North Atlantic Treaty Organization ) 于于19681968年召开软件研讨会(年召开软件研讨会(Conference on Software Engineering),并首次提出),并首次提出“软件工程软件工程”这个术这个术语,从此诞生了软件工程这个新兴学科。从语,

9、从此诞生了软件工程这个新兴学科。从7070年代年代初开始,软件工作者主要围绕软件过程和开发模型、初开始,软件工作者主要围绕软件过程和开发模型、开发方法和技术、开发工具和环境,开发规范和标开发方法和技术、开发工具和环境,开发规范和标准以及软件管理等各个方面的研究和实践,使准以及软件管理等各个方面的研究和实践,使“作作坊式生产方式坊式生产方式”,逐步过渡到,逐步过渡到“软件工厂式的生产软件工厂式的生产方式方式”,软件的生产步入了系列化、产品化、工程,软件的生产步入了系列化、产品化、工程化和标准化的进程。化和标准化的进程。 1.1.21.1.2软件的三个发展阶段软件的三个发展阶段1.2 1.2 软件

10、工程的基本概念软件工程的基本概念1.2.1 1.2.1 软件工程软件工程n软件工程软件工程n是指导软件开发和维护的工程类学科,它以计是指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关学科的理论为指导,算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、方法和技术,进行采用工程化的概念、原理、方法和技术,进行软件的开发和维护,并与经过时间证明正确的软件的开发和维护,并与经过时间证明正确的管理方法与措施相结合,以较少的代价获取高管理方法与措施相结合,以较少的代价获取高质量的软件。质量的软件。 软件工程软件工程是软件工程是对需求、计算机技术、人员及是软件工程是对需求、计算机技

11、术、人员及其技能、时间、成本和其它资源的管理,并其技能、时间、成本和其它资源的管理,并籍此在一个满足开发者需求的过程中形成一籍此在一个满足开发者需求的过程中形成一个满足客户需求的软件产品。个满足客户需求的软件产品。 软件工程软件工程( (The IEEE Computer Society)是是(1) (1) 将系统化的、规范的、可度量的方法将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。将工程化应用于软件中。(2) (2) 对对(1)(1)中所述方中所述方法的研究法的研究。1.2.1 1.2.1 软件工程软件工程

12、简单地说,目标简单地说,目标是能够成功地完成软件开发项是能够成功地完成软件开发项目。而一个成功的项目目标是生产一个可接受目。而一个成功的项目目标是生产一个可接受的产品的产品。 总的来说,目标总的来说,目标是是应用计算机科学、数学及管应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则和方法创理科学等原理,借鉴传统工程的原则和方法创建软件,以达到改善生产效率、提高质量、降建软件,以达到改善生产效率、提高质量、降低成本的目的。低成本的目的。 1.2.2 1.2.2 软件工程的目标软件工程的目标n软件生存周期软件生存周期SLC(Software Life Cycle)一个软件产品通常是从模糊的概

13、念开始,逐一个软件产品通常是从模糊的概念开始,逐步建立起产品的需求,并对需求进行说明,步建立起产品的需求,并对需求进行说明,然后进行设计、实现和测试。如果客户是满然后进行设计、实现和测试。如果客户是满意的,那么就可安装产品,并且开始运行和意的,那么就可安装产品,并且开始运行和维护它。如果产品到达了其有用生命的尽头维护它。如果产品到达了其有用生命的尽头就会退役、报废或停止使用。这一系列过程,就会退役、报废或停止使用。这一系列过程,我们称为软件的生命周期。我们称为软件的生命周期。 1.2.3 1.2.3 软件生存周期软件生存周期n软件生存周期的各个阶段软件生存周期的各个阶段从软件跨越的整个生命周期

14、所实施的过程、活从软件跨越的整个生命周期所实施的过程、活动和任务来划分,软件的生命周期可以归结为动和任务来划分,软件的生命周期可以归结为以下几个主要阶段:软件计划、需求分析、软以下几个主要阶段:软件计划、需求分析、软件设计、编码、测试、维护与运行、退役等。件设计、编码、测试、维护与运行、退役等。这些阶段互相区别而又有联系。这些阶段互相区别而又有联系。实际上,每个软件的生命周期有所不同,如有实际上,每个软件的生命周期有所不同,如有的软件可能在需求阶段花费几年的时间,有的的软件可能在需求阶段花费几年的时间,有的软件在设计和实现阶段只需几个月时间,有的软件在设计和实现阶段只需几个月时间,有的软件则在

15、维护阶段可能长达十几年。软件则在维护阶段可能长达十几年。 1.2.3 1.2.3 软件生存周期软件生存周期第一个阶段:软件计划(第一个阶段:软件计划(PlanningPlanning) 确定要解决的确定要解决的“问题是什么问题是什么”及及“解决问题的解决问题的可行方案可行方案”即确定要开发软件系统的总目标,给出它的功即确定要开发软件系统的总目标,给出它的功能、性能、可靠性以及接口等方面的概要性要能、性能、可靠性以及接口等方面的概要性要求;从技术方面、经济方面、法律方面探讨解求;从技术方面、经济方面、法律方面探讨解决问题的可能方案,对可利用的资源(如计算决问题的可能方案,对可利用的资源(如计算机

16、硬件、软件、人力等)、成本、可取得的经机硬件、软件、人力等)、成本、可取得的经济效益、开发的进度做出估计,制定出完成开济效益、开发的进度做出估计,制定出完成开发任务的实施计划等,提交管理机构评审。发任务的实施计划等,提交管理机构评审。 1.2.3 1.2.3 软件生存周期软件生存周期第二个阶段:需求分析和规格说明(第二个阶段:需求分析和规格说明(Requirement Requirement Analysis and SpecificationAnalysis and Specification) 确定目标系统要确定目标系统要“做什么做什么”。即对软件计划阶段的要求进一步细化和求精,即对软件计

17、划阶段的要求进一步细化和求精,加强并集中软件的需求分析和规格说明,强调加强并集中软件的需求分析和规格说明,强调软件分析人员与用户、软件分析人员与软件开软件分析人员与用户、软件分析人员与软件开发人员的交互,充分理解软件的作用域、所需发人员的交互,充分理解软件的作用域、所需功能、性能及接口、安全与保密、人机工程与功能、性能及接口、安全与保密、人机工程与人机界面、数据定义及数据库、安装及验收等人机界面、数据定义及数据库、安装及验收等需求,落实用户所需文档、用户操作和运行需需求,落实用户所需文档、用户操作和运行需求、用户维护需求,然后写出软件需求规格说求、用户维护需求,然后写出软件需求规格说明书,提交

18、管理机构评审。明书,提交管理机构评审。 1.2.3 1.2.3 软件生存周期软件生存周期第三个阶段:第三个阶段:设计(设计(Software DesignSoftware Design)确定目标系统要确定目标系统要“怎么做怎么做”。软件设计是将需求转换成为软件的表示,包括软件设计是将需求转换成为软件的表示,包括数据结构、软件结构、接口表示和过程细节。数据结构、软件结构、接口表示和过程细节。通常将前三者划为软件的通常将前三者划为软件的初步(概要)设计初步(概要)设计,后者则归为软件的后者则归为软件的详细设计详细设计。例如,可将需求。例如,可将需求转化为层次化的软件模块结构、模块所用的数转化为层次

19、化的软件模块结构、模块所用的数据结构或数据库文件表示、模块之间接口描述、据结构或数据库文件表示、模块之间接口描述、模块应完成的功能等,以及每个模块完成相应模块应完成的功能等,以及每个模块完成相应功能的过程细节如局部变量、内部数据结构、功能的过程细节如局部变量、内部数据结构、算法等。这些软件表示应该按照规定的标准形算法等。这些软件表示应该按照规定的标准形式加以描述,形成软件设计规格说明书,提交式加以描述,形成软件设计规格说明书,提交管理机构评审。管理机构评审。 1.2.3 1.2.3 软件生存周期软件生存周期第四个阶段:第四个阶段:编码(编码(CodingCoding)编码体现了目标系统的编码体

20、现了目标系统的“具体实现具体实现”。编码是将设计转换成计算机可以接受的语言代编码是将设计转换成计算机可以接受的语言代码码源程序。如果设计给出的描述很详细,源程序。如果设计给出的描述很详细,那么编码几乎可以机械地完成。自然,编码必那么编码几乎可以机械地完成。自然,编码必须与设计表示一致、具有结构简单、清晰易读须与设计表示一致、具有结构简单、清晰易读等良好的编码风格。等良好的编码风格。 1.2.3 1.2.3 软件生存周期软件生存周期第五个阶段:软件测试(第五个阶段:软件测试(Software TestingSoftware Testing) 软件测试是保证软件质量的重要手段,其主要软件测试是保证

21、软件质量的重要手段,其主要任务是检查该软件是否符合要求,其目的是发任务是检查该软件是否符合要求,其目的是发现软件存在的错误。软件测试应该是有计划地现软件存在的错误。软件测试应该是有计划地进行。进行。软件测试依据软件规格说明设计测试用例,并软件测试依据软件规格说明设计测试用例,并施加在已经编码的程序上进行执行,经过对预施加在已经编码的程序上进行执行,经过对预期结果和实际执行结果的比较、分析,来发现期结果和实际执行结果的比较、分析,来发现程序的错误,最后形成测试报告。测试的主要程序的错误,最后形成测试报告。测试的主要过程有单元、集成、系统、验收和安装测试等。过程有单元、集成、系统、验收和安装测试等

22、。1.2.3 1.2.3 软件生存周期软件生存周期第六个阶段:第六个阶段:运行运行/ /维护(维护(Running/MaintenanceRunning/Maintenance)该阶段体现软件是否能够持久满足用户的需求。该阶段体现软件是否能够持久满足用户的需求。已交付的软件投入正式使用后,便进入运行和已交付的软件投入正式使用后,便进入运行和维护阶段。这个阶段可能持续若干年甚至几十维护阶段。这个阶段可能持续若干年甚至几十年,因此占整个软件费用的比例最大,是相当年,因此占整个软件费用的比例最大,是相当重要的一个阶段。重要的一个阶段。软件维护的实质是对软件继续进行查错、纠错、软件维护的实质是对软件继

23、续进行查错、纠错、修改和确认的过程。无论是应用软件或系统软修改和确认的过程。无论是应用软件或系统软件,都要在使用期间不断改善和加强产品的功件,都要在使用期间不断改善和加强产品的功能和性能、适应运行环境的改变、纠正在开发能和性能、适应运行环境的改变、纠正在开发期间未能发现的遗留错误。期间未能发现的遗留错误。 1.2.3 1.2.3 软件生存周期软件生存周期第七个阶段:第七个阶段:报废报废/ /退役退役(RetirementRetirement)当软件经过一段时期运行和服务后,便可能报当软件经过一段时期运行和服务后,便可能报废或退役。废或退役。主要的原因有:主要的原因有:为满足用户的需求所做的维护

24、费用太高,可能比新为满足用户的需求所做的维护费用太高,可能比新开发一个软件所花费的代价更高。开发一个软件所花费的代价更高。维护的少量变化对于依赖性很强的软件的整体功能维护的少量变化对于依赖性很强的软件的整体功能而言,有极大的危险。而言,有极大的危险。环境的变更(如硬件或操作系统)导致软件的更换。环境的变更(如硬件或操作系统)导致软件的更换。用户不再需要这个软件。用户不再需要这个软件。1.2.3 1.2.3 软件生存周期软件生存周期n软件生存周期是软件工程中一个重要概念软件生存周期是软件工程中一个重要概念把软件的整个生存周期划分为较小的阶段,给把软件的整个生存周期划分为较小的阶段,给每个阶段赋予

25、确定而有限的任务,就能简化每每个阶段赋予确定而有限的任务,就能简化每一步的工作,使软件开发过程易于控制和管理。一步的工作,使软件开发过程易于控制和管理。采用这种划分,使得每一个阶段的工作相对独采用这种划分,使得每一个阶段的工作相对独立,有利于简化整个问题的解决,且便于不同立,有利于简化整个问题的解决,且便于不同人员分工协作。而且严格的科学的评审制度提人员分工协作。而且严格的科学的评审制度提高了软件的质量,从而大大提高了软件开发的高了软件的质量,从而大大提高了软件开发的生产率和成功率。生产率和成功率。1.2.3 1.2.3 软件生存周期软件生存周期n软件生存周期各阶段的软件生存周期各阶段的关键关

26、键问题问题阶段阶段关键问题关键问题结束标准结束标准问题定义与可行性研究 问题是什么?有可行解吗?可行性研究报告需求分析软件必须做什么?需求分析报告软件概要/总体设计怎样概括地解决该问题?概要设计报告详细设计怎样具体地解决该问题?详细设计报告编码如何编码并最终实现该系统?源程序清单测试寻找软件错误并使其符合要求?测试报告运行与维护用户发现新问题?有新要求?如何解决新问题?满足新要求?运行日志和维护记录1.2.3 1.2.3 软件生存周期软件生存周期1.3 1.3 软件工程研究的主要内容软件工程研究的主要内容 软件工程研究的主要内容软件工程研究的主要内容-4-4个方面个方面规范和标准规范和标准方法

27、和技术方法和技术工具和环境工具和环境过程与管理过程与管理1.3.1 1.3.1 规范和标准规范和标准(1)(1)软件工程规范和标准软件工程规范和标准所谓规范就是明文规定或约定俗成的标准。所谓规范就是明文规定或约定俗成的标准。软件规范化就是使软件工作与产品符合一定的标准。软件规范化就是使软件工作与产品符合一定的标准。软件工程标准有很多类型。按照中国国家标准软件工程标准有很多类型。按照中国国家标准GB/T GB/T 15538-199515538-1995软件工程标准分类法软件工程标准分类法,分类法由标准划,分类法由标准划分和软件工程划分以及这两种划分的表示关系所组成。分和软件工程划分以及这两种划

28、分的表示关系所组成。按标准划分有过程、产品、行业、记号按标准划分有过程、产品、行业、记号4 4大类型,标准大类型,标准划分确定了标准的作用;按软件工程划分包括划分确定了标准的作用;按软件工程划分包括2 2个部分,个部分,任务功能(产品工程、技术管理、确认与验证)和软件任务功能(产品工程、技术管理、确认与验证)和软件生存周期(概念、需求、设计、实现、测试、安装验收、生存周期(概念、需求、设计、实现、测试、安装验收、运行、引退等阶段),软件工程划分确定了与标准有关运行、引退等阶段),软件工程划分确定了与标准有关的软件工程方面的特性。的软件工程方面的特性。(2)(2)软件工程标准的意义软件工程标准的

29、意义必要性必要性在软件的开发、测试与评价、运行、维护、管理等在软件的开发、测试与评价、运行、维护、管理等一系列工作中,都要有一系列的约束和规定,都要一系列工作中,都要有一系列的约束和规定,都要求提供统一的行动规范和衡量准则,使得各种工作求提供统一的行动规范和衡量准则,使得各种工作都能有章可循。都能有章可循。标准化带来的好处标准化带来的好处提高软件的质量提高软件的质量提高软件的生产率提高软件的生产率提高软件人员之间的通信效率,减少差错和误解提高软件人员之间的通信效率,减少差错和误解有利于提高软件管理水平有利于提高软件管理水平有利于降低软件的成本有利于降低软件的成本有利于缩短软件开发周期有利于缩短

30、软件开发周期1.3.1 1.3.1 规范和标准规范和标准(3)(3)软件工程标准的层次软件工程标准的层次 根据软件工程标准制定的机构和标准适用的根据软件工程标准制定的机构和标准适用的范围有所不同,它分为范围有所不同,它分为5 5个个级别:级别:n国际标准国际标准n国家标准国家标准n行业标准行业标准n企业规范企业规范n项目规范项目规范1.3.1 1.3.1 规范和标准规范和标准n国际标准:国际标准:由国际联合机构制定和公布,提供各由国际联合机构制定和公布,提供各国参考的标准。国参考的标准。nISOISO(International Standards Organization)Internati

31、onal Standards Organization)国际国际化标准组织有着广泛的代表性和权威性,所公布的标化标准组织有着广泛的代表性和权威性,所公布的标准也有较大的影响。该机构的计算机与信息处理委员准也有较大的影响。该机构的计算机与信息处理委员会(会(ISO/TC97ISO/TC97)专门负责与计算机有关的标准化工作,)专门负责与计算机有关的标准化工作,所制定的标准冠有所制定的标准冠有ISOISO字样,如字样,如ISO 8631-ISO 8631-86Information Processing-program constructs and 86Information Processing

32、-program constructs and conventions for their representationconventions for their representation信息处理信息处理- -程序构造与表示法的约定程序构造与表示法的约定。1.3.1 1.3.1 规范和标准规范和标准n国家标准:国家标准:由政府或国家级的机构制定或批准,适由政府或国家级的机构制定或批准,适用于全国范围的标准。用于全国范围的标准。nGB GB 中华人民共和国技术监督局是中国的最高标准化机构,中华人民共和国技术监督局是中国的最高标准化机构,它所公布实施的标准简称为它所公布实施的标准简称为“国标国

33、标”。 nANSIANSI(American National Standards Institute)American National Standards Institute)美国民美国民间标准化组织机构,具有一定的权威性。间标准化组织机构,具有一定的权威性。 nFIPSFIPS(NBSNBS)()(Federal Information Processing Federal Information Processing Standards (National Bureau Standards)Standards (National Bureau Standards)美国商务部国美国商务部

34、国家标准局联邦信息处理标准。它所公布的标准均冠有家标准局联邦信息处理标准。它所公布的标准均冠有FIPSFIPS字样,如字样,如FIPS PUB 132-87FIPS PUB 132-87软件确认与验证计划指南。软件确认与验证计划指南。nBSBS(British StandardsBritish Standards)英国国家标准。)英国国家标准。nDINDIN(Deutsches Institut fur Normung)Deutsches Institut fur Normung)德国国家标准。德国国家标准。nJISJIS(Japanese Industrial Standards)Japan

35、ese Industrial Standards)日本工业标准。日本工业标准。1.3.1 1.3.1 规范和标准规范和标准n行业标准:行业标准:由行业机构、学术团体或国防机构制定,由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准。并适用于某个业务领域的标准。nIEEEIEEE(Institute Electrical and Electronic Institute Electrical and Electronic EngineersEngineers)美国电气与电子工程师学会。例如)美国电气与电子工程师学会。例如ANSI/IEEE Str 828-1983(ANSI/IEEE

36、 Str 828-1983(软件配置管理计划标准)。软件配置管理计划标准)。nGJBGJB中国国家军用标准,国防科学技术工业委员会批准。中国国家军用标准,国防科学技术工业委员会批准。例如例如GJB 437/438-88GJB 437/438-88(军用软件开发(军用软件开发/ /文档编制规范)。文档编制规范)。nDOD-STDDOD-STD(Department Of Defense-STanDards)Department Of Defense-STanDards)美国国防美国国防部标准,适用于美国国防部。部标准,适用于美国国防部。nMIL-SMIL-S(MILitary-StandarsM

37、ILitary-Standars)美国军用标准)美国军用标准, ,适用于美军适用于美军内部。内部。n其他其他 其他行业制定的适于本部门工作需要的规范。其他行业制定的适于本部门工作需要的规范。1.3.1 1.3.1 规范和标准规范和标准n企业规范企业规范n一些大型企业或公司,由于软件工程的需要,制定适一些大型企业或公司,由于软件工程的需要,制定适用于本部门的规范。例如,用于本部门的规范。例如,IBM公司通用产品部公司通用产品部1984年制定的年制定的软件程序设计开发指南软件程序设计开发指南。n项目规范项目规范n由某一科研生产项目组织制定,且为该项目专用的软由某一科研生产项目组织制定,且为该项目专

38、用的软件工程规范。例如,件工程规范。例如,CIMS的软件工程规范。的软件工程规范。1.3.1 1.3.1 规范和标准规范和标准(3)(3)例子例子 计算机软件工程规范国家标准计算机软件工程规范国家标准GB2000GB2000汇编汇编标准名称(1)编号信息处理-数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定GB/T1526-1989信息技术-软件生存周过程GB/T8566-1995计算机软件产品开发文件编制指南GB/T8567-1988计算机软件需求说明编制指南GB/T9385-1988计算机软件测试文件编制规范GB/T9386-1988软件工程术语GB/T114

39、57-1995计算机软件质量保证计划规范GB/T12504-19901.3.1 1.3.1 规范和标准规范和标准(4)例子 计算机软件工程规范国家标准计算机软件工程规范国家标准GB2000GB2000汇编汇编标准名称(2)编号计算机软件配置管理计划规范GB/T12505-1990工业控制用软件评定准则GB/T13423-1992信息处理-程序构造及其表示的约定GB/T13502-1992计算机软件分类与代码GB/T13702-1992软件维护指南GB/T14079-1992信息处理系统-计算机系统配置图符号及约定GB/T14085-1993计算机软件可靠性和可维护性管理GB/T14394-19

40、93DOS中文信息处理系统接口规范GB/T15189-19941.3.1 1.3.1 规范和标准规范和标准标准名称(3)编号计算机软件单元测试GB/T15532-1995信息处理-单命中判定表规范GB/T15535-1995软件工程标准分类法GB/T15538-1995信息处理-按记录组处理顺序文卷的程序流程GB/T15679-1995软件支持环境GB/T15853-1995信息技术 软件产品评价 质量特性及其使用指南GB/T16260-1996软件文档管理指南GB/T16680-1996信息技术 软件包 产品要求和测试GB/T17544-19981.3.1 1.3.1 规范和标准规范和标准

41、例如,例如,GB/T8567-1988GB/T8567-1988计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南这份指导性文件建议:在一项计算机软件的开发过程中,这份指导性文件建议:在一项计算机软件的开发过程中,一般地说,应该产生一般地说,应该产生1414种文件。这些文件是:种文件。这些文件是: 可行性研究报告可行性研究报告 项目开发计划项目开发计划 软件需求说明书软件需求说明书 数据要求说明数据要求说明 概要设计说明书概要设计说明书 详细设计说明书详细设计说明书 数据库设计说明书数据库设计说明书 用户手册用户手册 操作手册操作手册 模块开发卷宗模块开发卷宗 测试计划测试计划 测试

42、分析报告测试分析报告 开发进度月报开发进度月报 项目开发总结报告项目开发总结报告1.3.1 1.3.1 规范和标准规范和标准1.3.2 1.3.2 方法和技术方法和技术n软件方法软件方法软件方法体现了软件开发人员看待系统的立软件方法体现了软件开发人员看待系统的立场和观点,它确定开发的各个阶段,规定每场和观点,它确定开发的各个阶段,规定每个阶段的活动、产品、验证步骤和完成准则。个阶段的活动、产品、验证步骤和完成准则。n软件技术软件技术软件技术则是方法的具体实现,由若干步骤软件技术则是方法的具体实现,由若干步骤组成,突出组成,突出“如何做如何做”。有时也不加区别称。有时也不加区别称技术方法。技术方

43、法。n软件方法与技术几乎在软件的整个生命期软件方法与技术几乎在软件的整个生命期中都有不同程度的运用。中都有不同程度的运用。n软件方法与技术的例子面向数据流的方法结构化方法(SA-SD-SP) SA,1970s,E.Yourdon/T.Demarco;SD,W.Stevens/G.Myers/L.Constantine;SP,E.Dijkstra,N.Wirth等面向数据结构的方法Jackson(M.A. Jackson)LCP (J.D. Warnier)面向功能的方法HIPO(IBM)面向对象的方法Coad/Yourdon(P.Coad/E.Yourdon)OMT(J.Rumbaugh)Bo

44、och(G.Booch)OOSE(I.Jacobson)UML (统一建模语言)形式化方法VDM(C.B. Jones)Z语言(J.M. Spivey)1.3.2 1.3.2 方法和技术方法和技术输出输入n面向数据流的方法面向数据流的方法结构化方法(结构化方法(SA-SD-SP)用抽象模型的概念,按照软件用抽象模型的概念,按照软件内部数据传递、变换的关系,内部数据传递、变换的关系,自顶向下逐层分解,直到找到自顶向下逐层分解,直到找到满足功能需要的所有可实现的满足功能需要的所有可实现的软件为止。软件为止。主要的手段是抽象与分解,表主要的手段是抽象与分解,表现形式是数据流图现形式是数据流图DFD、

45、数据、数据字典和加工说明;结构图;程字典和加工说明;结构图;程序流程图、序流程图、NS图、图、PAD图或图或伪码。伪码。变换软件模型软件模型XX系统输出变换输入1.3.2 1.3.2 方法和技术方法和技术n面向数据结构的方法面向数据结构的方法Jackson 和和LCP的主要思想的主要思想把程序看成数据;把数据解释成程序把程序看成数据;把数据解释成程序数据结构对于处理信息的算法和功效都有影响数据结构对于处理信息的算法和功效都有影响许多应用领域存在明确的层次的信息结构许多应用领域存在明确的层次的信息结构信息结构出色地揭示了软件结构,选择、重复和层信息结构出色地揭示了软件结构,选择、重复和层次的数据

46、结构与软件结构有对应关系次的数据结构与软件结构有对应关系主张:对于一个以计算机为基础的系统来说,主张:对于一个以计算机为基础的系统来说,内在的数据结构的标识是至关重要的,可以利内在的数据结构的标识是至关重要的,可以利用输入输出数据结构来推导程序的结构及其细用输入输出数据结构来推导程序的结构及其细节。节。1.3.2 1.3.2 方法和技术方法和技术面向数据结构的方法的面向数据结构的方法的基本步骤基本步骤评价数据结构的特性;评价数据结构的特性;把数据依次表示成如顺把数据依次表示成如顺序、选择和重复的基本序、选择和重复的基本形式;形式;数据结构映射成软件的数据结构映射成软件的控制层次;控制层次;利用

47、方法中的指导原则利用方法中的指导原则来细化软件层次;来细化软件层次;最终开发软件的过程性最终开发软件的过程性描述。描述。Problem environmentData structureTask to be performedReading and writingProgram structureExecution operationProgramJackson方法步骤1.3.2 1.3.2 方法和技术方法和技术n面向功能的方法面向功能的方法HIPO(1974,IBM)的主要思的主要思想想自顶向下,逐层分解自顶向下,逐层分解以功能、功能完备性准则进以功能、功能完备性准则进行分解行分解着眼点在于

48、分析着眼点在于分析表现方式表现方式直观目录表(直观目录表(H图):功能图):功能层次图。层次图。概要概要IPO图:与图:与H图中的一图中的一个功能相对应。个功能相对应。详细详细IPO图:进一步指明图:进一步指明“I-P-O”之间的关系。之间的关系。XX系统1.31.21.11.1.11.1.21.11.1.1记录销售明细1.1.2更新库存销售明细库存文件销售明细库存文件I P O图H图1.3.2 1.3.2 方法和技术方法和技术n面向对象的方法面向对象的方法OO(Object-Oriented)主要的观点主要的观点以对象(以对象(Object)为中心。任何事物都是对象,客观世为中心。任何事物都

49、是对象,客观世界是由各种对象组成的,复杂的对象由简单的对象组界是由各种对象组成的,复杂的对象由简单的对象组成,整体由部分组成。成,整体由部分组成。对象可以分类对象可以分类(Class):子类(派生类)和父类(基:子类(派生类)和父类(基类)。每个类或对象都定义(封装)了一组数据和方类)。每个类或对象都定义(封装)了一组数据和方法,数据用于表示对象的静态属性,描述对象的状态法,数据用于表示对象的静态属性,描述对象的状态信息;方法是对象所能执行的操作即类中所能提供的信息;方法是对象所能执行的操作即类中所能提供的服务。子类可以继承(服务。子类可以继承(Inheritance)父类的属性和方父类的属性

50、和方法。法。1.3.2 1.3.2 方法和技术方法和技术n面向对象的方法面向对象的方法OO主要的观点主要的观点对象之间通过传递消息进行对象之间通过传递消息进行通信通信(Communication with Messages)OO=Objects+Classes+Inheritance+Communication with MessagesOO方法已经形成了方法已经形成了OOA-OOD-OOP一个完整过程,并一个完整过程,并可通过多次迭代而成,企图可通过多次迭代而成,企图使问题空间与解空间在结构使问题空间与解空间在结构上保持一致。上保持一致。类或对象名属性方法一个封装了的类或对象图一个封装了的类

51、或对象图1.3.2 1.3.2 方法和技术方法和技术n形式化方法形式化方法一个形式化的软件开发方法要向使用者提供一一个形式化的软件开发方法要向使用者提供一套思维方法和描述、开发手段,如规范的原则、套思维方法和描述、开发手段,如规范的原则、程序开发的一般过程、描述语言等,使开发者程序开发的一般过程、描述语言等,使开发者能利用数学概念和表示方法恰当合理地构造形能利用数学概念和表示方法恰当合理地构造形式规范,根据开发过程的框架及设计原则进行式规范,根据开发过程的框架及设计原则进行规范描述和系统化的设计,并使用证明的概念规范描述和系统化的设计,并使用证明的概念对规范的性质和设计步骤进行分析和验证。方对

52、规范的性质和设计步骤进行分析和验证。方法还应辅以工具支持环境,使开发过程可行而法还应辅以工具支持环境,使开发过程可行而且高效。且高效。1.3.2 1.3.2 方法和技术方法和技术n形式化方法的例子形式化方法的例子VDM(Vienaa Development Method,IBM 1973 创建。创建。主要贡献者:主要贡献者:D.BjrnerD.Bjrner、C.B. JonesC.B. Jones等等) )是一种是一种基于形式语义的形式化开发方法,其元语言基于形式语义的形式化开发方法,其元语言Meta-Meta-是建是建立于指称语义基础上的规范描述语言。立于指称语义基础上的规范描述语言。RAI

53、SE(Rigorous Approach to Industrial Software Engineering)的形式化方法的几个主要阶段:的形式化方法的几个主要阶段:形式化分析:根据用户需求得到最初的规格说明,用形式化分析:根据用户需求得到最初的规格说明,用RSLRSL( RAISE Specication Language)RAISE Specication Language)描述。描述。形式化设计:从最初的规格说明逐步演变到最终的规形式化设计:从最初的规格说明逐步演变到最终的规格说明。每经过一步规格说明都会更为具体,但与最格说明。每经过一步规格说明都会更为具体,但与最初的规格说明保持一致

54、。初的规格说明保持一致。翻译:将最终的规格说明转换为计算机上可执行的程翻译:将最终的规格说明转换为计算机上可执行的程序。序。RAISERAISE中可翻译为中可翻译为Ada/C+Ada/C+程序。程序。1.3.2 1.3.2 方法和技术方法和技术1.3.3 1.3.3 工具和环境工具和环境n软件工具软件工具软件工具是指这样一类程序,它可以用来帮助软件工具是指这样一类程序,它可以用来帮助软件项目开发过程中某些阶段或某个环节实现软件项目开发过程中某些阶段或某个环节实现软件过程自动化,从而提高软件的劳动生产率软件过程自动化,从而提高软件的劳动生产率和质量、缩短软件开发周期、降低软件生产成和质量、缩短软

55、件开发周期、降低软件生产成本。有时,人们称其为本。有时,人们称其为“帮助开发软件的软帮助开发软件的软件件”。按其功能大致可分为:需求分析工具、设计工按其功能大致可分为:需求分析工具、设计工具、实现工具、测试工具、维护工具、项目管具、实现工具、测试工具、维护工具、项目管理工具、配置管理工具等。理工具、配置管理工具等。 (1 1)需求分析工具)需求分析工具用以辅助系统分析员生成完整、正确、一致用以辅助系统分析员生成完整、正确、一致的需求说明,改善软件开发人员之间的通信的需求说明,改善软件开发人员之间的通信状况。状况。例如,具有代表性的有例如,具有代表性的有19771977年美国密执安大学研制的年美

56、国密执安大学研制的ISDOSISDOS(Information System Design and Information System Design and Optimization SystemOptimization System)中用于需求分析的工具)中用于需求分析的工具PSL/PSAPSL/PSA(Problem Statement Language/Problem Problem Statement Language/Problem Statement AnalyzerStatement Analyzer)。)。1.3.3 1.3.3 工具和环境工具和环境又如,美国又如,美国TRW

57、TRW公司研制的公司研制的SREM SREM (Software Software Requirements Engineering Methodology)Requirements Engineering Methodology)中的中的R S L / R E V SR S L / R E V S ( R e q u i r e m e n t s S t a t e m e n t R e q u i r e m e n t s S t a t e m e n t Language/Requirements Engineering and Language/Requirements Eng

58、ineering and Validation SystemValidation System)。)。又如,又如,SybaseSybase公司生产的公司生产的S-Designor ProcessAnlystS-Designor ProcessAnlyst可以辅助分析人员利用面向数据流的方法如可以辅助分析人员利用面向数据流的方法如Gane & Gane & SarsonSarson、Yourdon/DeMarcoYourdon/DeMarco、SSADM (Structured SSADM (Structured System Analysis and Design Method

59、ology) System Analysis and Design Methodology) 、 以以及及OMTOMT(一种(一种object-oriented methodobject-oriented method)中的)中的functional modelfunctional model。它可以生成。它可以生成RTFRTF格式的文档。格式的文档。1.3.3 1.3.3 工具和环境工具和环境(2 2)设计工具)设计工具用来进行系统设计,形成设计规格说明,检查用来进行系统设计,形成设计规格说明,检查并排除规格说明中的错误。并排除规格说明中的错误。如美国如美国HughesHughes飞机公司飞

60、机公司8080年代初开发的年代初开发的AIDESAIDES(Automated Interactive Design and Evaluation Automated Interactive Design and Evaluation SystemSystem)系统,它可以辅助设计人员用结构化设计方)系统,它可以辅助设计人员用结构化设计方法以交互方式对软件系统作模块分解,从而得到系统法以交互方式对软件系统作模块分解,从而得到系统的结构图及相应的设计文档和报告,并可对设计质量的结构图及相应的设计文档和报告,并可对设计质量作定量分析和评价。作定量分析和评价。1.3.3 1.3.3 工具和环境工具和环境又如,日立公

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论