书城计算机网络综合应用软件设计
8724600000004

第4章 软件工程概述(2)

2.软件配置管理(Software Configuration Management)

在构建软件时,由于种种原因,如用户需求的变化,再如编码时发现了设计阶段的某个错误,这些都会导致变更(Change)的出现。正是这个原因导致了软件过程的复杂,导致了很多软件开发的失败。然而试图逃避这一问题是不现实的,必须坦然接受这一现实。应该说变更是软件开发过程中最为常见的现象,因而在软件开发过程中必须能够有效地控制变更。软件配置管理就是这样一种用来管理软件变更的活动。具体而言,软件配置管理是一组软件工程活动,其中包括软件配置项(Software Configuration Item,SCI)的识别,也就是可能变更的产品、文档、构件、工具的识别,SCI关系的建立,以及SCI的版本控制、变更控制、SCI的状态报告(Status Accounting)和软件配置审计(Software Configuration Audit)。

3.软件质量管理(SoftwareQualityManagement)

在全面质量管理(TotalQualityManagement)的大背景下,软件行业也开始了有其自身特色的质量运动——软件质量保证(Software Quality Assurance,SQA)。

要理解什么是SQA,首先应该明白什么是软件质量(Software Quality,SQ),Pressman,软件质量是指软件要符合显式声明的功能和性能要求、显式文档化的开发标准以及专业人员开发的软件所应具有的隐含特征。

SQA是贯穿于整个软件开发过程中的庇护性行为,通常由SQA组负责实施。SQA活动包括,质量控制计划的制定,软件质量标准的制定或选用、产品的评审,质量的跟踪等。SQA常用的手段包括软件评审,包括走查(walkthrough)和审查(inspection),测试的策略和技术,软件变更控制等。

由于SQA贯穿于整个软件生命周期,其内容和形式与前面谈到的很多主题如软件测试、软件配置管理均有着若干的关联,所以SQA本身非常复杂。这里需要特别提出的是在SQA领域里,近年来谈的比较多的“V&;V”策略。

“V&;V”是指Verification和Validation。Verification要求软件工程过程中每一阶段的结果都能得到验证,这一验证主要是由相关的分析设计或编码人员自身完成,当然也可以聘请该领域的专家共同完成该阶段结果的验证,验证的依据主要是该阶段或者前续阶段的分析设计文档或者相关的行业规范。Validation主要是从最终实现软件的可用性的角度,由最终的用户对软件工程各阶段的结果加以确认核实。

“V&;V”策略本质上是一种防患于未然的策略,这种策略是基于这样的思想,保证软件质量的根本方法在于软件缺陷与错误的预防而非缺陷和错误的纠正。这与传统软件工程中的质量保证仅仅是在软件构造实现后靠软件测试去发现缺陷的做法恰好相反。这一策略已经被很多软件专家推崇为解决软件危机的根本出路。它在很大程度上也是软件质量保证的最为有效的方法。虽然这种策略非常重要,但是它的实现并不困难。前面提到的走查(如程序员对自己的代码检查一遍)与审查(如组织专家对设计方案进行评审)就是最为常见的方法。

4.软件过程管理(SoftwareProcessManagement)

过程管理源于管理科学。最初源于打破按照职能部门进行企业管理的传统管理模式,因为人们觉得,在新的企业环境下,企业必须加强跨部门的合作,以便资源共享,促进沟通,加快市场反应能力。在管理科学中,这无疑是思想上的一次革命性的变革。在这样的大背景下,软件行业也受到启发,以过程的观念审视整个软件开发过程。从20世纪90年代初开始,软件工程组织(Software Engineering Institute,SEI),以Watts Humphrey为代表的众多软件过程管理专家,先后提出能力成熟度模型(Capability Maturity Model,CMM),个人软件过程(Personal Software Process,PSP),小组软件过程(Team Software Process,TSP),对软件过程管理的发展起到了积极的推进作用。

1.2.3软件工具及方法

1.软件工程工具(Software Engineering Tools)

现代软件工程发展的一个极为明显的特征就是计算机辅助软件工程(Computer Aided Software Engineering)有了长足的发展。这其中包括软件工程过程中各个阶段的辅助工具不断出现,现在可以看到可用来进行需求分析的形式化表达工具,如Rational公司的Rose软件;进行软件辅助设计的工具,如Microsoft的Visio,Sybase的Power Design、Erwin等;进行各类自动测试的工具,如Nunit、Csunit、Junit等;还有各类正向反向软件工程工具,比如Visio、Rose都是其中的佼佼者;各种辅助软件项目管理的工具,如Microsoft的Project2000;着名的软件配置管理工具,如Microsoft的Visual Source Safe等。

2.软件工程方法(Software Engineering Methods)

软件工程中最为典型的方法有两种,一是软件工程刚刚开始时提出的方法——结构化方法(Structured Method);二是当今的主流开发方法——面向对象的方法(Object Oriented Methods)。

1)结构化方法概述

结构化方法采用传统的瀑布模型,将软件过程分为:结构化分析,结构化设计,结构化编程等阶段。结构化分析通常使用数据流程图(Data Flow Diagram,DFD)和数据字典(Data Dictionary)来描述系统的需求。结构化设计通常采用模块化的设计思想,将系统划分为多个功能模块。

2)面向对象方法概述

面向对象方法将软件过程分为:面向对象的分析,面向对象的设计,面向对象的编程等阶段。面向对象方法决不仅仅是传统认识上的一种编程方法,而更是一种思维方法,认知方法。面向对象的认知方法认为,人们所需要解决的问题以及最终提供的软件方案都可以看作是由相互关联的实体所组成。面向对象的分析就是要弄清楚待解决的问题(问题域空间)的实体的组成及其相互关系。面向对象的设计其实就是描述清解决方案(又称之为解空间)的实体的组成及其相互关系。面向对象的编程则是面向对象的思维方式和面向对象的一些具体的方法(如继承,多态)在编程中的应用。

下面介绍面向对象方法中的几个概念:

①对象(Object)是一个具体的客观存在,例如,人是一个实体,其中每个具体的人就是对象。

②属性(Attribute)是对象的状态,例如,人的身高,体重。

③方法(Method)是对象的行为,例如,人能说话,走路。

④消息(Message)是对象与环境之间信息的传递,例如,张三要通知李四来吃饭,必须通过“消息”(Message)来实现。

⑤封装(Encapsulation)是指对实体内部实现细节的隐藏,其目的是为了实现信息的隐藏以提高系统的可维护性。

⑥继承(Inheritance)就像每个人都会继承父母的特征一样,每个类或实体也可以继承(Inheritance)另外一些类或实体的特征,这些特征包括一些共有的方法和属性。

⑦多态(Polymorphism)是用不同的实现来完成对同一消息的不同响应。

3.UML概述

UML(统一建模语言)是为软件系统的制品进行描述(Specifying)、可视化(Visualizing)、构造(Constructing)、文档化(Documenting)的一种语言。

UML是一种良好定义,易于表达,功能强大,且普遍使用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它不仅可以支持面向对象的分析与设计,更重要的是能够有力地支持从需求分析开始的软件开发的全过程。UML采用了一整套成熟的建模技术,广泛适用于各种应用领域,它得到了工业界的广泛支持。UML目前已经成为面向对象技术领域内占主导地位的标准建模语言。

UML主要由UML建模规则和UML成员构成,即:UML=UML建模规则+UML成员。其中,UML建模规则相当于建模语言的语法;UML成员=UML基本模型元素+关系+模型图。

下面将对UML成员做一简单介绍。

1)UML基本模型元素

UML基本模型元素类似于电子产品原理图里的集成电路符号,是模型图上包含的基本符号。可进一步细分为:结构模型元素、行为模型元素、成组元素和注解元素。

2)关系

结构模型元素是UML模型的静态组成部分,静态组成部分不是孤立存在的,它们被组合在一起互相协作以完成某项任务。因此,结构模型元素之间存在着某种语义上的联系。在UML中,这种联系是关系(Relationship)。UML中共有4种关系,它们是:关联关系(Association)、依赖关系(Dependency)、泛化关系(Generalization)和实现关系(Realization)。

3)模型图

UML基本模型元素及其关系必须通过某种载体表示,这种载体就是模型图(Diagram)。在UML中,模型图是一组UML基本模型元素的图形表示,它通常由一组节点(UML基本模型元素)及节点之间的连线(关系)组成。一般来说,一个UML基本模型元素既可以出现在所有的模型图中,又可以出现在某些模型图中,甚至可以不在任何一个模型图上出现。

模型图存在以下9种:

①用例图:用例图显示系统中的使用案例与角色及其相互关系。使用案例是系统提供的功能模块,角色是与所建系统交互的对象。

②类图:类图包含类、接口、协同及其关系,它用来描述逻辑视图的静态属性。

③对象图:对象图包含对象及其关系,它用来表示类图的类的对象在系统运行过程中某一时刻的状态,对象也是软件系统的逻辑视图的一个组成部分。

④时序图:显示多个对象之间的动态协作,重点是显示对象之间发送消息的顺序。

⑤协作图:显示多个对象之间的动态协作,重点是显示对象及它们之间的关系。

⑥状态图:用于描述单个对象的动态特性。状态图强调对象对外部事件的响应及相应的状态变迁。

⑦活动图:活动图用于描述对象的动态特性。活动图描述对象之间控制流的转换和同步机制。

⑧组件图:描述系统的物理实现,包括构成软件系统的各部件(运行文件)的组织和关系,类图里的类在实现时最终会映射到组件图的某个组件。一个组件可以实现多个类。

⑨分布图:描述系统的组件在运行时在运行节点上的分布,一个节点可包含一个或多个组件。

其中,类图、对象图、组件图、分布图属于静态结构模型图,用例图、时序图、协作图、状态图、活动图属于动态结构模型图。

4.UML建模工具简介

本书是为计算机、信息管理等相关专业高年级本科生在开设相关课程时所编写的一本教学参考书,它将指导学生学习、熟悉和运用当今被广泛采纳的一些技术去进行综合应用软件设计的有效实践。本教材的主要内容:运用软件工程的理论,进行需求分析及概要设计;制订软件开发进度;运用面向对象程序设计、计算机网络、多媒体技术等相关知识,运用系统软件代码的开发、集成测试、修改、完善与总结等相关技术,全面实现数据库的设计。本教材是上海理工大学曹渠江教授的教学实践经验的积累,也是上海市教委重点课程建设项目的教学研究成果。本书可作为高等院校相关课程的参考教材,也可供从事计算机软件开发的科技人员、工程技术人员及相关部门人员参阅。

本书是为计算机、信息管理等相关专业高年级本科生在开设相关课程时所编写的一本教学参考书,它将指导学生学习、熟悉和运用当今被广泛采纳的一些技术去进行综合应用软件设计的有效实践。本教材的主要内容:运用软件工程的理论,进行需求分析及概要设计;制订软件开发进度;运用面向对象程序设计、计算机网络、多媒体技术等相关知识,运用系统软件代码的开发、集成测试、修改、完善与总结等相关技术,全面实现数据库的设计。本教材是上海理工大学曹渠江教授的教学实践经验的积累,也是上海市教委重点课程建设项目的教学研究成果。本书可作为高等院校相关课程的参考教材,也可供从事计算机软件开发的科技人员、工程技术人员及相关部门人员参阅。