软件工程复习资料第9、10、11章

作者名:不详 来源:网友提供 06年6月8日

 

第9章
传统的瀑布模型本质上是一种线性顺序模型,各阶段之间存在着严格的顺序性和依赖性,特别强调预先定义需求的重要性。
瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。
增量模型是在项目的开发过程中以一系列的增量方式开发系统。增量方式包括增量开发和增量提交。增量开发是指在项目开发周期内,以一定的时间间隔开发部分工作软件;增量提交是指在项目开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。
根据增量的方式和形式的不同,分为渐增模型和原型模型。
渐增模型是瀑布模型的变种,有两类渐增模型:
1增量构造模型:它在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发。前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量方式开发。
2演化提交模型:它在瀑布模型的基础上,所有阶段都进行增量开发,也就是说不仅是增量开发,也是增量提交。
原形模型又称快速原形模型,它是增量模型的另一种形式。根据原型的不同作用,有三类原型模型:
1探索型原型:这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发都对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
2实验型原型:主要用于设计阶段,考核实现方案是否合适,能否实现。
3演化型原型:主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统。它将原型的思想扩展到软件开发的全过程。
软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。
快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反覆评价和改进原型,减少误解,弥补遗漏,适应变化,最终提高软件质量。
由于运用原形的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
1抛弃策略:用于开发过程某一阶段(探索型和实验型快速原型就是采用此策略)
2附加策略:由基本核心开始(演化型快速原型就采用此策略)
对于探索型,用原型过程来代替需求分析,把原型作为需求说明的补充形式,运用原型尽可能使需求说明完整、一致、准确、无二义性,但在整体上仍采用瀑布模型。
对于实验型,用原形过程来代替设计阶段,即在设计阶段引入原型,快速分析实现方案,快速构造原形,通过运行,考察设计方案的可行性与合理性,原型成为设计的总体框架或设计结果的一部分。
对于演化型,用原型过程来代替全部开发阶段,这是典型的演化提交模型的形式,它是有强有力的软件工具和环境支持下,通过原型过程的反覆循环,直接得到软件系统。
原形开发步骤:快速分析、构造原形、运行原型、评价原型、修改
构造原型的技术:可执行的规格说明;基于脚本的设计;采用非常高级语言或专门语言;能重用软件。

--------------------------------------------------------------------------------第10章
对象具有状态。一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般――具体结构关系,整体――部分结构关系。
一般――具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
整体――部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
在类的层次结构中,通常上层类称为父类或超类,下层类称为子类。
对象之间进行通信的构造叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。接收消息的对象经过解释,然后给予响应。这种通信机制称为消息传递。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。当一个对象接收一条消息后,它所包含的方法决定对象怎样动作。
面向对象的特征:对象惟一性;分类性;继承性;多态性(多形性)。
子类只继承一个父类的数据结构方法,则称为单重继承。
子类继承了多个父类的数据结构和方法,则称为多重继承。
面向对象的要素:
1抽象:是指强调实体的本质、内在的属性,忽略一些无关紧要的属性。类实现了对象的数据(即状态)和行为的抽象,它是对象的共性的抽象。
2封装性:是指所有软件部件内部都有明确的范围以及清楚的外部边界。每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离。
3共享性(3个级别):面向对象技术在不同级别上促进了共享。同一个类中的共享――同一个类中的对象有着相同数据结构,也有着相同的行为特征。在同一个应用中共享――在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。在不同应用中的共享。
面向对象开发方法有coad方法、booch方法、omt方法和oose方法等。
Booch方法通过分析正文描述,将其中的名词映射为对象,将其中的动词映射为方法,从而为对象和方法的认定提供了一种简单的策略。虽然booch方法原是面向ada语言的,但仍处于面向对象开发的奠基性地位。
Coad方法完成了从需求角度出发的对象和分类结构的认定工作,面向对象设计可以在此基础上,从设计的角度进一步进行类和类层次结构的认定。
Omt方法是一种新兴的面向对象的开发方法,开发工作的基础是对真实世界的对象建模,然后围绕这些对象使用分析模型来进行独立于语言的设计。
Uml语言不公统一了booch方法、omt方法、oose方法的表示方法,而且对其作了进一步的发展,最终统一为大众所接受的标准建模语言。
对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述。表现了对象的相互关系。该模型主要关心系统中对象的结构,属性和操作,使用了对象图的工具来刻划,它是分析阶段三个模型的核心。
属性指的是类中对象所具有的性质(数据值)。不同对象的同一属性可以具有相同或不同的属性值。
操作是类中对象所使用的一种功能或变换。类中的各对象可以共享操作。方法是类的操作的实现步骤。
链表示对象间的物理与概念联结,关联表示类之间的一种关系,就是一些可能的链的集合,链是关联的实例,关联是链的抽象。两个类之间的关联称为二元关联,三个类之间的关联称为三元关联。
1聚集关系。聚集是一种“整体――部分”关系。在这种关系中,有整体类和部分类之分。聚集最重要的性质是传递性,也具有逆对性。
2一般化关系
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方法。它是“一般--具体”的关系,一般化类又称父类,具体类又称子类。
继承有单重继承和多重继承。单重继承指的是子类只有一个父亲,在一个类层次结构中,若只有单重继承,则该类层次结构是树型层次结构。多重继承指的是子类继承了多个父类的性质,在一个类层次结构中,若有多重继承,则该类层次结构是网状层次结构。
动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了对象的相互行为。
该模型描述的系统忏属性是触发事件、事件序列、状态、事件与状态的组织。使用状态图作为描述工具。
现实世界中,各对象之间相互触发,一个触发行为就是一个事件。对事件的响应取决于接受该触发的对象的状态,响应包括状态的改变或形成一个新的触发。事件可以看成是信息从一个对象到另一个对象的单向传递。各事件将信息从一个对象传到另一个对象中去,因此要确定各事件的发送对象和接收对象。事件跟踪图用来表示事件、事件的接收对象和发送对象。
状态是对象属性值的抽象,状态指明了对象对输入事件的响应。
状态图反映了状态与事件的关系,状态图确定了由事件序列引起的状态序列。
活动是一种有时间间隔的操作,它是依附于状态的操作。
动作是一种瞬时操作,它是与事件联系在一起的操作。
功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型由多张数据流图组成。
数据流图中包含有处理、数据流、动作对象和数据存储对象。
功能模型用来说明值是如何计算的,表明值之间的依赖关系及其相关的功能,数据流图有助于表示功能依赖关系,其中的处理对应于状态图的活动和动作,其中的数据流对应于对象图中的对象或属性。
操作与对象模型中属性和关联的查询有关,与动态模型的事件有关,与功能模型的处理有关。
瀑布模型把设计进一步划分成概要设计和详细设计两个阶段,类似地,也可以把面向对象设计再细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定解空间中的类、关联、接口形式及实现操作的算法。
面向对象设计的准则:模型化;抽象;信息隐蔽;低耦合;高内聚(操作内聚、类内聚、一般――具体内聚)
在面向对象方法中,信息隐蔽通过对象的封装性来实现。类结构分离了与实现,从而支持了信息隐蔽。

第11章
软件质量定义:
1与所确定的功能和性能需求的一致性。〕
2与所成文的开发标准的一致性。
3与所有专业开发的软件所期望的隐含特性的一致性。
软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
软件质量保证应从产品计划和设计开始,直到投入使用和售后服务的软件生存期的每一阶段中的每一步骤。
为了提高软件的质量,软件质量保证的任务大致可归结为以下几点:
1正确定义用户要求
2技术方法的应用
3提高软件开发的工程能力
4软件的复用
5发挥每个开发者的能力
6组织外部力量协作
7排除无效劳动
8提高计划和管理质量。
软件质量必须在设计和实现过程中加以保证,为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验。因此须在软件开发工程的各个阶段实施检验,检验的实施有两种形式:实际运行检验(即白盒测试和黑盒测试)和鉴定。可在各开发阶段中结合起来使用。
针对面向软件产品的运行、修正、转移,软件质量概念包括11个特性:(面向软件产品操作)正确性、可靠性、效率、完整性、可性。(面向软件产品修改)可维护性、可测试性、适应性。(面向软件产品适应)可移植性、可重用性、可互操作性
ISO三层次中的第一层为质量特性,第二层为质量子特性、第三层为度量。
软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少。
软件可靠性是指在给定的时间内,在规定的环境条件下系统完成所指定的功能的概率。
通常,把“质量”理解为“用户满意程序”。
1设计的规格说明书要符合用户的要求。
2程序要按照设计规格说明所规定的情况正确执行。
我们把上述条件1称为“设计质量”,把条件2称为“程序质量”。
软件的规格说明分为外部规格说明和内部规格说明。外部规格说明是从用户角度来看的规格,包括硬件/软件系统设计(在分析阶段进行)、功能设计(在需求分析阶段与概要设计阶段进行)。而内部规格说明是为了实现外部规格的更详细的规格,即软件模块结构与模块处理过程的设计(在概要设计与详细设计阶段进行)。因此,内部规格说明是从开发者角度来看的规格说明。将上述两概念联系起来,因此,设计质量是由外部规格说明决定的,程序质量是由内部规格说明决定的。
设计质量评审的对象是在需求分析阶段产生的软件需求规格说明、数据需求规格说明,在软件概要设计阶段产生的软件概要设计说明书等。
程序质量评审通常它是从开发者的角度进行评审,直接与开发技术有关。它是着眼于软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动。
提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减到最小的技术。避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术。
实现容错技术的主要手段是冗余。冗余是指实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。(结构冗余、信息冗余、时间冗余、冗余附加技术)

第12章
软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
软件开发人员一般分为:项目负责人、系统分析员、高级程序员、初级程序员、资料员和其他辅助人员。
软件开发的组织机构没有统一的模式:主程序员组织机构;专家组织机构;民主组织机构。
控制包括进度控制、人员控制、经费控制和质量控制。
在软件项目管理过程中一个关键的活动是制定项目计划,它是软件开发工作的第一步。软件项目计划是由系统分析员与用户共同经过“可行性研究与计划”阶段后制定的。所以软件项目计划是可行性研究阶段的结果产品。但由于可行性研究是在高层次进行系统分析,未能考虑软件系统开发的细节情况,因此软件项目计划一般在需求分析阶段完成后才定稿的。软件项目计划包括两个任务:研究与估算。即通过研究确定该软件项目的主要功能、性能和系统界面。
软件工程规范可选用现成的各种规范,也可自己制定。目前软件工程规范可分为三级:国家标准与国际标准;行业标准与工业部门标准;企业级标准与开发小组级标准。
风险分析实际上就是贯穿在软件工程中的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督。
软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:标识变更;控制变更;确保变更正确地实现;报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。软件配置项(SCI)是软件工程中产生的信息项。
软件工程过程中某一阶段的变更,均要引起软件配置的变更,这种变更必须严格加以控制和管理,保持修改信息,并把精确、清晰的信息传递到软件工程过程的下一步骤。
变更控制包括建立控制点和建立报告与审查制度。其中“检出”和“登入”处理实现了两个重要的变更控制要素,即存取控制和同步控制。存取控制管理各个用户存取和修改一个特定软件配置对象的权限。同步控制可用来确保由不同用户所执行的并发变更。
软件工程标准的类型也是多方面的。它可能包括过程标准(如方法、技术、度量等)、产品标准(如需求、设计、部件、描述、计划报告等)、专业标准(如职别、道德、准则、认证、特许、课程等),以及记法标准(如术语、表示法、语言等)。
根据软件工程标准制定的机构与适用的范围,它分为国际标准、国家标准、行业标准、企业规范及项目(课题)规范五个等级。

第13章
软件开发环境是指相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。
软件开发环境的目标是提高软件开发的生产率和软件产品的质量。因而理想的软件开发环境应是能支持整个软件生存期阶段的开发活动,并能支持各种处理模型的软件方法学,同时实现这些开发方法的自动化。
按解决的问题分类:程序设计环境;系统合成环境;项目管理环境。
按软件开发环境的演变趋向分类:以语言为中心的环境;工具箱环境;基于方法的环境。
按集成化程度分类:第一代;第二代;第三代。
软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。开发软件工具的主要目的是为了提高软件生产率和改善软件的质量。
软件工具通常由工具、工具接口和工具用户接口三部分构成。工具通过工具接口与其他工具、操作系统或网络操作系统,以及通信接口、环境信息库接口等进行交互作用。当工具需要与用户进行交互作用时则通过工具的用户接口。
软件工具的发展有以下特点:
1软件工具由单个工具向多个工具集成化方向发展。
2重视用户界面的设计
3不断地采用新理论和新技术。
4软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。
CASE系统所涉及到的技术有两类:一类是支持软件开发过程本身的技术,如支持规约、设计、实现、测试等;另一类是支持软件开发过程管理的技术,如支持建模、过程管理等。
CASE集成:
1平台集成:工具运行在相同的硬件/操作系统平台上。
2数据集成:工具使用共享数据模型来操作。
3表示集成:工具提供相同的用户界面。
4控制集成:工具激活后能控制其他工具的操作。
5过程集成:工具在一个过程模型和“过程机“的指导下使用。
数据集成指不同软件工程能相互交换数据。因而,一个工具的结果能作为另一个工具的输入。有许多不同级别的数据集成:1共享文件;2共享数据结构;3共享仓库。
表示集成或用户界面集成意指一个系统中的工具使用共同的风格,以及采用共同的用户交互标准集。工具有一个相似的外观。目前,表示集成有如下三种不同级别:1窗口系统集成;命令集成;交互集成。
控制集成支持工作台或环境中一个工具对系统中其他工具的访问。
过程集成意指CASE系统嵌入了关于过程活动、阶段、约束和支持这些活动所需的工具的知识。
一个CASE工作台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。工作台工具能通过共享文件、共享仓库或共享数据结构来集成。