《软件工程》-面向对象技术

【内容】
1.面向对象概念
(1)什么是面向对象
面向对象=对象+类+继承+通信
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物;如果一个软件系统是使用这样4个概念设计和实现的,则我们认为这个软件系统是面向对象的。
(2)对象
对象是面向对象开发模式的基本成分,是系统中用来描述客观事物的一个实体,构成一个系统的基本单位。
标识:每个对象可用它本身的一组属性和它可以执行的一组操作来定义。
属性:属性一般只能通过执行对象的操作来改变。
操作:操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。
其中,消息(对象和另一对象的通信)
是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。
(3)类
类是一组具有相同数据结构和相同操作的对象的集合。
类的定义包括一组数据属性和在数据上的一组合法操作。
(4)继承
继承是使用已存在的定义做为基础建立新定义的技术。
新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。
2.面向对象方法的开发过程
面向对象方法改进了在生存期各个阶段之间的接口,因为在生存期各个阶段所开发出来的“部件”都是类。
在面向过程生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。
(1)面向对象分析(OOA)
在这里插入图片描述
(2)论域分析
论域分析开发问题论域的模型,考察问题论域内的一个较宽的范围,分析覆盖的范围应比直接要解决的问题更多;建立大致的系统实现环境。
(3)应用分析
应用分析则根据特定应用的需求进行论域分析。
应用(或系统)分析细化在论域分析阶段所开发出来的信息,把注意力集中于当前要解决的问题。
(4)类
类的定义
一旦标识了一个类,就给出了它的规格说明,其中包括类的实例可执行的操作和它们的数据表示。
类的规格说明定义了施加于对象的数据存储上的一组操作。
在这里插入图片描述
类的实现
通过变量的声明、操作界面的实现及支持界面操作的函数的实现,可实现一个类的预期行为和状态。
实现是与语言有关的。一个好的面向对象语言应当分离共有界面与其内部实现。
(5)类的测试
如果类的定义提供的界面比较狭窄,那么穷举测试就有可能实现。
类的测试在最抽象的层次开始,沿继承关系继续向下进行。
已经测试过的部分不需要从新测试。
(6)求精和维护
这是一个在软件生存期中最花费时间的部分。
传统的维护活动是针对应用的,而求精过程是针对类,针对把类集成在一起的结构。
我们可以标识抽象的抽象,使得继承结构通过一般化增加新的层次,即在既存的根类之上增加新的层次。
(7)对象模型化技术OMT
对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。这个模型化的过程是一个迭代过程。
在这里插入图片描述
其中,
1)对象模型
是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。
在OMT中,类与类之间的关系叫做关联。
2)动态模型
动态模型着重于系统的控制逻辑。
它包括两个图,一是状态图,一是事件追踪图。
动态模型由多个状态图组成;各个状态图并发地执行,并可以独立地改变状态。
3)功能模型
功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,直到外部输出,这整个的数据流情况。功能模型中所有的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明。
(8)类和类之间的关联:聚合、限定、角色
聚合:代表整体与部分的关系,这是一种特殊形式的关联。
限定:用以对关联的含义做某种约束。
角色:用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。
(9)面向对象分析(OOA)
1)OOA有两个任务:
形式地说明我们所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。
明确地规定构成系统的对象如何协同合作,完成指定的功能,构造OOA概念模型的层次。
2)构造和评审OOA概念模型的顺序和由五个层次组成,每个层次的工作都为系统的规格说明增加了一个组成部分。
这五个层次是:类与对象、属性、服务、结构和主题。
3)标识结构
一般化—特殊化结构:如果类A具有类B全部属性和服务,并且具有自身特有的属性和服务,类A叫做类B的特殊类,类B是类A是一般类。
在这里插入图片描述
整体—部分结构:如果对象A是对象B的一个组成部分,则称B为A的整体对象,A为B的部分对象,两者之间的关系称为整体和部分关系、
在这里插入图片描述
4)标识一般-特殊结构的方法和策略
它是否在问题论域中?
是否在系统的职责内?
继承性是否存在?
它是否能够符合选择类和对象的标准?
5)标识整体-部分结构的方法和策略
应当寻找什么?
总体-部分关联;
包含-内含关联;
收集-成员关联
6)标识属性的方法和策略
找出属性;
将属性安放在适当的位置;
找出实例连接;
检查特殊情况;
描述属性;
考虑取值范围、极限值、缺省值、建立和存取权限、精确度、是否会受到其它属性值等。
7)定义服务的方法和策略
找出每一个对象的所有状态,在各种状态需要做的工作。
利用状态迁移图;
找出必要的操作;
建立消息连接;
描述服务:利用状态转换图、脚本和事件追踪图,描述服务的功能。
8)识别主题
主题可以看成是高层的模块或子系统 ;
主题是把一组具有较强联系的类组织在一起得到类的集合;对于面向对象分析模型,主题标识此模型的整体框架。
3.面向对象设计(OOD)
(1)高层设计
高层设计阶段开发系统的结构,即构造应用软件的总体模型。
在这里插入图片描述
高层设计的特点:
高层设计可以表征为标识和定义模块的过程。
模块可以是一个单个的类,也可以是由一些类组合成的子系统。
定义过程是职责驱动的。
高层设计应遵循的原则:
应使得子系统的各个高层部件之间的通信量达到最小;
子系统应当把那些成组的类打包,形成高度的内聚;
逻辑功能分组,提供一个一个单元,识别并定位问题事件。
(2)Coad和Yourdon高层设计方法
Coad和Yourdon在设计阶段中继续采用分析阶段中提到的5个层次。
在设计阶段中,这五个层次
问题论域部分 执行基本应用功能的对象
人机交互部分 指定了用于系统的某个特定实现的,界面技术
任务管理部分 指定了那些创建系统是必须建立的操作系统部分
数据管理部分 定义了那些与所用数据库技术接口的对象
4.用户界面部分的设计
在设计阶段必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必需的实际显示和输入。用户界面部分设计主要由以下几个方面组成:
(1)用户分类
按技能层次分类;
按组织层次分类;
按职能分类;
(2)描述人及其任务的脚本
对以上定义的每一类用户,列出对一下问题做出的考虑:什么人、目的、特点、成功的关键因素,熟悉程度以及任务脚本。
(3)设计命令层
研究现行的人机交互活动的内容和准则;建立一个初始的命令层;细化命令层。
(4)设计详细的交互
用户界面设计有若干原则,包括:
一致性:采用一致的术语、一致的步骤和一致的活动;操作步骤少;不要“哑播放”。
(5)继续做原型
用户界面原型是用户界面设计的重要工作。
使用快速原型工具做出原型让用户使用,通过用户反馈、修改、演示的迭代,使界面越来越有效。
(6)设计HIC(人机交互)类
窗口需要进一步细化;设计HIC类,首先从组织窗口和部件的用户界面的设计开始。
5.任务管理部分的设计
任务:进程的别称,是执行一系列活动的一段程序。
任务管理主要包括任务的选择和调整:
(1)定义各个任务
定义任务的工作主要包括:它是什么任务、如何协调工作及如何通信。
6.数据管理部分的设计
数据管理部分提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。
它分离了数据管理机构所关心的事项,包括文件、关系型DBMS或面向对象DBMS等。
数据管理方法主要有3种:文件管理 、关系数据库管理 和面向对象数据管理。
7.面向对象环境下的测试策略
(1)单元测试(类测试)
基于定义的测试(黑盒测试功能),基于程序的测试(白盒测试结构);
在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块。面向对象软件的类测试等价于传统软件开发方法中的单元测试。
(2)组装测试(集成测试)
类组装
测试一个新类时,需要先测试在定义中所涉及的类,再考虑这些类的组装。
总体组装
把所有组成完整软件的各个部分集合在一起。
(3)基于线索测试
(4)基于应用测试
(5)确认测试

猜你喜欢

转载自blog.csdn.net/frj0260/article/details/85106800