9、软件工程面向对象方法学引论总结(精选9篇)
9、软件工程面向对象方法学引论总结 第1篇
1. 面向对象方法学的定义和对象方法学的要点。
面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。面向对象方法学具有下述4个要点。
(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。
(2)把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。
(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。
(4)对象彼此间仅能通过发送消息互相联系。
也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。
2. 面向对象方法学的优点是:(1)与人类习惯的思维方法一致(2)稳定性好(3)可重用性好
(4)较易开发大型软件产品(5)可维护性好
3. 对象的概念,对象的特点?
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以惟一地标识它的名字,而且向外界提供一组服务(即公有的操作)。特点:
① 以数据为中心。不设置与数据无关的操作;
② Object主动处理而不被动地等待被处理,外部只能通过message请求操作;
③ 实现了数据封装。具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法; ④ 具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;
⑤ 模块独立性好:内聚强(①)、耦合松(③ ④)
4. 类、实例、消息、方法、属性、封装、继承、多态性、重载的定义。
类:是对具有相同数据和相同操作的一组相似对象的定义。
实例:是由某个特定的类所描述的一个具体的对象。
消息:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。
方法:是对象所能执行的操作,也就是类中所定义的服务。
属性:是类中所定义的数据。
5. 模型的概念,面向对象建模的概念。要建立哪些模型?
所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物一种无歧义的书面描述。建立三种模型:
① 描述系统数据结构的对象模型(object model).② 描述系统控制结构的动态模型(dynamic model).③ 描述系统功能的功能模型(function model).6. 对象模型是表示静态的、结构化的系统的数据性质。类图是描述类及类与类之间的静态关系。包括定义类、定义属性、定义服务。7. 表示关系的符号:类与类之间通常有关联(Association)、泛化(Generalization)、聚合(Aggregation)、组合(Composition)、依赖(Dependency)等关系。
8. 动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列
关联 泛化 聚合 组合 依赖
9.Association
Generalization
Aggregation
Composition
Dependency
动态模型三要素:
① 事件(event):引发 object 状态改变的控制信息(瞬时)。② 状态(status):即 object 的 attributes 所处的情形(可持续)。③ 行为(action): Object 要达到某种 status 所做的操作(耗时)。10.功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。功能模型由一组数据流图组成。
在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。11.UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。在UML中把用用例图建立起来的系统模型称为用例模型。
用例模型描述的是外部行为者(actor)所理解的系统功能。用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。
9、软件工程面向对象方法学引论总结 第2篇
1.对象:(1)从现实世界:问题的概念和抽象的或具有明确边界和意义的事物
(2)从数据世界:一组数据以施加在这组数据上的一组操作
(3)从系统观点:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,一个对象是由一组属性和对整个属性进行操作的一组服务构成的。(P19)
2.持久对象:生存期可以超越程序的执行时间而长期存在的对象。(P24)
2.主动对象(3种解释):(1)一个能够启动消息传递的对象。(2)一个能为其他对象提供服务的对象,能被拷贝成代理,并且需要并发控制。(3)其方法(操作)由自身状态的改变而激活。(P25)
3.被动对象:其内部的操作需要通过外部消息驱动才能执行的对象。(P25)
4.类:一组具有相同性质(属性和操作)的对象的抽象。(P20)
5.主动类:主动类的对象至少拥有一个进程或线程,因此它能够自主执行(P65)
6.接口:描述一个类或构件的一个服务的操作集(P64)
7.用况:用况是对业务过程所包含的一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者有价值且可观察的结果。(P42)
8.协作:协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的综合(P64)
9.构件:构件是系统中物理的、可替代的部件,它遵循且提供一组接口的实现。(P65)
10.节点:节点也是物理的,是在系统运行时存在的物理元素,它表示了一种可计算的资源,通常至少有一些记忆能力和处理能力。(P65)
11.一般类和12.特殊类:如果类A具有类B的全部属性和服务(操作),而且具有自己特有的某些属性和服务,则类A叫做类B的特殊类,B叫做A的一般类。(P22)
13.关联(关系):事物(类)之间的一种结构关系,或者说是对象之间连接的抽象,用来描述对象之间的相互作用(P67)
14.关联类:关联类是一种具有关联特性和类特性的建模元素,可以将其看出是具有类特性的关联,或者具有管理特征的类(P116)
15.依赖(关系):依赖是两个事物之间的一种语义关系,其中的一个事物的改变会影响另一个事物,反之未必(P106)
16.泛化(关系):泛化是一种“特殊/一般”关系,即特殊事物和一般事物之间的关系。(P108)
17.实现(关系):类元之间的语义关系(P16)
18.链和链属性:对象之间的关联或相互作用表现出不同的类的对象的实例之间的实际的或概念上的联系,称为链。链属性:??(P110)
19.聚合:聚合用来表示事物时间的“整体/部分”关系,“整体”事物是一个较大的事物,它是由多个”部分“事物组成的。(P113-114)
20.问题域:是指特定应用系统的应用领域,即在现实世界中由该系统进行处理的业务范围。(P47)
21.系统责任:指系统应该具备的职能。(P47)
22.消息:消息定义为向对象发出的服务请求(P23和P127)
23.交互:交互是发生在对象之间后对象内部的消息传递行为(P66)
24.事件:一个触发行为成为一个事件,换句话说,所谓事件是指特定时刻内发生的动作。(P139)
25.事件流:(P84)
26.状态:指在对象的生命期中的一个条件或状况(通过属性值体现),在此期间,对象将满足某些条件、执行某些活动或等待某些事件。(p141)
27.状态机:状态机描述了一个对象或一个交互在生命期内响应事件所经历的状态序列,即描述其状态变迁。(P66)
28.封装:封装是对拥有结构和行为的一个对象的元素进行划分的过程,封装完成抽象的契约接口和对象实施的分离(P28)
29.继承:特殊类拥有一般类的全部属性和服务(操作),称为特殊类对一般类的继承(P29)多态:在一般类中定义的属性被特殊类继承之后,可以具有不同的数据类型;同理,一般类中定义的操作,可以在特殊类中具有不同的实现方法。(P31)
31.抽象:抽象即指通过思考进行分离的行为。另一种解释:表示某事物的本质特征(P27)
32.角色:当一个类位于关联的某一端时,该类(的某些实例)就在这个关系中扮演了特定的角色。(这个算??)(P111)
33.限定词(修饰关联):限定词是关联的一个特定的属性,它的值划分了一个关联与一个对象相关的对象集。(p116)
34.UML的规则(命名、范围、可见性、完整性、执行):P70-P71太多了~不想打~
35.UML的公共机制(详述、修饰、通用划分、扩展机制(构造型、标记值、约束))
36.OOPL:面向对象的编程语言,OOD:面向对象设计范式,OOA:面向对象分析方法
37.准则包括标准与原则,模块化设计的标准包括:可分解性、组合性、可理解性、连续性、保护性;设计上应遵循的原则为:语言模块单元、接口很少、小接口、显示接口、信息隐蔽等。
38.面向对象的四个基本要素:面向对象系统是由对象组成的、组成系统的对象抽象成类、类之间存在泛化关系,此种关系支持继承、对象之间通过消息获取对方的服务。
39.应用开发过程六个阶段:需求描述、分析、设计、实现、测试、维护。
40.UML对软件密集型系统的制品进行下述工作:可视化、详述、构造、文档化。41.UML三大建模元素:事物、关系、图,事物分为:角色、实现结构。结构事物、行为事物、分组事物、注释事物,结构事10.简述描述类的基本特征(名称、属性等)并举例物分为:类、接口、协作、用况、主动类、构件、节说明之。点。名称:一个字符串;属性:已被命名的类的42.提交一个应用系统的过程包括:计划和细化、构造、特性;操作:一个服务的实现,该服务可以由类的任实施。何对象,甚至其他类的对象所请求,以影响其行为; 职责:类的契约或责任。
9、软件工程面向对象方法学引论总结 第3篇
1. 软件测试的概念。
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能的测试, 甚至根据需要编写不同的测试工具, 设计和维护测试系统, 对测试方案可能出现的问题进行分析和评估。执行测试用例后, 需要跟踪故障, 以确保开发的产品适合需求。可以说, 软件测试是发现软件错误的过程, 所以对软件要尽早测试和充分测试。
2. 黑盒测试。
大体上分, 软件测试方法可分为白盒测试和黑盒测试2种。黑盒测试也称功能测试或数据驱动测试。它在已知产品应具有的功能条件下, 通过测试来检测每个功能是否都能正常使用。在测试时, 把程序看作1个不能打开的黑盒子, 在完全不考虑程序内部结构和内部特性的情况下, 测试者在程序接口进行测试。常用的黑盒测试的测试方法包括等价类测试法、边界值测试法、决策表、因果图、场景法和正交试验法。
3. 白盒测试。
白盒测试则只根据程序的内部结构进行测试, 而不考虑外部特性, 如果程序结构本身有问题, 比如说程序逻辑有错误或是有遗漏, 则无法被发现。白盒测试可全面了解程序内部的逻辑结构, 无法对所有逻辑路径进行测试。在使用这一方案时, 测试者必须检查程序的内部结构, 从检查程序的逻辑着手, 得出测试数据。常用的白盒测试方法包括逻辑覆盖测试、基本路径测试、分支条件测试、循环测试和数据流测试等。
二、面向对象特征对软件测试的影响
类的封装性和继承性给面向对象软件的开发带来了很多好处, 但却给软件测试带来了不少负面影响。一方面, 面向对象测试用例设计的目标是类, 类的属性和操作是封装的, 而测试需要了解对象的详细状态。另一方面, 继承也给测试用例的设计带来了不少麻烦。继承并没有减少对子类的测试, 相反使测试过程更加复杂。
1. 类和对象对功能模块测试的影响。
在面向对象系统中, 系统的基本构造单元是封装了数据和方法的类和对象, 而不再是一个个能完成特定功能的功能模型。每个对象都有自己的生存期和状态。消息是对象之间相互请示或协作的途径, 是外界使用对象方法及获取对象状态的唯一方式。对象的功能是在消息的触发下, 由对象所属类中定义的方法与相关对象的合作共同完成, 并且对象在不同状态下对消息的响应也可能完全不同。
2. 系统功能实现对测试的影响。
在面向对象系统中, 系统的功能体现在对象间的协作上, 而不再是简单的过程关系调用。面向对象程序的执行实际上是执行一个由消息连接起来的方法序列, 方法的实现与所属对象本身的状态有关, 各方法之间可能有相互作用。为实现某一特定的功能, 可能要激活和调用属于不同对象类的多个成员函数, 形成成员函数的启用链。因此, 基于功能分解的自顶向下或自底向上的集成测试策略不适用于面向对象软件系统的测试。
3. 封装对测试的影响。
封装是指在词法单位之中或之间决定名字可见性的访问控制机制。它支持信息的隐蔽和模块化, 有助于防止全局变量的访问问题。尽管封装不会直接促成错误的发生, 但它却给测试带来了障碍。封装使对象的内部状态隐蔽, 如果类中未提供足够的存取函数来表明对象的实现方式和内部状态, 则类的信息隐蔽机制将给测试带来很多困难。
4. 继承对测试的影响。
继承也是面向对象语言中的一个本质特征。继承可用于一般与特殊关系, 并且方便编码。但继承削弱了封装性, 产生了类似于非面向对象语言中全局数据的错误风险。由于继承的作用, 一个函数可能被封装在具有继承关系的多个类中, 子类中还可以对继承的特征进行覆盖或重定义。
5. 多态对测试的影响。
多态是指一个引用可以与多个对象绑定的能力。多态能减少代码的复杂性和规模, 同时还可以实现动态绑定。但依赖于不规则类层次的动态绑定可能会产生编程人员想象不到的结果。虽然, 某些绑定能正确地运行但并不能保证所有的绑定都能正确地运行。以后绑定的对象可能很容易地将消息发送给错误的类, 执行错误的功能, 还可能导致出现一些与消息序列和状态相关的错误。
三、面向对象软件测试的层次划分
1. 方法测试。
主要考虑封装在类中的1个方法对数据进行的操作。可以采用传统的模块测试方法, 但方法是封装在类中的, 并通过向所在对象发消息来执行, 它的执行与状态有关, 特别是在操作多态性时, 设计测试用例时要考虑设置对象的初态, 并且要设计一些函数来观察隐蔽的状态值, 使它在收到消息时执行指定的路径。
2. 类测试。
在测试过程上等同于传统的单元测试, 面向对象的类测试主要考察封装在1个类中的方法和类的状态行为。进行类测试时要把对象与其状态结合起来, 进行对象状态行为的测试, 因为工作过程中对象的状态可能被改变并产生新的状态。测试范围主要是类定义之内的属性和服务, 以及有限的对外接口部分。在类测试过程中, 不能仅仅检查输入数据产生的结果是否与预期的相吻合, 还要考虑对象的状态, 整个过程应涉及对象的初态、输入参数、输出参数以及对象的终态。
3. 类簇测试 (集成测试) 。
把一组相互有影响的类看做一个整体称为类簇。类簇测试主要根据系统中相关类的层次关系, 检查类之间相互作用的正确性, 即检查各相关类之间消息连接的合法性、子类的继承性、父类的一致性、动态绑定执行的正确性和类簇协同完成系统功能的正确性等特性。其测试有2种不同策略:基于类间协作关系的横向测试和基于类间继承关系的纵向测试。
4. 系统测试。
是对所有程序和外部成员构成的整个系统进行整体测试, 检验软件和其他系统成员配合工作是否正确。另外, 还包括确认测试内容, 以验证软件系统的正确性和性能指标是否满足需求规格说明书的要求。
四、面向对象测试用例设计
1. 测试用例设计。
面向对象的软件测试用例则着眼于适当的操作序列, 以实现对类的说明。黑盒测试不仅适用于传统软件, 也适用面向对象的软件测试。白盒测试也可用于面向对象软件类的操作定义。但面向对象的软件中许多类的操作结构简单明了, 所以有人认为在类层上测试可能要比传统的软件中白盒测试更加方便。
2. 测试用例设计要点。
测试应该唯一地标识每一个测试案例, 并且与被测试的类明显地建立关联, 并陈述测试对象的一组特定状态。对每一个测试建立一组测试步骤, 需要思考或确定的问题包括:对被测试对象的一组特定状态, 一组消息和操作, 可能产生的一组异常, 一组外部条件, 辅助理解和实现测试的补充信息。
五、设计类测试用例
1. 基于故障的测试。
在面向对象软件中, 基于故障的测试具有较高的故障发现能力。基于故障的测试与传统的错误测试推测法类似。首先, 推测软件中可能有的错误。然后, 设计出可能发现这些错误的测试案例。为了推测出软件中可能存在的错误, 应该仔细研究分析模型和设计模型, 这在很大程度上要依靠测试人员的经验。
2. 基于脚本的测试。
基于脚本的测试主要关注用户需要做什么, 而不是产品能做什么, 即从用户任务 (使用用例) 中找出用户要做什么并去执行。这种基于脚本的测试有助于在一个单元测试情况下检查多重系统。所以基于脚本的用例测试比基于故障测试更加接近用户, 而且更复杂。
3. 随机测试。
如果一个类有多个操作功能, 这些操作功能序列有多种排列。而这种不变化的操作序列可随机产生, 用这种可随机排列的序列来检查不同类的实例, 叫做随机测试。随机测试是针对软件在使用过程中随机产生的一系列不同的操作序列设计的测试案例, 可以测试不同的类实例。
4. 划分测试。
划分测试方法与传统软件测试采用的等价划分方法类似, 它减少了测试类所需要测试用例的数量。首先, 用不同的划分方法 (包括基于状态的划分方法、基于属性的划分方法和基于功能的划分方法) 把输入和输出分类。然后, 针对划分出来的每个类别设计测试用例。
六、设计类间测试用例
1. 基于场景的测试。
基于场景的测试关注的是用户需要做什么, 这正是基于故障测试所忽略的。当与不正确的规约发生错误关联时, 软件就可能不执行用户所设定的工作, 这时软件质量就会受到影响。当一个子系统所建立的环境使得另一个子系统失效时, 子系统间的交互错误便会发生。
2. 行为测试。
面向对象的软件开发方法分析 第4篇
【关键词】面向对象 软件开发方法 问题 分析
相比传统的软件开发方法,面向对象的软件开发方法(OMT)实现了质的飞跃,采用了一种自底向上的归纳、自顶向下的分解方法,通过对对象建模的建立,彻底解决了软件开发在需求分析、可维护性以及可靠性三大环节上的问题,同时也大大提高和改善了系统的可维护性。可见,面向对象的软件开发方法,作为一种归纳和演绎思想的综合体现,其对软件设计、软件开发所起的促进作用是毋庸置疑的。
一、传统软件开发方法存在的问题
(一)软件复用性差
在软件开发工程所追求的目标当中,软件复用性是重点之一,同时也是节约人力和提升软件生产率的重要渠道。虽然近年来软件当中的结构化分析、结构化设计和结构化程序开发给软件产业带来了巨大的进步,但是还不足以从根源上解决软件重复使用的问题。
(二)软件可维护性差
传统的软件开发方法过于侧重一致、完整的文件合成最终的产品,以致在整个开发过程中,软件的可测试性、可读性和可修改性成了衡量一个软件产品优劣的重要标准。事实上,在软件的实际应用中,我们可以发现这类产品的维护性差,且所消耗的成本相当高。
(三)开发出的软件不能满足用户需要
传统的结构化方法所涉及的知识领域比较广泛,以致使用它开发大型软件时,一旦遇到系統需求模糊或者系统发生动态变化,就会影响开发效率,导致最终开发出来的软件脱离用户实际需求。
(四)软件质量难以保证
传统的软件开发方法所开发出来的复杂型大型软件,或者是需求模糊的系统,绝大多数都是难以成功投入市场使用的。归其原因,主要有以下两大因素:第一,软件开发人员对用户的实际需求理解不够透彻,以致最后开发出来的软件和用户的期待不相符;第二,所开发出来的软件灵活性低,无法适应用户需求的经常性变化,再加上部分用户有时会在软件的一些使用性能方面提出部分要求,倘若系统的设计和开发是基于过程中,那么软件系统的可扩充性和稳定性就会无法适应变化,而这种变化也会对软件系统自身的机构造成影响,设计、开发的成本也会随之提高。
二、面向对象的软件开发方法
现阶段,面向对象的软件开发方法的研究已经日趋成熟,市场上也不断有新产品涌现。面向对象的软件开发方法有Coad方法、Booch方法和OMT方法等。
(一)Booch方法
Booch方法的最突出特点就是它能够反映出系统的各个方面是如何相互联系和作用的。在一系列的面向对象的软件开发方法中,Booch方法是最早描述当中的基础问题的,其首先提出面向对象是区别于传统软件开发的一种方法。Booch方法认为面向对象的软件分解更接近人们对客观事物的认知,它并没有对各个开发阶段进行明确的周期划分,把主要的工作都集中在软件设计阶段。
(二)Coad方法
Coad方法是通过多年来大型系统开发的经验与面向对象概念的有机结合,该方法在对象、结构、属性和操作的认定方面,提出了一套系统化的原则,并完成了从客户需求角度进一步进行类和类层次结构的认定。Coad方法把软件系统的开发划分为分析和设计两个阶段,虽然说Coad方法没有引入类和类层次结构的术语,但事实上它已经在分类结构、消息关联等概念中呈现了类和类层次结构的特征。从某种程度上来说,Coad方法的概念虽然简单易懂,但是它对各个面向对象和行为的描述不够全面,对象模型的语言表达能力也不突出。
(三)OMT方法
OMT方法是一种跟随OOP向OOD和OOA发展而形成的面向对象的软件开发方法,它的方法涵盖了软件分析、软件设计以及软件实现三大步骤,贯穿于软件开发的全程。OMT还建立了对象模型、动态模型和功能模型三个模型,这三个模型在一定程度上完善了软件,使软件开发更加清晰,也更易于维护。可以说,作为一种以真实世界为对象建模而进行的独立语言设计,OMT方法彻底实现了传统软件开发方法没有完全实现的目标,为绝大多数领域的应用软件提供了一种实际的、高效的、可操作的保证。
(四)UML语言
UML语言是一种建模语言,它是软件工程领域的重要成果之一,在未来,UML语言将会成为面向对象技术领域内的标准建模语言。UML不仅结合了Booch方法、OMT方法、OOSE方法的优势,而且还对其做了进一步的发展,汲取了面向对象技术领域中的其他流派优秀的开发思想,融入了软件工程领域的新思想、新方法、新技术。总而言之,UML是一种通用的标准建模语言,适用于以面向对象技术为基础的任何类型的软件系统,而且还能够在系统开发的不同阶段使用,从需求规格描述直至系统完成后的测试和维护。
综上所述,由于面向对象的软件开发方法所具备的诸多优点,相信面向对象的软件开发方法在未来会有更广阔的前景。可见,开展面向对象的软件开发方法的研究工作,也有着十分重要的现实意义。
【参考文献】
[1]唐黎黎.面向对象的软件工程应用研究[J].现代商贸工业,2010(22).
9、软件工程面向对象方法学引论总结 第5篇
因此,快速原型方法能够很好的解决这一问题,并且在当前软件开发过程中应用十分广泛。快速原型方法能够在了解软件开发需求的前提下,以极快的速度制造出大概结构的过程,虽然不一定能够符合实际使用过程中的需求,但是却能够将开发软件的系统及时的展现出来,同时也能够根据软件的模型来进行更为准确的开发。使用快速原型方法,若是用户对软件开发过程中有不满意的情况,也能够及时的对原型进行改进,从而获取新的目标系统,没有重新进行开发的必要;快速原型建造工具也能够在很大程度上缩短创建系统的时间,使得系统原型在很短时间内就能创建成功,增强了软件的开发效率和质量,同时也促进了用户对软件的使用率,提升软件存在的价值。由于建立原型目的有所差别,在快速原型法实现过程中存在探索型、实验型和进化型等三种不同的类型。
探索型的目的是研究探索,明确木白哦系统的需求和特征需求;实验型是在实验目的下建立原型,在开发软件的前期建立原型来检测方法的可靠性。一般建立的背景为针对问题的方案;进化型目的是演示,为了能够更好的解决系统的适应性,从而生成演示型的系统开发模式。也就是说,在面向对象的软件工程中进行软件需求分析时,采用快速原型法能够提升使用效率,而且还能够避免一些不必要的阶段,节省大量投资。
4结束语
综上所述,软件需求分析对软件工程来说非常重要,不仅是作用于及时发现其中出现的问题,构建合理的原型来帮助分析工作的顺利进行,同时也有利于软件需求分析能够提升效率,并且减少一些经济支出,降低投资为下一个软件的开发做好准备。
参考文献
[1]蔺茹.软件工程中面向对象方法的优势分析[J].电子技术与软件工程,(24):54-55.
基于面向对象方法的物流软件开发 第6篇
该项目的研究有两个初衷:一是完成项目的开发,给交运物流公司信息化支持;二是学习使用面向对象的软件开发方法。
2 Oracle数据库
Oracle数据库系统是美国Oracle公司提供的以分布式数据库为核心的一组软件产品,是目前较为流行的B/S体系结构的数据库之一,它具有以下特点。
2.1 完整的数据管理功能
(1)数据的大量性;(2)数据保存的持久性;(3)数据的共享性;(4)数据的可靠性。
2.2 完备关系的产品
(1)信息准则--关系型DBMS的所有信息都应在逻辑上用一种方法。
(2)保证访问准则。
(3)视图更新准则--只要形成视图的表中的数据变化了,相应的视图中的数据同时变化;
(4)数据物理性和逻辑性独立准则[1]。
2.3 分布式处理功能
一个Oracle分布式数据库由Oracle Dbms、Sql*Net、SQL*CONNECT和其他非Oracle的关系型产品构成,在此项目中采用的是Oracle9i产品。
3 面向对象方法
面向对象方法从根本上解决结构化方法中存在的所有问题。
3.1 系统分析
面向对象系统分析(OOA)对问题进行功能分析,提出待解决的问题。对于交运物流系统来说,在这一阶段要深入了解物流公司的工作习惯,业务范围及业务流程,并建立相应的概念模型,面向对象的分析结果直接约束设计过程及产品功能。此阶段主要工作是给出系统层次结构:主题层,结构层、类&对象层、属性层、服务层[2];系统模型:对象模型、动态模型、功能模型。
3.2 系统设计
面向对象系统设计(OOD)的任务,是在OOA的基础上,根据用户对系统功能和操作使用方面的需求以及技术、经济和运行环境等方面的条件,继续运用面向对象的基本思想与概念,进一步细化、改进和扩展通过系统分析得到的系统逻辑模型,确立系统物理实现的技术方案,即:建立系统物理模型。这一阶段包括:一是从整体的角度对应用程序的框架进行设计,在明确了要解决的问题后对将要开发的软件进行类的划分,确定所需要的各个类模块。二是具体到每一类,应用程序的设计主要就是类的设计,这个阶段贯穿于整个类的生存期。
3.3 系统实现
实例建立:这一阶段是对问题的最后解决,在建立了类的基础上用代码实现对象实例。
组装测试:本阶段把系统组装成一个完整的应用进行测试。
应用维护:面向对象的继承机制使得维护工作相对容易,如果结构设计合理,对于大部分的工作维护一般都发生在类级。
4 C/S部分
整个软件的C/S部分分为前台客户端、后台服务器、后台维护客户端。前台客户端主要实现信息的浏览、发布、检索、诚信档案申请与查询、短信发送、配货卡、交易宝等功能模块;后台服务器能够自动地完成信息的接受与发送等功能;后台维护客户端实现对所有模块的管理,主要有增加、删除、修改、查询等功能。
在系统分析阶段给出了主题层、结构层、类&对象层、属性层、服务层5个层次的VISIO图,这个交运物流的主题包括以下几个:信息管理、财务管理、档案管理、交易管理。下面将以交易管理为例介绍面向对象的软件开发方法,如图1所示。
在服务层中,下面的交易活动图,如图2所示,描述了整个交易的业务流程,根据该图就能够在接下来的系统设计阶段完成对类的划分,从而完成整个交易模块的设计。
因为有准确的系统分析,在接下来的系统设计阶段利用C#编程实现了各种功能。
数据库的连接:
参考文献
[1]徐舒.面向对象软件测试技术研究[J].今日科苑,2010,(02).
面向对象软件测试方法研究 第7篇
关键词:软件测试;面向对象;类测试
中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2013) 24-0000-01
面向对象软件测试技术是针对使用面向对象技术开发的软件而提出的一种测试技术。面向对象开发技术和传统开发技术相比有新的特点,使用面向对象技术开发的程序具有高质量、高效率、易扩展、易维护等优点,这也给它的测试技术带来新的挑战。面向对象软件测试与传统的软件测试相比,由于面向对象技术开发的软件会出现传统软件技术中不存在或者不突出的错误,使得传统的软件测试中次要方面成为了现在的主要问题,影响了软件测试的方法和内容,增加了软件测试的难度。
一、软件测试
(一)软件测试
软件测试是使用人工操作或者利用测试工具按照测试方案和流程对软件产品进行功能和性能方面的评估,检验软件产品是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
(二)面向对象对软件测试的影响
面向对象软件具有抽象性、封装性、继承性和多态性等特点,这些特点对软件测试产生了不同的影响。面向对象程序中子类可以继承父类的功能,父类进行了充分测试后,子类也要设计相应的测试用例进行充分测试,对子类进行测试时不仅要测试子类中的方法,还要重新测试与子类中重定义方法相关的类。面向对象软件测试时,对象的状态通常是信息隐蔽的,测试人员需要在测试类中添加适当的信息来表明对象的实现方法及其内部状态。对于面向对象软件的多态性形成的动态绑定的测试使用传统的静态分析策略是不合适的,需要使用动态的测试标准来解决这个问题。
二、面向对象软件测试方法
面向对象软件测试方法是从传统的软件测试方法中演化而来的,有与传统的软件测试相类似之处,但由于面向对象的软件开发具有继承性和多态性等特点,为了支持和加强数据隐藏的特性,面向对象的软件测试必须向一个类的接口添加操作,所以说面向对象的软件测试方法更复杂一些。
(一)面向对象软件单元测试
面向对象软件单元测试主要是类测试,包括方法测试和对象测试。类是面向对象程序设计的基本单位,对象是类的具体实例,类测试是来验证类的实现和类的说明是否完全一致,如果类的实现是正确的,那么类的每一个具体实例的行为也将是正确的。
面向对象的类测试首先要确定测试方法,通常可以通过代码检查和执行测试用例两种方法来测试类的代码。代码检查方法容易受人为错误的影响,在代码量很大的情况下也会加大它的工作量,而编写一个好的测试用例需要很丰富的经验和较高的技巧。通过类实现的功能来分析所要编写的测试用例,然后根据类的边界值来扩充测试用例。构建测试用例一般是基于前置条件或后置条件,为所有可能出现的情况及情况的组合确定测试用例的需求,在这些可能出现的情况组合下,根据这些需求来构建测试用例,而且还要针对实际情况创建特定输入值的测试用例,并确定它们的正确输出。
测试驱动程序是一个运行测试用例并能够收集运行结果的程序。在面向对象的软件测试中,设计核心类的测试驱动程序十分重要,要求该程序必须思路严谨、结构简单清晰并易于维护。当确定了类的可执行测试用例,测试驱动程序就要创建类的实例来运行该测试用例,并给出测试用例运行的测试结果。
(二)面向对象软件集成测试
面向对象软件集成测试主要是类簇测试。面向对象软件是由若干对象组成的,这些对象互相协调合作来实现软件的功能,在面向对象的软件开发中,对象间的相互协调即对象的交互对于程序的正确性来说是非常重要的,对象的交互方式决定了程序能做什么,从而也就决定了程序是否正确。对象的交互测试是在对类的单独测试的基础上实现的,它来确保对象之间相互传递消息的正确性,它一般执行测试的是嵌入到应用程序中的交互对象。
在面向对象的软件测试当中,除了要考虑对象交互特征面之外,还需要具体的测试技术去实现测试的要求,目前常用的面向对象软件集成测试的方法有抽样测试和正交阵列测试。抽样测试提供了一种运算法则,不需要首先明确测试用例的总体,从一组可能的测试用例中选择测试序列;正交阵列测试是一种特殊的抽样方法,它通过定义一组交互对象的配对方式组合来进行测试,同时要尽量限制测试组合的配置数目,正交阵列测试系统就是挑选某个样本的特定测试技术。
(三)面向对象软件系统测试
在对面向对象软件进行系统测试时,要保证被测系统的完整性,搭建与真实用户实际使用环境相同的测试平台,并且需要参考面向对象分析的结果,对软件的架构进行验证,确保软件可以完全再现问题空间以及完整实现用户需求。系统测试不仅是要检测软件的整体功能行为表现,也是对软件设计开发的再确认,它针对的是非功能需求的测试,包括功能需求以外的所有需求以及注意事项等。系统测试是针对完整软件产品的测试,包括软件、软件运行所依赖的硬件、外设、数据、支撑软件及接口等,确保开发的软件与其依赖的各种资源能够协调运行,形成完整的软件产品。系统测试是软件测试过程中非常重要的阶段,它对测试技术的要求也是最高的。在进行面向对象软件的系统测试时,测试技术人员需要与软件的用户进行交流,根据用户提出的需求给出系统的修改建议,结合用户需求对被测试软件进行测试分析,根据分析结果建立测试用例。
三、结束语
面向对象的软件测试技术是面向对象软件开发中的重要组成部分,本文从面向对象软件的特点出发,分析了面向对象软件测试对传统软件测试的影响,介绍了面向对象软件测试的方法。
参考文献:
[1]王艳丽.面向对象软件簇级测试用例自动生成方法研究与实现[D].长春工业大学,2011.
9、软件工程面向对象方法学引论总结 第8篇
从1982年在美国北卡罗来纳大学召开首次软件测试的正式技术会议至今,软件测试理论迅速发展,并相应出现了各种软件测试方法,使软件测试技术得到极大的提高,软件测试成为软件工程方法中保证软件质量的最重要手段。
传统软件测试技术是面向过程的测试,是从输入/处理/输出的角度检验一个函数或过程能否正确工作,而面向对象软件测试是针对相互协作而又彼此独立的对象的测试。面向对象软件开发的测试目标与传统的软件开发方法相同,都是为了确保软件能正确地和一致地解决待解决的问题,但由于过程性测试方法没有考虑到面向对象软件测试所要涉及的类、继承和多态性,因此这两者是有很大的不同,因而有必要对其进行深入的研究。
2 面向对象测试模型
面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD)和面向对象编程(OOP)三个阶段。分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。
针对这种开发模型,结合传统的软件测试步骤的划分,文献[1]提出一种整个软件开发过程中不断进行测试的面向对象软件测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体。该测试模型给出了面向对象测试OOT与OOA、OOD和OOP三者的对应关系,如图1所示。
OOA Test和OOD Test是对分析结果和设计结果的测试,主要是对分析设计产生的文本进行测试,是软件开发前期的关键性测试。OOP Test主要针对编程风格和程序代码实现进行测试,其主要测试内容在面向对象单元测试和面向对象集成测试中体现。面向对象单元测试是进行面向对象集成测试的基础。面向对象集成测试主要对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递等。面向对象集成测试不但要基于面向对象单元测试,更要参见OOD或OOD Test结果[2]。面向对象系统测试是基于面向对象集成测试的最后阶段的测试,主要以用户需求为测试标准,需要借鉴OOA或OOA Test结果。
2.1 面向对象分析的测试(OOA Test)
传统的面向过程分析是一个功能分解的过程,是把一个系统看成可以分解的功能的集合。这种传统的功能分解分析法的着眼点在于一个系统需要什么样的信息处理方法和过程,以过程的抽象来对待系统的需要。而面向对象分析(OOA)是把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法,最后通常是得到问题空间的图表的形式描述[3,4]。
OOA阶段将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。OOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提供平台。因此,OOA对问题空间分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期大量不可避免的修补工作;而一些冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。因此,对OOA的测试重点应该放在完整性和冗余性方面。OOA阶段的测试划分为以下五个方面:1)对认定的对象的测试;2)对认定的结构的测试;3)对认定的主题的测试;4)对定义的属性和实例关联的测试;5)对定义的服务和消息关联的测试。
2.2 面向对象设计的测试(OOD Test)
通常结构化的设计方法是用面向作业的设计方法,它把系统分解以后,提出一组作业,这些作业是以过程实现系统的基础构造,把问题域的分析转化为求解域的设计,分析的结果是设计阶段的输入。
而面向对象设计(OOD)采用“造型的观点”,以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。OOD确定类和类结构不仅能满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩充,以不断适应用户的要求。因此,对OOD的测试,建议针对功能的实现和重用以及对OOA结果的拓展,从如下三方面考虑[5]:
1)对认定的类的测试;
2)对构造的类层次结构的测试;
3)对类库的支持的测试。
2.3 面向对象编程的测试(OOP Test)
由于面向对象程序具有继承、封装和多态等新特征,使得传统的结构化程序测试策略不能完全适应面向对象程序的测试需要。主要表现在三个方面,即面向对象的封装不能实现传统测试方法中对数据非法操作的测试;面向对象的继承,使错误的传播概率提高,增加了测试的复杂度;面向对象的多态特征使程序内“同一”函数的行为复杂化,增加测试的工作量。
面向对象程序将功能实现分布在类中,类间通过消息传递来协同实现系统的功能。面向对象的这种程序风格将出现的错误精确地确定在一个具体的类中,因此,面向对象编程的测试OOP Test忽略类功能的实现细则,将测试集中在类功能的实现和相应的面向对象程序风格,主要体现为两方面(假设使用C++语言):
1)数据成员是否满足数据封装的要求;
2)类是否实现了要求的功能。
3 面向对象的软件测试内容及层次
面向对象软件测试即在测试过程中继续运用面向对象技术,进行以对象概念为中心的软件测试。Binder在研究了面向对象的特征,如封装性、继承性、多态和动态绑定性等,认为这些特征的引入增加了测试的复杂性。对软件测试层次一种较为普遍的划分方法是根据测试层次结构,面向对象软件测试总体上呈现从单元级、集成级、到系统级的分层测试,测试集成的过程是基于可靠部件组装系统的过程。测试可用不同的方法执行,通常的方法是按设计和实现的反向次序测试,首先验证不同层,然后使用事件集成不同的程序单元,最终验证系统级。根据测试层次结构确定相应的测试活动,并生成相应的层次[6]。由于面向对象软件从宏观上来看是各个类之间的相互作用,因此,将对类层的测试作为单元测试,而对于由类集成的模块测试作为集成测试,系统测试与传统测试层相同。测试流程如图2所示。
3.1 面向对象的单元测试(OO Unit Test)
传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块,面向对象单元测试OO Unit Test在OOP Test时进行,是对程序内部具体单一的功能模块的测试。一些传统的测试方法在面向对象的单元测试中都可以使用,如等价类划分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,程序插装法等等。
当考虑面向对象的软件时,模块单元的概念改变了,封装规定了类和对象的定义。这意味在面向对象单元测试中,最小的可测试单元是封装的类或对象,而不是模块。
类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在。同时,一个对象有它自己的状态和依赖于状态的行为,对象操作既与对象的状态有关,也可能改变对象的状态。所以,类操作时不仅要将操作作为类的一部分,同时要把对象与其状态结合起来,进行对象状态行为的测试。类测试可以分为以下三个部分:[7]
1)基于服务的测试:测试类中的每一个服务(即方法);
2)基于状态的测试:考察类的实例在其生命期各个状态下的情况;
3)基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定的消息序列来测试对象。
基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。Kung等人提出的块分支图(Block Branch Diagram,简称BBD)是一种比较好的服务测试模型(如图3所示)。
服务f的BBD是一个五元组,BBD={Du,Dd,P,Fe,G};Du={di|di∈f引用的全局数据或类数据};Dd={di|di∈f修改的全局数据或类数据};
P={X1θ1,X2θ2,…,Xnθn,Xn+1θn+1∈f的参数表和函数
返回值,θi为↓(输入)、↑(输出),或↓(输入/输出);若Xn+1缺省,
则无返回值};Fe={fi|fi∈被f调用的其他服务};
G是一个有向图,叫做块体。它是按照控制流图的思想修改f的程序流程图而来的,表示f的控制结构中的符合条件判断被分解,每个判断框只有单个条件。
3.2 面向对象的集成测试
传统的集成测试是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的情况下进行。而对于面向对象程序,相互调用的功能是散布在程序不同的类中,类通过消息相互作用申请和提供服务,类相互依赖极其紧密,根本无法在编译时对类进行测试,所以,面向对象的集成测试通常需要在整个程序编译完成后进行。
在面向对象系统中,集成测试属于应用生命周期的一个阶段,可在两个层次上进行。第一层对一个新类进行测试,以及测试在定义中所涉及的那些类的集成。设计者通常用关系is a,is part和refers to来描述类与类之间的依赖,并隐含了类测试的顺序。首先测试基础类,然后使用这些类的类接着测试,再按层次继续测试,每一层次都使用了以前已定义和测试过的类作为部件块。
对于面向对象领域中集成测试的特别要求是:应当不需要特别地编写代码就可把在当前的软件开发中使用的元素集合起来,因此其测试重点是各模块之间的协调性,尤其是那些从没有在一起的类之间的协调性。
集成测试的第二层是将各部分集合在一起组成整个系统进行测试。以C++语言编写的应用系统为例,通常应在其主程序中创建一些高层类和全局类的实例,通过这些实例的相互通讯从而实现系统的功能。对于这种测试所选择的测试用例应当瞄准待开发软件的目标而设计,并且应当给出预期的结果,以确定软件的开发是否与目标相吻合。
3.3 面向对象的系统测试
系统测试是对所有类和主程序构成的整个系统进行整体测试,以验证软件系统的正确性和性能指标等是否满足需求规格说明书和任务书所指定的要求。它与传统的系统测试一样,包括功能测试、性能测试、余量测试等,可套用传统的系统测试方法。通过单元测试和集成测试,仅能保证软件开发的功能得以实现,不能确认在实际运行时,它是否满足用户的需要,是否大量存在实际使用条件下会被诱发产生错误的隐患。为此,对完成开发的软件必须经过规范的系统测试,即开发完成的软件仅仅是实际投入使用系统的一个组成部分,需要测试它与系统其他部分配套运行的表现,以保证在系统各部分协调工作的环境下也能正常工作[8]。
在系统测试中,不关心类的联系细节。同于传统的系统测试,面向对象软件的系统测试集中在用户可见的活动与用户可识别的来自系统的输出。为了导出测试案例,测试者应该使用分析模型中的使用案例,使用案例能够用于导出测试案例以发现不能满足用户交互需求的错误。系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件也应有相应的模拟手段。系统测试不仅是检测软件的整体行为表现,也是对软件开发设计的再确认。
4 结束语
面向对象测试的目标与传统测试相同,但面向对象方法与传统顺序结构式方法在开发思想上有着根本的不同,尤其是面向对象所具有的类、封装、继承、动态连接等特性,使得面向对象软件测试在测试模型、测试方法、测试层次等方面都有别于传统的测试思想。从面向对象的测试模型可知,测试的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件(模块)转向了对象类。
目前,面向对象软件系统的开发在不断的实践中已逐步形成了自己的方法学,但对于面向对象软件测试,目前尚无普遍接受的充分性准则。本文根据传统软件测试模型将面向对象软件开发过程和软件测试相结合,形成一种面向对象测试模型,并对模型的相关步骤和具体实施提出了一些方法和技术,虽已在实践中得到了一定的验证,但也只是初步的,有必要在今后的研究中得到进一步的完善。
参考文献
[1]Beizer B.Black-Box Testing Techniques for Functional Testing of Software and Systems[M].John Wiley&sons,1995.
[2]Coad P,Yourdon E.Object-Oriented Analysis[M].Yourdon Press,1999
[3]汤庸.软件工程方法学及应用[M].武汉:中国三峡出版社,1998
[4]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,2000
[5]陈文宇.面向对象软件的测试[J].电子科技大学学报,2001,6(30):613-617.
[6]徐虹.面向对象的软件测试模型及策略研究[J].计算机与现代化,2005(3):15-18.
[7]刘维光.面向对象软件测试方法的研究[J].电脑知识与技术,2006(29):168-169.
9、软件工程面向对象方法学引论总结 第9篇
Web服务自1989年诞生以来, 迎来了一个又一个飞速的发展, 随之而兴起的面向web服务的软件工程理论也逐渐成为了一门学科, 其子领域需求工程 (Requirement Engineering) 是软件工程的重要组成部分。
目前信息化时代发展迅速, web服务的开发趋于快速、高效, 而现实却是进度超期、成本超预算、需求变更频繁等现象, 甚至很多项目越偏越远以至于无法交付, 这一系列的问题也凸显了需求工程在软件工程中的重要作用[1], 需求分析的重要性也在社会发展的各个领域得到重视, 例如随着电子信息的高速发展, 电子档案的管理软件变得愈加复杂[2], 另外, 对于经济飞跃发展的社会, 资金管理也是发展的重要一环[3], 这些对软件开发都提出了更高的要求, 也体现了需求分析在响应时代发展中的关键作用。
经过长时间的实践验证与优化, 目前需求工程方法大致可以分为四类:面向过程、面向数据、面向控制、面向对象[4,5]。
面向过程的需求方法侧重于事件输入输出的实现方式, 对对象及过程方面并不很重视。结构分析方法SA、SADT和Z等都属于这一类。面向数据的方法主要以分析数据结构来描述开发过程, JSD和关系实体模型都是这种方法。面向控制的方法强调同步、互斥、死锁、并发以及进程控制, 数据流图就是此类。面向对象的方法基于分析系统对象以及对象间交互, 通过对象的属性、结构和关系定义需求。
上述四类需求工程方法都有各自不同的侧重点与实现方式, 表1列出了区别。
目前Web服务的开发过程中, 需求变更成为了需求进程中越来越重要的部分, 同时软件开发需要多方人员的交互与沟通, 需求理解也就成为了关键性因素。因此面向对象的需求工程方法是最适合Web需求开发的方法体系, 其具备良好的可靠性、可维护性及可重用性。
1 面向对象的需求方法
面向对象的需求方法是抽取和整理用户需求, 并将系统相关事物实体进行抽象化, 形成对象模型的过程。面向对象的需求方法中形成了典型方法体系的是[6,7,8,9,10,11,12]:Grady Booch从1983年开始研究, 1991年后走向成熟的Booch方法;Booch方法包括完善的符号体系, 以静态模型表示系统的构成和结构, 以动态模型表示系统执行的行为。Shlaer和Mellor于1988年提出的OOSA方法;OOSA方法以语义模型为基础, 描述了详细的实体属性与关系定义, 但其实现方法与事件流程不够明确。1987年被提出, 1991年Jim Rumbaugh正式应用于面向对象的分析和设计的OMT方法;OMT方法的核心是建立对象模型、动态模型和功能模型。1994年Jacobson提出的OOSE方法, 这种方法中, 用例模型充当整个分析模型的核心, 也是分析阶段、构造阶段和测试阶段的基础。90年代中期由IBM公司提出的VMT方法。它吸取了OMT、OOSA等方法的优点, 并且结合了可视化编程和原型技术。
上述作为面向对象需求方法的代表都具备其优势, 同时也有一定的局限性, 特别是在需求方法的实现过程中缺乏对整体步骤的规范。
从表2可知, 面向对象的需求分析方法着重于建立对象模型, 在需求分析的过程中没有实现规范的全过程, 上述的5种方法, 需求工程阶段的某些过程均有所缺陷, 因此, 本文提出了一种基于面向对象的思想, 而涵盖了需求分析全过程的需求方法。
2面向对象的全过程需求方法OOWP
根据前文分析, 得出面向对象的全过程需求方法 (OOWP) , 即建立在面向对象的需求工程方法论之上, 以实现需求工作的全过程为实现方式。如图1所示, 整个需求模型可以分为6个步骤, 其中 (1) ~ (3) 是需求定义, (4) 为需求捕获, (5) 为需求分析, (6) 是需求建模, ‡为需求描述, ˆ是反复的需求迭代。
下面详细说明这一模型的具体步骤与实现方式:
Step1、需求定义。需求定义面向的对象是系统可以初步划分的子系统或主题域, 目的是确定系统的宏观需求, 明确系统的目标和范围, 需求定义阶段的输出物是需求模型, 分为3个步骤:
(1) 确定利益相关者。利益相关者源于“Stakeholder”[13], 表示与系统一切利益上有联系的人员, 一般包括系统投资者、系统管理者、系统开发者、最终用户等。不同的利益相关者对于系统的关注点有所不同, 确定了利益相关者的需求即确定了系统对象中人员实体的需求。
(2) 划分主题域/子系统。确定了所有的利益相关者之后, 将整个系统划分为不同的主题域, 或者说是子系统。这些主题域分别可以实现相对独立的功能, 但同时也存在一些数据接口或业务事件上的联系。传统的主题域划分往往采用图2 (a) 中所示的方式, 但是这种方式没有很好的将业务结构体现出来, 主题域之间关系也不够明确, 为了更好的分析子系统之间的关系以及接口连接等, 选用图2 (b) 中所示的构件图方式[14]。
(3) 定义系统范围与边界。一个系统所能实现的功能总是有限的, 确定系统的范围与边界有助于把控开发过程与开发量。
Step2、需求捕获:需求捕获面向的对象是最终用户, 需要有计划性与科学性, 计划性指对捕获对象、问题、时间的计划, 科学性是指选取科学有效的捕获方法。
OOWP方法中需求捕获的方法包括:
(1) 用户访谈。最基础最实用的需求捕获方法, 但捕获样本较少。
(2) 问卷调查。问卷调查可以广泛的获取用户需求反馈, 但信息层次较浅。
(3) 资料调研。资料调研在技术上能够提供很好的建议, 同时可以弥补数据的不足。
(4) 现场考察。需求分析人员到需求发生的场景进行实地考察, 以便对需求问题有更感性的认识。
(5) 参与开发。参与开发即让用户代表、需求分析人员参与系统开发讨论过程, 切实体验从需求转变为解决方案。
Step3、需求分析:需求分析面向的对象为业务流程或事件, 这是需求工程中最核心的部分, 结合前面的需求定义与需求捕获阶段的产物, 进一步的进行细化与组织。
需求分析需要先定义信息模型, 对应OOSA中的信息模型, 用于确定对象定义、对象属性、对象关系和多个对象结构。然后根据信息模型确定业务模型, 包括对象的生命周期, 事件的流转过程等, OOWP方法中业务模型与OOSE中的设计模型, OMT中的动态模型, 以及OOSA的处理模型较为相似, 但本方法中侧重业务流, 即事件过程, 因此命名为业务模型。
Step4、需求建模:需求建模是实现需求分析的手段, 它通过模型化工具将需求分析的产物表达出来, 能够更好的建立分析过程, 同时便于需求理解与管理。
(1) 需求模型, 需求定义阶段的产物, 实现方式为构件图、上下文关系图等。
(2) 业务模型, 需求分析阶段的产物, 实现方式为活动图、时序图、协作图等。
Step5、需求描述:需求描述就是将前期阶段的输出物进行文档化的过程, 根据一定的文档规范输出需求说明书。Web服务工程中适用以建模图形化为主, 自然化语言为辅的方式进行需求描述。建模图形为需求建模阶段输出的需求模型和业务模型。
Step6、需求迭代:需求迭代也称为需求验证, 是不断的将需求工作进行复查与核审, 以期在开发之前明确需求内容, 减少因需求错误或变更带来的成本投入与风险。
3 方法应用
本文以电信运营商开放平台的需求分析为实例, 说明面向对象的全过程需求方法是如何实现的。
开放平台的概念在互联网行业已然不陌生[15], 但国内运营商仍处于起步阶段。电信运营商的开放平台主要开放自身业务支撑能力, 如信息查询能力、计费结算能力、电商支付能力等, 实现电信运营商与多产业的融合, 借助第三方企业的入口, 争取市场份额, 提升自身核心竞争力[16]。
下面将根据电信运营商开放平台的整体定位, 运用OOWP工程方法进行需求实现。
Step1、需求定义。
(1) 确定利益相关者。电信运营商的开放平台所面向的用户是企业级用户, 可细分为互联网企业、电商企业、政企客户及中小型企业等;同时开放平台的能力提供方也是利益相关者之一;另外, 作为平台的运营管理者、系统开发者同样也是利益相关者。
(2) 划分主题域/子系统。开放平台的主要功能包括能力开放管理、用户管理、接口向能力封装, 因此划分了如图3所示的三个子系统。
(3) 明确范围与边界。将每个子系统当做黑盒子, 确认外部相关者与相关行为, 这样也就得到了完整的上下文关系图 (如图4) , 即明确了系统的范围与边界。
Step2、需求捕获。
需求捕获采用问卷调查、资料调研、参与开发方式。首先制定问卷, 了解运营商内部及各需求方对于能力开放的业务需求;然后通过资料调研, 研究当前业内开放平台的业务模式及技术架构;最后, 集中运营商内部人员, 参与开放平台架构设计、开放能力确定、功能点分析等方面的讨论。
Step3、需求分析。
(1) 确定需求模型。图明确了开放平台的主题域划分, 然后进行系统的范围与边界分析, 以上下文关系图形式展现。
(2) 确定业务模型。将主题域中的业务流程进行细化分解, 例如开放平台中企业用户管理子系统相关的业务事件如图5所示。
Step4、需求建模。需求模型前文已经表述, 业务模型则是通过活动图、时序图、协作图等来说明具体的业务流程。图6为开放平台中应用的生命周期活动图 (因篇幅原因, 此处只举活动图为例说明) 。
Step5、需求描述。结合前文输出的需求模型、业务模型等, 进行有效的组织与衔接, 形成需求规格说明书。
Step6、需求迭代。将上述的步骤反复迭代, 形成更为严谨、系统的需求描述。
4 结论
【9、软件工程面向对象方法学引论总结】相关文章:
面向服务软件体系06-01
面向构件的软件开发08-07
网络安全方法软件工程论文04-22
网络安全方法软件工程论文提纲10-09
用软件工程方法改革微机教学培养创新能力09-10
浅谈软件工程的教学模式和方法09-11
网络安全方法软件工程论文参考文献11-02
面向项目驱动的软件文档写作课程教学研究09-13
软件工程学习总结07-27