文档介绍:软件工程
电子教案
王树林
第2章过程(Process)
软件工程是过去十年中人们普遍关注的焦点。软件过程与软件工程不完全同义。
Software Engineering—A Layered Technology
软件工程定义
(1) 是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。这是Fritz Bauer在NATO会议上给出的定义。
(2)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,以及对这些方法的研究。这是IEEE[IEE93]给出的一个综合的定义。
第2章过程(Process)
过程、方法和工具(Process,Methods,and Tools)
软件工程是一种层次化的技术。支持软件工程的根基就在于对质量的关注。任何工程方法都必须是以有组织的质量保证为基础。
第2章过程(Process)
软件工程层次
软件工程
质量焦点
过程
方法
工具
第2章过程(Process)
软件工程的基层是过程层。过程与技术结合在一起,使得软件能够被合理地和及时有效地开发出来。过程定义了一组关键过程区域的框架,它构成了软件项目的管理控制基础,规定了技术方法的采用、工程产品(模型、文档、数据、报告和表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。
第2章过程(Process)
软件工程的方法层提供了开发软件在技术上需要“如何做”。方法涵盖了一系列的任务:需求分析、概要设计、详细设计、编程、测试和维护。软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建摸活动和其它描述技术。
第2章过程(Process)
软件工程的工具层对过程和方法提供了自动的和半自动的支持。当这些工具被集成起来使得一个工具的输出信息是另一个工具的输入信息时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库包含了关于分析、设计、编程和测试等的重要信息),从而形成了一个软件工程。
第2章过程(Process)
软件工程的一般视图(A Generic View of Software Engineering)
工程是对技术实体的分析、设计、建造、验证和管理。
要解决的问题是什么?
要用于解决该问题的实体具有什么特点?
如何实现该实体(解决方案)?
如何建造该实体?
采用什么方法去发现该实体设计和建造过程中产生的错误?
当该实体的用户要求修改、适应和增强
第2章过程(Process)
一般来说,一个软件项目的开发过程主要分为三个阶段:
(1)定义阶段主要集中于“做什么”。主要工作是,需求分析、软件项目计划和信息工程。定义系统或软件的关键需求,建立什么样的软件界面,搞清楚要处理的信息,预期完成什么样的软件功能。
(2)开发阶段集中于“如何做”。定义数据如何结构化,功能如何转换为软件体系结构,过程细节如何实现,界面如何表示,设计如何转换为程序代码,测试如何执行。
第2章过程(Process)
(3)维护阶段集中于“改变”。软件开发过程中出现的错误需要剔除,由于软件环境的变化而要求的适应性修改,以及由于用户需求的变化而带来的增强性修改。维护阶段重复定义和开发阶段的步骤。在维护阶段可能遇到四类修改:
纠错:改正已发现的软件错误。
适应:适应软件外部环境的变化而修改软件。
增强:为适应用户提出的更好需求而修改软件。
预防:更好地提高软件的适应性和增强软件的需求。