软件工程:实践者的研究方法第2章过程

软件工程:实践者的研究方法第2章过程,第1张

软件工程:实践者的研究方法第2章过程,第2张

第2章 过程

  软件过程是过去十年中人们关注的焦点。但准确讲什么是软件过程呢?在本书中,我们定义软件过程为建造高质量软件需要完成的任务的框架。“过程”与软件工程同义吗?答案是“是也不是”。一个软件过程定义了软件开发中采用的方法,但软件工程还包含该过程中应用的技术——技术方法和自动化工具。

  更重要的一点,软件工程是有创造力、有知识的人在定义好的、成熟的软件过程框架中进行的。本章的目的就是探讨软件过程的研究现状,并为在本书以后的章节中更详细地讨论关于管理和技术方面的话题提供指导。

2.1软件工程——一种层次化技术

  虽然有很多作者都给出了软件工程的定义,但Fritz Bauer[NAU69]在NATO会议上给出的定义仍是进一步展开讨论的基础:

  软件工程 是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。

  几乎每一个读者都忍不住想在这个定义上增加点什么。它没有提到软件质量的技术层面,也没有直接谈到用户满意度或按时交付产品的要求,它忽略了测度和度量的重要性,甚至没有阐明一个成熟的过程的重要性。但Bauer的定义给我们提供了一个基线。什么是可以应用到计算机软件开发中的“好的工程原则”?我们如何“经济地”建造软件使得其可靠性高?如何才能创建出能够在多个、而不是一个不同的实际机器上“高效运行”的程序?这些都是进一步挑战软件工程师的问题。

  IEEE[IEE93]给出了一个更加综合的定义:

  软件工程:(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)(1)中所述方法的研究。

2.1.1过程、方法和工具

  软件工程是一种层次化的技术(如图2-1所示)。任何工程方法(包括软件工程)必须以有组织的质量保证为基础。全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。支持软件工程的根基就在于对质量的关注。

  软件工程的基层是过程层。软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域的框架(KPAs)[PAY93],这对于软件工程技术的有效应用是必须的。关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。

  软件工程的方法层提供了建造软件在技术上需要“如何做”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建模活动和其他描述技术。

  软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了关于分析、设计、编程和测试的重要信息),从而形成了一个软件工程环境,它类似于硬件的CAD/CAE(计算机辅助设计/工程)。

2.1.2软件工程的一般视图

  工程是对技术(或社会)实体的分析、设计、建造、验证和管理。抛开要工程化的实体,下列问题是必须首先回答的:

  ·要解决的问题是什么?

  ·要用于解决该问题的实体具有什么特点?

  ·如何实现该实体(解决方案)?

  ·如何建造该实体?

  ·采用什么方法去发现该实体设计和建造过程中产生的错误?

  ·当该实体的用户要求修改、适应和增强时,如何支持这些活动?

  本书全文只针对一个实体——计算机软件。要适当地建造一个软件,软件开发过程是必须定义的。本节给出了软件过程的一般性特点,本章的以后几节进一步阐述了特定的过程模型。

  如果不考虑应用领域、项目规模和复杂性,与软件工程相关的工作可分为三个一般的阶段。每一个阶段回答了上述的一个或几个问题。

  定义阶段集中于“做什么”。即在定义过程中,软件开发人员试图弄清楚要处理什么信息,预期完成什么样的功能和性能,希望有什么样的系统行为,建立什么样的界面,有什么设计约束,以及定义一个成功系统的确认标准是什么。即定义系统和软件的关键需求。虽然在定义阶段采用的方法取决于使用的软件工程范型(或范型的组合),但在某种程度上均有三个主要任务:系统或信息工程(见第10章),软件项目计划(第3章到第7章),和需求分析(第11,12和20章)。

  开发阶段集中于“如何做”。即在开发过程中,软件工程师试图定义数据如何结构化,功能如何转换为软件体系结构,过程细节如何实现,界面如何表示,设计如何转换成程序设计语言(或非过程语言),测试如何执行。在开发阶段采用的方法可以不同,但都有三个特定的任务:软件设计(第14、15和21章),代码生成,和软件测试(第16、17和22章)。

  维护阶段集中于“改变”,与以下几种情况相关:纠正错误;随着软件环境的演化,而要求的适应性修改;及由于用户需求的变化而带来的增强性修改。维护阶段重复定义和开发阶段的步骤,但却是在已有软件的基础上发生的。在维护阶段可能遇到四类修改要完成:

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 软件工程:实践者的研究方法第2章过程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情