您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第1章软件工程的内容与方法
实用软件工程(第3版)美丽的北师大珠海分校(1)校园黎明静悄悄----赵池龙摄学习与评估1.教材:赵池龙杨林主编著,《实用软件工程(第3版)》,电子工业出版社,2011。2.成绩评估:期末开卷笔试占总成绩的60%左右。平时课堂表现及小考试占总成绩的40%左右。第1章软件工程的内容与方法本章对软件、软件工程、软件工程学科体系、软件工程课程进行了定义。本章提出了“面向过程方法、面向对象方法、面向元数据方法、形式化方法”的软件工程方法论,以及“面向流程分析、面向元数据设计、面向对象实现、面向功能测试、面向过程管理”的“五个面向”软件工程实践论。本章还简介了ISO9001、CMMI、软件企业文化、信息系统的定义与案例分析。本章既是软件工程课程的绪论,又是软件工程课程的总结。1.1软件定义1.计算机硬件与软件计算机(Computer)由硬件(Hardware)和软件(Software)组成。硬件是看得见、摸得着的电子机械设备块,如机箱、主板、硬盘、光盘、U盘、电源、显示器、键盘、鼠标、打印机、电缆等等。软件是依附在硬件上面的程序、数据和文档的集合,是指挥控制计算机系统(包括硬件和软件)工作的神经中枢。如果将硬件比做人的身体,那么软件就相当于人的神经中枢和知识才能。计算机工程(ComputerEngineering)由硬件工程(HardwareEngineering)和软件工程(SoftwareEngineering)组成。硬件工程是研究硬件生产和硬件管理的工程科学,其内容包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护。软件工程是研究软件生产和软件管理的工程科学,其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、实施、系统维护、版本升级。【例1-1】请读者规划、设计、安装一个校园网。这是一个硬件工程,工作内容包括:制定设计方案,网络设备的选型、配置、采购、验货、布线、安装、调试、运行和交付。在安装和调试中,又要安装和调试许多软件,如网络操作系统、数据库管理系统、教学软件系统、办公自动化系统、防火墙及杀毒软件等。由于有这么多软件也需要选型、配置、采购、安装、调试,所以在今天,除了生产硬件的厂商之外,纯粹的“硬件工程”几乎不存在,大多数硬件工程都与软件有关,于是就出现了一个新名词“网络工程”,它是介于硬件工程和软件工程之间的系统工程,有时也称它为“系统集成工程”。2.软件定义为了弄清软件工程的概念,首先要了解程序和软件的概念。程序是计算机为完成特定任务而执行的指令的有序集合。站在应用的角度可以更通俗地理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架通常,软件有以下定义:软件=程序+数据+文档这里的“程序”,是对计算机任务的处理对象和处理规则的描述;这里的“文档”,是为了理解程序所需的详细描述性资料;这里的“数据”,主要是软件系统赖以运行的初始化数据。上述定义来之不易。表1-3列出了美国人对软件定义的认识过程。直到今天,仍然有少数人认为:“软件就等于程序”。这些人在软件开发的过程中,上来就写程序,而不是写文档。软件工程大师RogerSPressman对这些人提出了尖锐的批评:“越早开始写代码的人,就是越迟完成代码的人”。年代美国人对软件定义的认识20世纪50年代软件就等于程序,软件系统就是程序系统20世纪60年代软件等于程序加文档。这里的文档,是指软件开发过程中的分析、设计、实现、测试、维护文档,还不包括管理文档20世纪70年代软件等于程序加文档再加数据,这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据至于对管理文档的全面认识,那就更晚了。1974年,美国人才开始认识到软件需要管理。1984年,美国人开始认识到软件管理是一个过程管理,或是一个管理过程。1991年,出现了软件过程能力成熟度模型CMM(CapabilityMaturityModelforSoftware)1.0版,人们研究了软件过程管理的具体内容与方法,并将软件开发和管理中产生的各种文档叫做“软件工作产品”,而将最后交付给用户使用的软件工作产品叫做“软件产品”。1996年,出现了统一建模语言UML0.9版,称软件管理文档为“管理制品”,称软件开发文档为“技术制品”,两者合称为“制品(Artifact)”。3.文档的重要性文档在软件工程中特别重要,文档是否规范与齐全,是衡量软件企业是否成熟的重要标志之一。软件文档分为开发文档和管理文档两大类。开发文档主要由项目组书写,用于指导软件开发与维护;管理文档主要由软件工程管理部门书写,用于指导软件管理和决策。软件工程规定:文档必须指挥程序,而决不允许程序指挥文档;文档与程序必须保持高度一致,而决不允许程序脱离开文档。开发文档本身具有严格的层次关系和依赖关系,这种关系反映在如下的覆盖关系之中,即有:(1)《目标程序》覆盖《源程序》;(2)《源程序》覆盖《详细设计说明书》;(3)《详细设计说明书》覆盖《概要设计说明书》;(4)《概要设计说明书》覆盖《需求分析规格说明书》;(5)《需求分析规格说明书》覆盖《用户需求报告》;(6)《用户需求报告》覆盖《软件合同》/《软件任务书》。管理文档本身具有严格的时序关系,这种时序关系反映在如下的软件过程之中,而过程由一系列的时间序列所组成的:(1)需求分析过程管理文档;(2)软件策划过程管理文档;(3)软件设计过程管理文档;(4)软件实现过程管理文档;(5)软件测试过程管理文档;(6)软件维护过程管理文档;(7)软件过程改进管理文档。4.软件最新定义软件==知识+程序+数据+文档定义中增加了“知识”。对这一定义的讨论正在进行。正方认为:因为软件是知识在网络上的体现,所以这个定义非常好。反方认为:程序、数据、文档本身就是知识的载体与表现,所以这个定义是画蛇添足。1.2软件工程定义1.软件危机软件工程来源于软件危机,即先有软件危机,后有软件工程。二十世纪六十年代中期,在美国就出现了软件危机(SoftwareCrisis),这种危机表现在研发大型软件时,软件开发的成本增大、进度延期、维护困难和质量得不到保障。所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。2.软件工程定义1993年,权威杂志IEEE对软件工程的定义是:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。2001年,软件工程大师RogerSPressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。由于软件技术是飞速发展的,所以软件工程的定义也要与时俱进。下面,根据当前软件技术的进展状况,给出现代软件工程的最新定义。【定义1-1】软件工程是研究软件开发和软件管理的一门工程学科。这里,一是强调开发,二是强调管理,三是强调工程,四是强调学科。开发和管理是一个问题的相辅相成的两个方面。许多软件项目的失败,不是在开发技术上出了问题,而是在管理过程上出了问题。要将软件的开发当作一项工程,既要按照工程的办法去开发,又要按照工程的办法去管理。时至今日,软件工程不只是一门课程,而是一个学科体系,即软件工程知识体系。3.软件工程学科体系软件工程作为一个学科体系,到本世纪初才初步形成。2001年4月18日,美国发布了软件工程知识体系指南SWEBOK(GuidetotheSoftwareEngineeringBodyofKnowledge)0.95版。2004年,软件工程学科体系的内容才基本确立,就在这一年,美国ACM和IEEE-CS联合制订SWEBOK2004年版,它将软件工程学科体系的知识划分为如下10个知识域:(1)软件需求(SoftwareRequirements)。软件需求是真实世界问题而必须展示的特性。软件需求知识域有七个子域:需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。(2)软件设计(SoftwareDesign)。软件设计既是定义一个系统的体系结构、组件、接口和其他特征的过程,又是这个过程的结果。软件设计知识域有六个子域:软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。(3)软件构造(SoftwareConstruction)。它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件。其知识域有三个子域:软件构造基础、管理构造、实际考虑。(4)软件测试(SoftwareTesting)。它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组成,测试用例是实际上无限的执行域中适当选择出来的。软件测试域有五个子域:软件测试基础和测试级别、测试技术、需求分析、与测试相关的度量、测试过程。(5)软件维护(SoftwareMaintenance)。软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出新的需求。生命周期软件维护,从软件交付时开始。软件维护的知识域有四个子域:软件维护基础、软件维护的关键问题、维护过程、维护技术。(6)软件配置管理(SoftwareConfigurationManagement)。软件配置是为了系统地控制配置的变更和维护在整个系统生命周期中的完整性及可追踪性,而标志软件在时间上不同点的配置的学科。软件配置管理域有六个子域:软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行管理和交付。(7)软件工程管理(SoftwareEngineeringManagement)。处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉及的是度量程序的专题。软件工程管理域有六个子域:启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。前五个覆盖软件过程工程管理,第六个描述软件度量的程序。(8)软件工程过程(SoftwareEngineeringProcess)。涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进。软件工程过程域有四个子域:过程实施与改变、过程定义、过程评定、过程和产品度量。(9)软件工程工具和方法(SoftwareEngineeringToolandMethod)。有软件工程工具、软件工程方法两个子域。(10)软件质量(SoftwareQuality)。处理跨越软件生命周期过程的软件质量的考虑,由于软件质量在软件工程中无处不在,其他知识域也涉及质量问题。软件质量域有三个子域:软件质量基础、软件质量过程、实践考虑。在上述软件工程学科体系中,前五个知识域是讲软件开发,后五个知识域是讲软件管理。由此可见,软件工程知识体系包括软件开发和软件管理两大部分,所以软件工程的定义也应该包括软件开发和软件管理两项内容。4.软件工程课程研究的内容软件工程课程与软件工程学科体系是有区别的:前者是一门课程,或是大学的软件工程教科书,后者是一个知识体系;前者是一个局部,后者是一个整体。作为一门软件工程课程,它的研究的内容至今没有统一的说法。可以这么认为,软件工程课程研究的内容,应该涵盖“软件生命周期模型、软件开发方法、软件支持过程、软件管理过程”这四个方面,如表1-4所示。序号研究方面具体内容1软件生命周期模型如:瀑布模型、增量模型、原型模型、迭代模型、XP模型2软件开发方法如:面向过程的方法、面向元数据的方法、面向对象的方法3软件支持过程如:CASE工具Rose、北大青鸟系统、PowerDesigner、ERwin4软件管理过程如:CMMI、软件企业文化、敏捷(XP)文化现象5.软件工程基本原理习惯
本文标题:第1章软件工程的内容与方法
链接地址:https://www.777doc.com/doc-6983834 .html