您的位置:首页 > 其它

软件工程知识·二

2017-04-28 16:47 330 查看


第四章 软件工程知识

本章涉及到了软件工程的知识,对软件开发的细节进行了描述,从需求、设计、测试、维护等进行了细致的讲述。然后重点描述了面向对象的软件开发技术以及UML和软件架构体系的知识。

1.软件需求

软件需求主要包括:功能需求,非功能需求,设计约束;业务需求,用户需求,系统需求。

需求过程是一个包括创建和维护系统需求文档所必须的一切活动的过程,通常包括需求开发和需求管理两大工作。

需求开发:包括需求捕获、需求分析、编写规格说明书和需求验证四个阶段。

需求管理:包括定义需求基线、处理需求变更、需求追踪等方面的工作。

需求规格化:就是编制《软件需求规格说明书》。

需求调查和问题定义的主要内容包括:要捕获的信息、信息的来源、需求捕获技术(用户访谈、用户调查、现场观摩、文档考古、联合讨论会)

2.可行性研究

可行性研究的任务主要包括:技术可行性、经济可行性、社会可行性。

可行性研究的工作步骤:(1)核实问题定义与目标,(2)研究分析现有系统,(3)为新系统建模,(4)客户复核,(5)提出并解决方案,(6)确定最终推荐的解决方案,(7)草拟开发计划,(8)以书面的形式提交《可行性分析报告》并进行审查。

为新系统建模包括:系统上下文关系范围图(即数据流图DFD的0层图),实体-关系图(E-R图),用例模型(以Actor和useer-case整理出系统的主要功能框架),域模型(采用Object Oriented,OO思想,),IPO表。


3.需求分析

需求分析包括绘制上下文范围关系图、创建用户接口原型、分析需求的可行性、确定需求的优先级、为需求建立模型、创建数据字典、使用质量功能调配。

结构化分析与面向对象分析之间最大的区别是:结构化分析方法把系统看作一个过程的集合体,包括人完成的和电脑完成的;面向对象方法则把系统看成一个相互影响的对相集。


4.软件设计、测试与维护

(1)软件设计

软件设计基本远侧:信息隐蔽、模块独立性(内聚(功能、信息、通信、过程、时间、逻辑)和耦合)。

系统结构图:模块、模块间的调用关系、模块间的通信、辅助控制符号。

常用系统结构图:变换型、事务型、混合型。

用户界面:可使用性、灵活性、复杂性和可靠性

(2)软件测试的方法

软件测试按照是否关心软件内部结构和具体实现可以划分为:白盒测试、黑盒测试、灰盒测试。

白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。

白盒测试要求:(1)对程序模块的所有独立的执行路径至少测试一次;(2)对所有的逻辑判定,取真与假的两种情况都至少测试一次;(3)在循环的边界和运行界限内执行循环体;(4)测试内部数据结构的有效性。

逻辑覆盖:是以程序内部的逻辑结构为基础的设计用例的技术。它属白盒测试,包括语句判定、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖。

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

黑盒测试主要是为了发现以下错误:(1)是否有不正确或遗漏了的功能;在接口上,能否正确的接收输入,能否输出正确的结果。(2)是否有数据结构错误或外部信息访问错误;性能上是否满足要求;是否有初始化或终止性错误。

灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。

从软件开发的过程按阶段划分有:单元测试,集成测试,确认测试,系统测试,验收测试,回归测试,Alpha测试,Beta测试。

单元测试可以测试模块接口、局域数据结构、独立路径、错误处理路径和边界条件五个方面的内容。

软件测试的步骤:制定软件测试计划;编写软件测试说明;执行软件测试;编制软件测试报告诉;修正软件测试过程中发现的问题;软件测试阶段评审

(3)软件维护

软件维护的因素包括:可理解性、可测试性、可修改性。


5 软件复用

软件复用指的是利用已有软件的各种知识构造新的软件,以所见开发和维护的费用。

软件再生步骤:筛选、文档重构、逆向工程、代码重构、数据重构、重新开发。


6 软件质量保证及质量评价

软件质量管理过程包括:质量保证过程、验证过程、确认过程、评审过程、审计过程等。


7 软件配置管理


8 软件开发环境


9 软件过程管理

启动和范围定义,软件项目计划,软件项目实施,评审和评价,关闭,软件工程度量。


10 软件构件技术知识

构件分类方法:关键字分类法、刻面分类法、超文本分类法

商业化构件分类:用户界面类、数据库类;商务应用类;工具类、网络通信类;核心技术类

构件组装:基于功能的组装技术;基于数据的组装技术、面向对象的组装技术(构造法,子类法)

软件重用:需求重用;设计重用;代码重用;组织结构的重用;构件库

COM是个开放的组建标准,它有很强的扩展能力。DCOM在COM的基础上添加了许多功能和特性, 包括事物特性、安全模型、管理和配置等。DCOM具有位置独立性和语言无关性。COM+将COM、DCOM和MTS形成一个全新的、功能强大的组件架构。

COBRA(Common Object Request Broker Architecture,公共对象请求代理架构)是由OMG组织指定的一种标准的面向对象的应用程序体系规范。

EJB(Enterprise Java Bean):是用于开发和步数多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。EJB分类:会话Bean(Session Bean)(与客户端一个短暂的会话);实体Bean(Entity Bean)(对应数据实体,它描述了存储在数据库的表中的持久数据);消息驱动Bean(Message-driven Bean)(结合了一个会话Bean和一个Java信息服务(JMS)信息监听者的功能)。


11 面向对象系统分析与设计

(1)面向对象的基本概念

面向对象=对象(objects)+类(class)+继承(inheritance)+消息通信(communication message)

对象:对象标志(供系统内部唯一的识别对象);属性(状态、数据、用来描述对象的静态特征);服务(操作、行为或方法,用来描述对象的动态特征)。

类和类库:类是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。类与对象是抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(instance)。

继承和多态:过载多态(重载多态),强制多态,包含多态,参数多态。前两种统称为专用多态(特定多态),后两者称为通用多态。

消息通信:消息指向对象发出的服务请求,它应该含有下述信息,提供服务的对象标志、消息名、输入信息和回答信息。

(2)对象与封装

对象是系统中用来描述客观事物德尔一个实体,它是构成系统的一个基本单位。面向对象的软件系统是由对象组成的,复杂的对象由比较简单的对象组合而成。也就是说,面向对象方法学使用对象分解取代了传统方法的功能分解。

(3)对象三要素

对象标志(object identifier):即对象的名字,功系统内部唯一地识别对象。定义或使用对象时,均应指定对象标志。

属性(attribute):也称状态(state)或数据(data),用来描述对象的静态特征。在某些面向对象的程序设计语言中,属性通常被称为成员变量(member variable)或简称变量(variable)。

服务(service):也称操作(operation)、行为(behavior)或方法(method)用来描述对象的动态特征,在某些面向对象的程序设计语言中,服务通常被称为成员函数(member function)或简称函数(function)。

封装(encapsulation):是对象的一个重要原则。它有两层含义:第一,对象是其全部属性和全部服务紧密结合而形成的一个不可分割的整体;第二,对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码都被封装在黑盒子里面。

(4)类与类库

类和类库:类是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。类与对象是抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(instance)。

(5)继承与多态

继承是使用已存在的定义作为基础建立新定义的技术。

多态是指类中具有相似功能的不同函数是用同一个名称来实现的,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。

多态考虑的是类与类之间的层次关系,以及自身内部特定成员函数之间的关系问题,是解决功能和行为的再抽象问题。

严格的说,多态性可以分为四类:过载多态(重载多态),强制多态,包含多态,参数多态。从实现的角度来看,多态可划分为两类,即编译时的多态和运行时的多态。

(6)消息通信

消息是指向对象发出的服务请求,它包含:提供服务的对象标志、消息名、输入信息和回答信息。

消息通信与对象的封装原则密不可分。封装使对象成为一些各司其职、互不干扰的独立单位;消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够互相配合,构成一个有机的系统。

只有同时使用对象、类、继承与消息通信,才是真正的面向对象的方法。

(7)面向对象系统分析

OMT(Object Modeling Technique)方法:建立对象模型(确定类和对象、确定结构与关联、划分主体、定义属性、定义服务)、建立动态模型、建立功能模型。

OMT的三个模型分别从三个不同侧面描述了所要开发的系统:功能模型指明了系统应该“做什么”;动态模型明确了什么时候做(即在何种状态下接受了什么事件的触发);对象模型则定义了做事情的实体。

(8)面向对象的系统设计

Coad/Yourdon:发现类和对象、识别结构、定义主题、定义属性、定义服务。面向对象设计模型需要进一步区分以下四个部分:问题域的设计(属性、服务、类和对象、结构、对象行为)、人机交互界面的设计(交互界面子系统的设计,交互界面子系统的和应用之间接口的设计)、应用控制的设计、与问题域有关的设计。

Booch方法:在给定的抽象层次上识别类对象、识别这些对象和类的语义、识别这些类和对象之间的联系、实现类和对象。

OMT方法:从三个视角系统,相应的提供了三种模型:对象模型、动态模型、功能模型。四个阶段:分析、系统设计、对象设计、实现。

Jacobson方法:不同处在于他涉及整个软件生命周期,包括需求分析、设计、实现和测试等4个阶段。关键是用例,Jacobson将用例模型与其它五种系统模型(领域对象模型、分析模型、设计模型、实现模型、测试模型)关联。

接口是对操作规范的说明。


12 软件体系结构

软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式,以及这些模式的约束组成。

(1)典型体系结构

软件体系结构模型:结构模型、框架模型、动态模型、过程模型、功能模型。

逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务。

开发视图:也称模块视图,主要侧重于软件模块的组织和管理。

进程视图:侧重于系统的运行特性,主要关注与一些非功能性需求,例如系统的性能和可用性。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑试题中的主要抽象如何符合进程结构。

物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。

场景:可以看做是那些重要系统活动的抽象,它使四个视图邮寄联系起来,从某种意义上来说场景是最重要的需求抽象。

典型的软件体系结构:数据流风格、调用/返回风格、独立构件风格、虚拟机风格、仓库风格。

分层结构:基于可增加抽象层的设计。有点事支持基于抽象成都递增的系统设计;支持功能增强;支持重用。却低昂:并不是每一个系统都可以很荣德划分为分层的模式;很难找到一个合适的、正确的层次抽象方式。

C2风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络。特点是系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;所有构件的通信都是通过中介的异步信息交换机制来实现的;构件相对独立,构件之间依赖性较少。

C/S(客户-服务器风格):服务器负责管理书籍,客户机完成与用户的交互任务。

三层C/S结构风格:表示层(表示层是应用的用户接口部分,它负担着用户与应用间的对话功能)、功能层(相当于应用的本体,它将具体的业务处理逻辑编入程序中)、数据层(即数据库管理系统,负责管理对数据库的读写)。

浏览器-服务器风格:包括浏览器/Web服务器/数据库服务器。


13 软件体系结构设计方法

(1)系统结构中的模块包括:传入模块、传出模块、变换模块、协调模块。

系统结构图中的主要成分:模块、模块间的调用关系、模块间的通信、辅助控制符号。

常用的系统结构图:变换型系统结构图、事务型系统结构图、混合型系统结构图。

软件体系结构分析与评估方式:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。

(2)软件中间件

中间件技术:中间件是一类软件,而非一种软件;中间件不仅仅实现互联,还要实现应用之间的互操作;中间件是基于 分布式处理的软件,最突出的特点是其网络通信功能。

中间件分类:底层中间件(JVM,CLR,ACE,JDBC,ODBC);通用型中间件(COBRA,MOM,COM;IONA Orbix、BEA Weblogic、IBM MQSeries);集成型中间件(Work Flow、EAI;BEA Weblogic、IBM WebSphere)

中间件发展:规范化;构件化和松耦合;平台化。


14 UML

统一建模语言(Unified Modeling Language ,UML)是一个通用的可视化建模语言,它是面向对象分析的和设计的一种标准化表示,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。

UML提供了以下九种图来对待建系统进行建模:用例图、类图、对象图、构件图、部署图、状态图、序列图协作图、活动图。


15 典型应用集成技术

Web Service技术是解决应用程序之间相互通信的一种技术。Web Service是描述一系列操作的接口。它使用标准的、规范的XML接口。Web application是面向用户的,而Web Service面向的是计算机。

Web Service模型:服务提供者、服务请求者、服务注册中心(发布服务描述、查找服务描述、根据服务描述绑定或调用服务)

Web Service协议堆栈:网络通信(http,SMTP,FTP,JMS,iiop)、消息处理(soap)、描述语言(WSDL)、进程(发现、聚集)。

IIOP:Internet inter-ORB Protocol(互联网内部对象请求协议)

简单对象访问协议SOAP(simple object access protocol):基于XML的RPC(还包括CORBA、COM/DCOM)


参考文献

[1] 白盒测试 http://baike.baidu.com/item/白盒测试 [2] 黑盒测试 http://baike.baidu.com/item/黑盒测试 [3] 软件测试分类http://baike.baidu.com/item/软件测试
[4]薛大龙,刘春淼.系统集成项目-管理工程师教程[M].电子工业出版社2012.7:1-382
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: