软件工程的内容和方法_第1页
软件工程的内容和方法_第2页
软件工程的内容和方法_第3页
软件工程的内容和方法_第4页
软件工程的内容和方法_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

1、实用软件工实用软件工程程(第第3版版)第第1章章 软件工程的内容与方法软件工程的内容与方法 本章对软件、软件工程、软件工程学科体系、软本章对软件、软件工程、软件工程学科体系、软件工程课程进行了定义。件工程课程进行了定义。 本章提出了本章提出了“面向面向过程过程方法、面向方法、面向对象对象方法、面方法、面向向元数据元数据方法、方法、形式化形式化方法方法”的的软件工程方法论软件工程方法论,以及以及“面向面向流程流程分析、面向分析、面向元数据元数据设计、面向设计、面向对对象象实现、面向实现、面向功能功能测试、面向测试、面向过程过程管理管理”的的“五五个面向个面向”软件工程实践论软件工程实践论。 本章

2、还简介了本章还简介了ISO9001、CMMI、软件企业文化、软件企业文化、信息系统的定义与案例分析。信息系统的定义与案例分析。 本章既是软件工程课程的绪论,又是软件工程课本章既是软件工程课程的绪论,又是软件工程课程的总结。程的总结。 第第1章章 学习要求学习要求要要 求求具具 体体 内内 容容了了 解解 1 1)软件与软件危机)软件与软件危机 2 2)软件工程的定义与作用)软件工程的定义与作用 3 3)软件工程研究的内容)软件工程研究的内容理理 解解 1 1)软件工程方法论)软件工程方法论 2 2)软件工程实践论)软件工程实践论 3 3)CMMI、ISO9001、微软企业文化、敏捷文化、微软企

3、业文化、敏捷文化现象现象关关 注注 1 1)软件工程的最新发展)软件工程的最新发展 2 2)CASE工具与软件工程环境工具与软件工程环境 3 3)软件业务基础平台)软件业务基础平台第第1章章 软件工程的内容与方法软件工程的内容与方法 1.1 软件的定义软件的定义 1.2 软件工程的定义软件工程的定义 1.3 软件工程在软件行业中的应用软件工程在软件行业中的应用 1.4 软件工程方法论软件工程方法论 1.5 软件工程实践论软件工程实践论 1.6 软件支持过程软件支持过程 1.7 软件管理过程软件管理过程 1.8 实例分析实例分析1.1 软件定义软件定义 1计算机硬件与软件计算机硬件与软件 计算机

4、计算机(Computer)由硬件()由硬件(Hardware)和软)和软件(件(Software)组成。)组成。 硬件硬件是看得见、摸得着的电子机械设备块,如机是看得见、摸得着的电子机械设备块,如机箱、主板、硬盘、光盘、箱、主板、硬盘、光盘、U盘、电源、显示器、盘、电源、显示器、键盘、鼠标、打印机、电缆等等。键盘、鼠标、打印机、电缆等等。 软件软件是依附在硬件上面的程序、数据和文档的集是依附在硬件上面的程序、数据和文档的集合,是指挥控制计算机系统(包括硬件和软件)合,是指挥控制计算机系统(包括硬件和软件)工作的神经中枢。工作的神经中枢。 如果将硬件比做人的身体,那么软件就相当于人如果将硬件比做

5、人的身体,那么软件就相当于人的神经中枢和知识才能。的神经中枢和知识才能。 软件分类软件分类 按功能分:按功能分: (1) 系统软件系统软件 ;(2) 支撑软件;支撑软件;(3) 应用软件。应用软件。 按规模分:按规模分: (1) 小型软件小型软件(1-5人年人年); (2) 中型软件中型软件(5-50人年人年) (3) 大型软件大型软件(50人年以上人年以上)。 按工作方式分:按工作方式分: (1) 实时软件;实时软件;(2) 分时软件;分时软件;(3) 交互式软件;交互式软件; (4) 批处理软件;批处理软件;(5) 嵌入式软件。嵌入式软件。 按服务对象分:按服务对象分: (1) 项目软件;

6、项目软件;(2) 产品软件。产品软件。 计算机工程计算机工程(Computer Engineering)由硬件)由硬件工程(工程(Hardware Engineering)和软件工程)和软件工程(Software Engineering)组成。)组成。 硬件工程硬件工程是研究硬件生产和硬件管理的工程科学,是研究硬件生产和硬件管理的工程科学,其内容包括计算机及网络硬件的分析、设计、生其内容包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护。产、采购、验收、安装、培训、维护。 软件工程软件工程是研究软件生产和软件管理的工程科学,是研究软件生产和软件管理的工程科学,其内容包括市场调

7、研、正式立项、需求分析、项其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、实施、运行、产品发布、用户培训、产品复制、实施、系统维护、版本升级。系统维护、版本升级。 【例例1-1】请读者规划、设计、安装一个校园网。请读者规划、设计、安装一个校园网。这是一个硬件工程,工作内容包括:制定设计方这是一个硬件工程,工作内容包括:制定设计方案,网络设备的选型、配置、采购、验货、布线、案,网络设备的选型、配置、采购、验货、布线、安装、调试、运行和交付。在安装和调试中,又安装、调试、运行和交付。在

8、安装和调试中,又要安装和调试许多软件,如网络操作系统、数据要安装和调试许多软件,如网络操作系统、数据库管理系统、教学软件系统、办公自动化系统、库管理系统、教学软件系统、办公自动化系统、防火墙及杀毒软件等。防火墙及杀毒软件等。 由于有这么多软件也需要选型、配置、采购、安由于有这么多软件也需要选型、配置、采购、安装、调试,所以在今天,除了生产硬件的厂商之装、调试,所以在今天,除了生产硬件的厂商之外,纯粹的外,纯粹的“硬件工程硬件工程”几乎不存在,大多数硬几乎不存在,大多数硬件工程都与软件有关,于是就出现了一个新名词件工程都与软件有关,于是就出现了一个新名词“网络工程网络工程”,它是介于硬件工程和软

9、件工程之,它是介于硬件工程和软件工程之间的系统工程,有时也称它为间的系统工程,有时也称它为“系统集成工程系统集成工程”。 2软件定义软件定义 为了弄清软件工程的概念,首先要了解程为了弄清软件工程的概念,首先要了解程序和软件的概念。程序是计算机为完成特序和软件的概念。程序是计算机为完成特定任务而执行的指令的有序集合。站在应定任务而执行的指令的有序集合。站在应用的角度可以更通俗地理解为:用的角度可以更通俗地理解为: 面向过程的程序面向过程的程序 = 算法算法 + 数据结构数据结构 面向对象的程序面向对象的程序 = 对象对象 + 消息消息 面向构件的程序面向构件的程序 = 构件构件 + 构架构架 通

10、常,软件有以下定义:通常,软件有以下定义: 软件软件 = 程序程序 + 数据数据 + 文档文档 这里的这里的“程序程序”,是对计算机任务的处理对象和,是对计算机任务的处理对象和处理规则的描述;这里的处理规则的描述;这里的“文档文档”,是为了理解,是为了理解程序所需的详细描述性资料;这里的程序所需的详细描述性资料;这里的“数据数据”,主要是软件系统赖以运行的初始化数据。主要是软件系统赖以运行的初始化数据。 上述定义来之不易。表上述定义来之不易。表1-3列出了美国人对软件列出了美国人对软件定义的认识过程。直到今天,仍然有少数人认为:定义的认识过程。直到今天,仍然有少数人认为:“软件就等于程序软件就

11、等于程序”。这些人在软件开发的过程。这些人在软件开发的过程中,上来就写程序,而不是写文档。软件工程大中,上来就写程序,而不是写文档。软件工程大师师Roger S Pressman对这些人提出了尖锐的批对这些人提出了尖锐的批评:评:“越早开始写代码的人,就是越迟完成代码越早开始写代码的人,就是越迟完成代码的人的人”。 年年 代代美国人美国人对软件定义的认识对软件定义的认识20世纪世纪50年代年代 软件就等于程序,软件系统就是程序系统软件就等于程序,软件系统就是程序系统20世纪世纪60年代年代 软件等于程序加文档。这里的文档,是指软件开软件等于程序加文档。这里的文档,是指软件开发过程中的分析、设计

12、、实现、测试、维护文档,发过程中的分析、设计、实现、测试、维护文档,还不包括管理文档还不包括管理文档20世纪世纪70年代年代 软件等于程序加文档再加数据,这里的数据不仅软件等于程序加文档再加数据,这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记目工程数据和项目管理数据中的大量决策原始记录数据录数据 至于对管理文档的全面认识,那就更晚了。至于对管理文档的全面认识,那就更晚了。 1974年年,美国人才开始认识到软件需要管

13、理。,美国人才开始认识到软件需要管理。 1984年年,美国人开始认识到软件管理是一个过程,美国人开始认识到软件管理是一个过程管理,或是一个管理过程。管理,或是一个管理过程。 1991年年,出现了软件过程能力成熟度模型,出现了软件过程能力成熟度模型CMM (Capability Maturity Model for Software)1.0版,人们研究了软件过程管理的具体内容与版,人们研究了软件过程管理的具体内容与方法,并将软件开发和管理中产生的各种文档叫方法,并将软件开发和管理中产生的各种文档叫做做“软件工作产品软件工作产品”,而将最后交付给用户使用,而将最后交付给用户使用的软件工作产品叫做的

14、软件工作产品叫做“软件产品软件产品”。 1996年年,出现了统一建模语言,出现了统一建模语言UML 0.9版,称软版,称软件管理文档为件管理文档为“管理制品管理制品”,称软件开发文档为,称软件开发文档为“技术制品技术制品”,两者合称为,两者合称为“制品制品(Artifact)”。 3文档的重要性文档的重要性 文档在软件工程中特别重要,文档是否规范与齐文档在软件工程中特别重要,文档是否规范与齐全,是衡量软件企业是否成熟的重要标志之一。全,是衡量软件企业是否成熟的重要标志之一。 软件文档分为软件文档分为开发文档开发文档和和管理文档管理文档两大类。开发两大类。开发文档主要由项目组书写,用于指导软件开

15、发与维文档主要由项目组书写,用于指导软件开发与维护;管理文档主要由软件工程管理部门书写,用护;管理文档主要由软件工程管理部门书写,用于指导软件管理和决策。于指导软件管理和决策。 软件工程规定:软件工程规定:文档必须指挥程序文档必须指挥程序,而决不允许,而决不允许程序指挥文档;文档与程序必须保持高度一致,程序指挥文档;文档与程序必须保持高度一致,而决不允许程序脱离开文档。而决不允许程序脱离开文档。 开发文档本身具有严格的开发文档本身具有严格的层次关系层次关系和和依赖关系依赖关系,这种关系反映在如下的这种关系反映在如下的覆盖关系覆盖关系之中,即有:之中,即有: (1)目标程序目标程序覆盖覆盖源程序

16、源程序; (2)源程序源程序覆盖覆盖详细设计说明书详细设计说明书; (3)详细设计说明书详细设计说明书覆盖覆盖概要设计说明概要设计说明书书; (4)概要设计说明书概要设计说明书覆盖覆盖需求分析规格需求分析规格说明书说明书; (5)需求分析规格说明书需求分析规格说明书覆盖覆盖用户需求用户需求报告报告; (6)用户需求报告用户需求报告覆盖覆盖软件合同软件合同/软软件任务书件任务书。 管理文档本身具有严格的管理文档本身具有严格的时序关系时序关系,这种,这种时序关系反映在如下的软件过程之中,而时序关系反映在如下的软件过程之中,而过程由一系列的时间序列所组成的:过程由一系列的时间序列所组成的: (1)需

17、求分析过程管理文档;)需求分析过程管理文档; (2)软件策划过程管理文档;)软件策划过程管理文档; (3)软件设计过程管理文档;)软件设计过程管理文档; (4)软件实现过程管理文档;)软件实现过程管理文档; (5)软件测试过程管理文档;)软件测试过程管理文档; (6)软件维护过程管理文档;)软件维护过程管理文档; (7)软件过程改进管理文档。)软件过程改进管理文档。 4软件最新定义软件最新定义 软件软件 = 知识知识+程序程序+数据数据+文档文档 定义中增加了定义中增加了“知识知识”。对这一定义的讨。对这一定义的讨论正在进行。论正在进行。 正方正方认为:因为软件是知识在网络上的体认为:因为软件

18、是知识在网络上的体现,所以这个定义非常好。现,所以这个定义非常好。 反方反方认为:程序、数据、文档本身就是知认为:程序、数据、文档本身就是知识的载体与表现,所以这个定义是画蛇添识的载体与表现,所以这个定义是画蛇添足。足。 1.2 软件工程定义软件工程定义 1软件危机软件危机 软件工程来源于软件危机,即先有软件危软件工程来源于软件危机,即先有软件危机,后有软件工程。机,后有软件工程。 二十世纪六十年代中期,在美国就出现了二十世纪六十年代中期,在美国就出现了软件危机(软件危机(Software Crisis),这种危机),这种危机表现在研发大型软件时,软件开发的成本表现在研发大型软件时,软件开发的

19、成本增大、进度延期、维护困难和质量得不到增大、进度延期、维护困难和质量得不到保障。保障。 所谓软件危机,就是在软件开发和维护过所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。程中所遇到一系列难以控制的问题。 2软件工程定义软件工程定义 1993年,权威杂志年,权威杂志IEEE对软件工程的定义对软件工程的定义是:软件工程是将系统化的、严格约束的、是:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和可量化的方法,应用于软件开发、运行和维护中去。维护中去。 2001年,软件工程大师年,软件工程大师Roger S Pressman 对软件工程的定义是:软件工对

20、软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。程是一个过程、一组方法和一系列工具。 由于软件技术是飞速发展的,所以软件工由于软件技术是飞速发展的,所以软件工程的定义也要与时俱进。下面,根据当前程的定义也要与时俱进。下面,根据当前软件技术的进展状况,给出现代软件工程软件技术的进展状况,给出现代软件工程的最新定义。的最新定义。 【定义定义1-1】软件工程是研究软件工程是研究软件开发软件开发和和软件管软件管理理的一门的一门工程学科工程学科。 这里,一是强调开发,二是强调管理,三是强调这里,一是强调开发,二是强调管理,三是强调工程,四是强调学科。工程,四是强调学科。 开发和管理是一个问题

21、的相辅相成的两个方面。开发和管理是一个问题的相辅相成的两个方面。许多软件项目的失败,不是在开发技术上出了问许多软件项目的失败,不是在开发技术上出了问题,而是在管理过程上出了问题。题,而是在管理过程上出了问题。 要将软件的开发当作一项工程,既要按照工程的要将软件的开发当作一项工程,既要按照工程的办法去开发,又要按照工程的办法去管理。办法去开发,又要按照工程的办法去管理。 时至今日,软件工程不只是一门课程,而是一个时至今日,软件工程不只是一门课程,而是一个学科体系,即软件工程知识体系。学科体系,即软件工程知识体系。 3软件工程学科体系软件工程学科体系 软件工程作为一个学科体系,到本世纪初软件工程作

22、为一个学科体系,到本世纪初才初步形成。才初步形成。 2001年年4月月18日,美国发布了软件工程知日,美国发布了软件工程知识体系指南识体系指南SWEBOK(Guide to the Software Engineering Body of Knowledge) 0.95版。版。 2004年,软件工程学科体系的内容才基本年,软件工程学科体系的内容才基本确立,就在这一年,美国确立,就在这一年,美国ACM和和IEEE-CS联合制订联合制订SWEBOK 2004年版,它将软件年版,它将软件工程学科体系的知识划分为如下工程学科体系的知识划分为如下10个知识个知识域:域: (1)软件需求软件需求(Soft

23、ware Requirements)。 软件需求是真实世界问题而必须展示的特性。软件需求是真实世界问题而必须展示的特性。 软件需求知识域有七个子域:需求基础、需软件需求知识域有七个子域:需求基础、需求过程、需求获取、需求分析、需求规格说求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。明、需求确认和实践考虑。 (2 )软件设计软件设计(Software Design)。 软件设计既是定义一个系统的体系结构、软件设计既是定义一个系统的体系结构、组件、接口和其他特征的过程,又是这个组件、接口和其他特征的过程,又是这个过程的结果。过程的结果。 软件设计知识域有六个子域:软件设计基软件设计

24、知识域有六个子域:软件设计基础、软件设计关键问题、软件结构与体系础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。设计符号、软件设计的策略与方法。 (3)软件构造软件构造( Software Construction)。 它指通过编码、验证、单元测试、集成测它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作试和排错的组合,具体创建一个可以工作的、有意义的软件。的、有意义的软件。 其知识域有三个子域:软件构造基础、管其知识域有三个子域:软件构造基础、管理构造、实际考虑。理构造、实际考虑

25、。 (4)软件测试软件测试(Software Testing)。 它是由在有限测试用例集合上,根据期望它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组的行为,对程序的行为进行的动态验证组成,成, 测试用例是实际上无限的执行域中适测试用例是实际上无限的执行域中适当选择出来的。当选择出来的。 软件测试域有五个子域:软件测试基础和软件测试域有五个子域:软件测试基础和测试级别、测试技术、需求分析、与测试测试级别、测试技术、需求分析、与测试相关的度量、测试过程。相关的度量、测试过程。 (5)软件维护软件维护(Software Maintenance)。 软件一旦投入运行,就可能出

26、现异常,运软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出新的需行环境可能发生改变,用户会提出新的需求。求。 生命周期软件维护,从软件交付时开始。生命周期软件维护,从软件交付时开始。软件维护的知识域有四个子域:软件维护软件维护的知识域有四个子域:软件维护基础、软件维护的关键问题、维护过程、基础、软件维护的关键问题、维护过程、维护技术。维护技术。 (6)软件配置管理软件配置管理(Software Configuration Management)。 软件配置是为了系统地控制配置的变更和软件配置是为了系统地控制配置的变更和维护在整个系统生命周期中的完整性及可维护在整个系统生命周期

27、中的完整性及可追踪性,而标志软件在时间上不同点的配追踪性,而标志软件在时间上不同点的配置的学科。置的学科。 软件配置管理域有六个子域:软件配置管软件配置管理域有六个子域:软件配置管理过程管理、软件配置标志、软件配置控理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、制、软件配置状态统计、软件配置审核、软件发行管理和交付。软件发行管理和交付。 (7)软件工程管理软件工程管理(Software Engineering Management)。 处理软件工程的管理与度量,虽然度量是处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉所有知识域的一个重要方面,

28、但是这里涉及的是度量程序的专题。及的是度量程序的专题。 软件工程管理域有六个子域:启动和范围软件工程管理域有六个子域:启动和范围定义、软件项目计划、软件项目实施、评定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。前五个审与评价、关闭、软件工程度量。前五个覆盖软件过程工程管理,第六个描述软件覆盖软件过程工程管理,第六个描述软件度量的程序。度量的程序。 (8)软件工程过程软件工程过程(Software Engineering Process)。 涉及软件工程过程本身的定义、实现、评涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进。定、度量、管理、变更和改进。 软件工

29、程过程域有四个子域:过程实施与软件工程过程域有四个子域:过程实施与改变、过程定义、过程评定、过程和产品改变、过程定义、过程评定、过程和产品度量。度量。 (9)软件工程工具和方法软件工程工具和方法(Software Engineering Tool and Method)。 有软件工程工具、软件工程方法两个子域。有软件工程工具、软件工程方法两个子域。 (10)软件质量软件质量(Software Quality)。 处理跨越软件生命周期过程的软件质量的考虑,处理跨越软件生命周期过程的软件质量的考虑,由于软件质量在软件工程中无处不在,其他知识由于软件质量在软件工程中无处不在,其他知识域也涉及质量问题

30、。域也涉及质量问题。 软件质量域有三个子域:软件质量基础、软件质软件质量域有三个子域:软件质量基础、软件质量过程、实践考虑。量过程、实践考虑。 在上述软件工程学科体系中,在上述软件工程学科体系中,前五个知识域是讲前五个知识域是讲软件开发软件开发,后五个知识域是讲软件管理后五个知识域是讲软件管理。由此可。由此可见,软件工程知识体系包括软件开发和软件管理见,软件工程知识体系包括软件开发和软件管理两大部分,所以软件工程的定义也应该包括软件两大部分,所以软件工程的定义也应该包括软件开发和软件管理两项内容。开发和软件管理两项内容。 4软件工程课程研究的内容软件工程课程研究的内容 软件工程课程与软件工程学

31、科体系是有区软件工程课程与软件工程学科体系是有区别的:前者是一门课程,或是大学的软件别的:前者是一门课程,或是大学的软件工程教科书,后者是一个知识体系;前者工程教科书,后者是一个知识体系;前者是一个局部,后者是一个整体。是一个局部,后者是一个整体。 作为一门软件工程课程,它的研究的内容作为一门软件工程课程,它的研究的内容至今没有统一的说法。可以这么认为,软至今没有统一的说法。可以这么认为,软件工程课程研究的内容,应该涵盖件工程课程研究的内容,应该涵盖“软件软件生命周期模型、软件开发方法、软件支持生命周期模型、软件开发方法、软件支持过程、软件管理过程过程、软件管理过程”这四个方面,如表这四个方面

32、,如表1-4所示。所示。 序号序号研究方面研究方面具体内容具体内容1软件生命周期模型软件生命周期模型 如:瀑布模型、增量模型、原型模型、如:瀑布模型、增量模型、原型模型、迭代模型、迭代模型、XP模型模型2软件开发方法软件开发方法 如:面向过程的方法、面向元数据的如:面向过程的方法、面向元数据的方法、面向对象的方法方法、面向对象的方法3软件支持过程软件支持过程 如:如:CASECASE工具工具RoseRose、北大青鸟系统、北大青鸟系统、Power DesignerPower Designer、ER winER win4软件管理过程软件管理过程 如:如:CMMICMMI、软件企业文化、敏捷、软件

33、企业文化、敏捷(XP)(XP)文化现象文化现象 5软件工程基本原理软件工程基本原理 习惯上,人们常常把软件工程的方法(开习惯上,人们常常把软件工程的方法(开发方法)、工具(支持方法的工具)、过发方法)、工具(支持方法的工具)、过程(管理过程)称为程(管理过程)称为软件工程三要素软件工程三要素。而。而把美国著名的软件工程专家把美国著名的软件工程专家B.W Boehm于于1983年提出的年提出的7条原理条原理,作为软件工程的,作为软件工程的基本原理。基本原理。 (1)用分阶段的生命周期计划严格管理软)用分阶段的生命周期计划严格管理软件开发。阶段划分为计划、分析、设计、件开发。阶段划分为计划、分析、

34、设计、编程、测试和运行维护。编程、测试和运行维护。 (2)坚持进行阶段评审。上一阶段评审不通过,)坚持进行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发。就不能进入下一阶段开发。 (3)实行严格的产品版本控制。)实行严格的产品版本控制。 (4)采用现代程序设计技术。)采用现代程序设计技术。 (5)结果应能清楚地审查。因此,对文档要有)结果应能清楚地审查。因此,对文档要有严格要求。严格要求。 (6)开发小组的成员要少而精。)开发小组的成员要少而精。 (7)要不断地改进软件工程实践的经验和技术,)要不断地改进软件工程实践的经验和技术,要与时俱进。要与时俱进。 上述七条原理,虽然是在面向过程的

35、程序设计时上述七条原理,虽然是在面向过程的程序设计时代(结构化时代)提出来的。但是,直到今天,代(结构化时代)提出来的。但是,直到今天,在面向元数据和面向对象的程序设计新时代,它在面向元数据和面向对象的程序设计新时代,它仍然有效。仍然有效。 根据根据“与时俱进与时俱进”的原则,还有一条基本原理在的原则,还有一条基本原理在软件的开发和管理中特别重要,需要补充进去,软件的开发和管理中特别重要,需要补充进去,作为软件工程的第八条基本原理。作为软件工程的第八条基本原理。 (8)二八定律二八定律。对软件项目进度和工作量的估。对软件项目进度和工作量的估计:一般人主观上认为已经完成了计:一般人主观上认为已经

36、完成了80%,但实际,但实际上只完成了上只完成了20%;对程序中存在问题的估计:;对程序中存在问题的估计:80%的问题存在于的问题存在于20%的程序之中;对模块功能的程序之中;对模块功能的估计:的估计:20%的模块,实现了的模块,实现了80%的功能;对人的功能;对人力资源的估计:力资源的估计:20%的人,解决了软件中的人,解决了软件中80%的的问题;对投入资金的估计:企业信息系统中问题;对投入资金的估计:企业信息系统中80%的问题,可以用的问题,可以用20%的资金来解决。的资金来解决。 研究二八定律的现实意义,在于指导软件研究二八定律的现实意义,在于指导软件开发计划的制订与执行。开发计划的制订

37、与执行。 如果事先掌握了二八定律,就能自觉地用如果事先掌握了二八定律,就能自觉地用二八定律去制订、跟踪与执行软件开发计二八定律去制订、跟踪与执行软件开发计划。划。 也就是说,计划中要用开始的也就是说,计划中要用开始的20%时间,时间,去完成去完成80%的开发进度;剩下的开发进度;剩下20%的进度,的进度,要留下要留下80%的时间去完成。只有这样,项的时间去完成。只有这样,项目的开发计划与项目的开发进度才能吻合。目的开发计划与项目的开发进度才能吻合。 6软件工程在中国软件工程在中国 1982年,软件工程的创始人、美藉华人叶祖尧博年,软件工程的创始人、美藉华人叶祖尧博士士,带着自己开创的带着自己开

38、创的“软件工程学软件工程学”理论来到中国,理论来到中国,成为当时中国政府计算机领导小组的顾问。成为当时中国政府计算机领导小组的顾问。 1984年,国家科委在北京召开年,国家科委在北京召开“软件工程软件工程”大会。大会。会议其间,国防科技大学陈火旺院士与孟庆余教会议其间,国防科技大学陈火旺院士与孟庆余教授,宴请了美国软件工程专家叶祖尧博士。席间,授,宴请了美国软件工程专家叶祖尧博士。席间,时任美国马里兰大学计算机系主任的叶祖尧博士时任美国马里兰大学计算机系主任的叶祖尧博士说:说:“软件工程,只有你们长沙软件工程,只有你们长沙(国防科技大学国防科技大学)并行机的研究搞的最好!并行机的研究搞的最好!

39、” 巨型机银河机系列与天河机系列的历史证明:叶巨型机银河机系列与天河机系列的历史证明:叶祖尧的话是对的祖尧的话是对的。1.3 软件工程作用软件工程作用 软件工程是软件行业的一门管理科学,也软件工程是软件行业的一门管理科学,也是系统分析员和项目经理以上人员必备的是系统分析员和项目经理以上人员必备的一种领导艺术,为了将我国的软件产业搞一种领导艺术,为了将我国的软件产业搞上去,使软件产业成为国民经济的支柱产上去,使软件产业成为国民经济的支柱产业,使中国早日成为一个软件大国与软件业,使中国早日成为一个软件大国与软件强国,对于软件工程的作用,在软件界怎强国,对于软件工程的作用,在软件界怎么强调也不过分。

40、么强调也不过分。 为了说明软件工程的作用,先来看一个例为了说明软件工程的作用,先来看一个例子。子。 【例例1-3】20世纪世纪90年代初,有两个软件团年代初,有两个软件团队,一个较大(队,一个较大(10多人),一个较小(多人),一个较小(6人),都在开发财务系统。人),都在开发财务系统。 烟台的较大的那个团队,工作不规范,没烟台的较大的那个团队,工作不规范,没有文档,没有评审,也没有团队协作精神,有文档,没有评审,也没有团队协作精神,结果开发出来的产品可维护性差,没有打结果开发出来的产品可维护性差,没有打开市场,没有产生经济效益和社会效益,开市场,没有产生经济效益和社会效益,致使产品与团队最后

41、同归于尽。致使产品与团队最后同归于尽。 北京的较小的那个团队,同舟共济,工作北京的较小的那个团队,同舟共济,工作规范,有正规文档,有阶段评审,分工明规范,有正规文档,有阶段评审,分工明确:确: 一人负责原始凭证和输出报表的收集、归类和整一人负责原始凭证和输出报表的收集、归类和整理,这实际上是做需求分析;一人负责科目和数理,这实际上是做需求分析;一人负责科目和数据字典(代码表),这实际上是做信息的标准化据字典(代码表),这实际上是做信息的标准化与规范化;一人负责记账凭证的录入和修改,这与规范化;一人负责记账凭证的录入和修改,这实际上是做数据库的设计和加载工作;一人负责实际上是做数据库的设计和加载

42、工作;一人负责日记账、明细账和总账之间的平衡与对账,这实日记账、明细账和总账之间的平衡与对账,这实际上是做数据处理;一人负责统计、报表和查询,际上是做数据处理;一人负责统计、报表和查询,这实际上是做数据输出工作;一人负责总体设计这实际上是做数据输出工作;一人负责总体设计和项目管理,这就是项目经理的工作。和项目管理,这就是项目经理的工作。 较小的那个团队,后来发展成为巨大的较小的那个团队,后来发展成为巨大的用友软件用友软件公司公司。 因为软件工程来自于软件企业,又服务于因为软件工程来自于软件企业,又服务于软件企业,所以讨论它的作用,主要是讨软件企业,所以讨论它的作用,主要是讨论它在软件企业中的作

43、用。论它在软件企业中的作用。 从历史上讲从历史上讲,软件工程的作用,是为了克,软件工程的作用,是为了克服上个世纪服上个世纪60年代出现的软件危机。年代出现的软件危机。 从当前来讲从当前来讲,软件工程的作用,就是告诉,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。具体地人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人讲,它表现在与软件开发和管理有关的人员和过程上。为了说明这个问题,首先,员和过程上。为了说明这个问题,首先,来分析一下软件企业的人才结构,看看这来分析一下软件企业的人才结构,看看这些人员的工作与软件工程有什么关系。些人员的工作与软件工程有什么关系。 (

44、1)高层管理人员高层管理人员。他们应具备的基本条件是:。他们应具备的基本条件是:软件专业宏观知识、软件工程管理知识,加上商软件专业宏观知识、软件工程管理知识,加上商业与资本运作知识。他们要用软件工程的理论和业与资本运作知识。他们要用软件工程的理论和方法,来管理整个公司的软件业务。方法,来管理整个公司的软件业务。 (2)中层项目经理和软件工程师中层项目经理和软件工程师。他们应具备。他们应具备的基本条件是:系统分析知识、系统设计知识,的基本条件是:系统分析知识、系统设计知识,加上项目管理知识。他们要用软件工程的理论和加上项目管理知识。他们要用软件工程的理论和方法,来管理项目组的软件开发。他们的个人

45、奋方法,来管理项目组的软件开发。他们的个人奋斗目标是软件管理专家、分析设计专家、开发技斗目标是软件管理专家、分析设计专家、开发技术专家。这两部分人员,他们是软件工程的拥有术专家。这两部分人员,他们是软件工程的拥有者和实践者。者和实践者。 (3)软件蓝领工人软件蓝领工人。他们应具备的基本条件是:。他们应具备的基本条件是:掌握阅读文档的技能、程序设计的技巧,加上软掌握阅读文档的技能、程序设计的技巧,加上软件测试的知识。他们要用软件工程的理论和方法,件测试的知识。他们要用软件工程的理论和方法,来实现软件项目的软件功能、性能、接口、界面。来实现软件项目的软件功能、性能、接口、界面。 (4)软件营销人员

46、软件营销人员。他们应具备的基本条件是:。他们应具备的基本条件是:营销知识、售前知识,加上软件工程基本知识。营销知识、售前知识,加上软件工程基本知识。他们要用软件工程的基本思路,来与客户进行沟他们要用软件工程的基本思路,来与客户进行沟通,以赢得客户的信任。通,以赢得客户的信任。 (5)软件实施和维护人员软件实施和维护人员。他们应具备的基本。他们应具备的基本条件是:软件客户化及安装、运行、维修技术。条件是:软件客户化及安装、运行、维修技术。他们要用软件工程的基本方法,来实现软件功能、他们要用软件工程的基本方法,来实现软件功能、性能与接口的实施和维护。性能与接口的实施和维护。 (6)软件售前人员软件

47、售前人员。他们是软件公司的产品形。他们是软件公司的产品形象代表,其奋斗目标是:既要成为某个行业领域象代表,其奋斗目标是:既要成为某个行业领域的产品专家,又要成为该产品的实现顾问。只有的产品专家,又要成为该产品的实现顾问。只有这样,他们才能看懂招标书、写好投标书、讲好这样,他们才能看懂招标书、写好投标书、讲好投标书。投标书。 在制作和宣讲投标书的过程中,有许多与软件工在制作和宣讲投标书的过程中,有许多与软件工程相关的知识和内容,如项目开发方法、开发工程相关的知识和内容,如项目开发方法、开发工具、开发环境、运行环境、管理方法、质量和进具、开发环境、运行环境、管理方法、质量和进度控制方法,只有把这些

48、方法写清讲透,用户才度控制方法,只有把这些方法写清讲透,用户才能相信认可,投标才有成功把握。这些知识和内能相信认可,投标才有成功把握。这些知识和内容,离不开软件工程知识的学习和教育。容,离不开软件工程知识的学习和教育。 从软件项目团队来讲从软件项目团队来讲,软件工程的作用在于:在,软件工程的作用在于:在规定的时间内,按照规定的成本,完成预期质量规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标目标(软件的功能、性能和接口达到需求报告标准)的软件。准)的软件。 从软件企业本身来讲从软件企业本身来讲,软件工程的作用在于:持,软件工程的作用在于:持续地规范软件开发过

49、程和软件管理过程,不断地续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。增强软件企业的市场竞争实力。 从软件大国与强国来讲从软件大国与强国来讲,软件工程的作用在于:,软件工程的作用在于:它在一个国家的计算机界及软件界的普及与推广,它在一个国家的计算机界及软件界的普及与推广,可以使这一个国家变为一个软件大国,进而变为可以使这一个国家变为一个软件大国,进而变为一个软件强国。一个软件强国。 从软件发展进程来讲从软件发展进程来讲,软件工程的作用在,软件工程的作用在于:克服软件危机,控制软件进度,节

50、约于:克服软件危机,控制软件进度,节约开发成本,提高软件质量。开发成本,提高软件质量。 从软件开发的前景来讲从软件开发的前景来讲,由于软件开发的,由于软件开发的前景如同开发大海与开发蓝天,潜力无限前景如同开发大海与开发蓝天,潜力无限无垠,所以软件工程的前景也无限无垠。无垠,所以软件工程的前景也无限无垠。由于软件工程的作用越来越大,它的地位由于软件工程的作用越来越大,它的地位也越来越高。以前,软件工程只是作为一也越来越高。以前,软件工程只是作为一门课程或一本书。现在,它作为一个学科门课程或一本书。现在,它作为一个学科体系,设立了软件工程专业和软件工程学体系,设立了软件工程专业和软件工程学位,产生

51、了有软件工程硕士和博士学位。位,产生了有软件工程硕士和博士学位。 1.4 软件工程方法论软件工程方法论1.4.1 软件工程方法论的提出软件工程方法论的提出 长期以来,人们将软件开发方法与软件生命周期长期以来,人们将软件开发方法与软件生命周期模型混为一体,甚至将软件开发方法与软件过程模型混为一体,甚至将软件开发方法与软件过程改进模型也混为一体,因而误认为软件生命周期改进模型也混为一体,因而误认为软件生命周期模型或软件过程改进模型就是软件开发方法。模型或软件过程改进模型就是软件开发方法。 例如,他们将迭代模型例如,他们将迭代模型RUP(Rational Unified Process)和过程改善模

52、型和过程改善模型CMMI(Capability Maturity Model Integration)误认为是软件开发误认为是软件开发方法或软件工程方法论,这就是有力的证据。方法或软件工程方法论,这就是有力的证据。 事实上,软件开发方法与软件生命周期模型是不事实上,软件开发方法与软件生命周期模型是不同的,软件开发方法与软件过程改进模型就更不同的,软件开发方法与软件过程改进模型就更不相同了。相同了。软件开发方法学来自于程序设计语言方软件开发方法学来自于程序设计语言方法学法学,而软件生命周期模型或软件过程改进模型而软件生命周期模型或软件过程改进模型与程序设计语言方法学无关与程序设计语言方法学无关。

53、 【定义定义1-2】软件生命周期模型是指在整个软件软件生命周期模型是指在整个软件生命周期中,软件开发过程应遵循的生命周期中,软件开发过程应遵循的开发路线图开发路线图。或者说,软件生命周期模型是软件开发全部过程、或者说,软件生命周期模型是软件开发全部过程、活动和任务的结构框架。活动和任务的结构框架。 例如,瀑布模型、增量模型、螺旋模型、喷泉模例如,瀑布模型、增量模型、螺旋模型、喷泉模型、型、XP模型、原型模型和模型、原型模型和RUP迭代模型,它们迭代模型,它们都有各自清晰的开发路线图,规定了各自的开发都有各自清晰的开发路线图,规定了各自的开发过程、活动和任务的结构框架。过程、活动和任务的结构框架

54、。 【定义定义1-3】软件开发方法是指在软件开发路线图软件开发方法是指在软件开发路线图中,开发人员对软件需求、设计、实现、维护所采中,开发人员对软件需求、设计、实现、维护所采用的开发思想、开发技术、描述方法、支持工具等。用的开发思想、开发技术、描述方法、支持工具等。 在软件工程方法学方面,大体可分为程序设计方法在软件工程方法学方面,大体可分为程序设计方法学和软件开发方法学,前者是关于小规模程序的设学和软件开发方法学,前者是关于小规模程序的设计方法学,后者是关于大规模软件的开发方法学。计方法学,后者是关于大规模软件的开发方法学。 在程序设计方法学中最基本的方法有:有面向过程在程序设计方法学中最基

55、本的方法有:有面向过程程序设计方法,面向对象程序设计方法,面向元数程序设计方法,面向对象程序设计方法,面向元数据(据(Meta-data)程序设计方法。)程序设计方法。 在软件开发方法学中最基本的方法有:有面向过程在软件开发方法学中最基本的方法有:有面向过程方法、面向对象方法、面向元数据方法、形式化方方法、面向对象方法、面向元数据方法、形式化方法,它们就是软件开发方法,它们都有各自的开发法,它们就是软件开发方法,它们都有各自的开发思想、开发技术、描述方法、支持工具等。思想、开发技术、描述方法、支持工具等。 1.4.2 面向过程方法面向过程方法 面向过程方法面向过程方法(Procedure-or

56、iented method),来自于面向过程的程序设计语,来自于面向过程的程序设计语言,如汇编语言、言,如汇编语言、C语言。语言。 面向过程方法包括面向过程需求分析、面面向过程方法包括面向过程需求分析、面向过程设计、面向过程编程、面向过程测向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。试、面向过程维护、面向过程管理。 【定义定义1-4】软件工程中软件开发方法的集软件工程中软件开发方法的集合,称为合,称为软件工程方法论软件工程方法论。 现在的问题是:到目前为止,软件工程方现在的问题是:到目前为止,软件工程方法论中,到底包括哪几种最基本的软件开法论中,到底包括哪几种最基本的软

57、件开发方法?这几种开发方法,到底存在什么发方法?这几种开发方法,到底存在什么关系?下面将回答这些问题。关系?下面将回答这些问题。 面向过程方法,习惯上称为传统软件工程面向过程方法,习惯上称为传统软件工程开发方法,或结构化方法。开发方法,或结构化方法。 它包括结构化分析、结构化设计、结构化它包括结构化分析、结构化设计、结构化编程、结构化测试、结构化维护。面向过编程、结构化测试、结构化维护。面向过程的方法,有时又称面向功能的方法,即程的方法,有时又称面向功能的方法,即面向功能分析、面向功能设计、面向功能面向功能分析、面向功能设计、面向功能编程、面向功能测试、面向功能维护。编程、面向功能测试、面向功

58、能维护。 由此可见,面向过程方法、面向功能方法、由此可见,面向过程方法、面向功能方法、结构化方法,三者是同一个意思。结构化方法,三者是同一个意思。 曾经出现过的面向过程方法有:曾经出现过的面向过程方法有: (1).面向结构化数据系统的开发方法面向结构化数据系统的开发方法DSSD(Data Structured Systems Development);); (2).面向可维护性和可靠性设计的面向可维护性和可靠性设计的Parnas方法;方法; (3).面向数据结构设计的面向数据结构设计的Jackson方法;方法; (4).面向问题设计的面向问题设计的PAM方法;方法; (5).面向数据流方法。面

59、向数据流方法。 上述五种方法的详细内容,利用百度或上述五种方法的详细内容,利用百度或Google搜索,都可以在网上查到。搜索,都可以在网上查到。 但是,不管在方法名字上如何称呼,这五种方法但是,不管在方法名字上如何称呼,这五种方法在宏观上都属于面向过程方法,支持这些方法的在宏观上都属于面向过程方法,支持这些方法的是面向过程的结构化编程语言。是面向过程的结构化编程语言。 面向过程方法,设计时强调面向过程方法,设计时强调模块化模块化的思想,的思想,采用采用“自顶向下,逐步求精自顶向下,逐步求精”的技术对系的技术对系统进行划分,统进行划分,分解和抽象分解和抽象是它的两个基本是它的两个基本手段。手段。

60、 面向过程方法编程时采用面向过程方法编程时采用单入口单出口单入口单出口的的控制结构,并且只包含控制结构,并且只包含顺序、选择和循环顺序、选择和循环三种结构三种结构,目标之一是使程序的控制流程,目标之一是使程序的控制流程线性化,即程序的线性化,即程序的动态执行顺序符合静态动态执行顺序符合静态书写结构书写结构。 在面向过程的五种具体方法中,在面向过程的五种具体方法中,面向数据面向数据流方法最具有代表性流方法最具有代表性。 面向过程的方法,面向过程的方法,来自于来自于20世纪世纪6070年年代流行的面向过程的程序设计语言代流行的面向过程的程序设计语言,例如,例如,ALGOL,PASCAL,BASIC

温馨提示

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

评论

0/150

提交评论