概述
第九章
1)面向对象方法学的要点和优点
尽可能模拟人类习惯的思维方式....
优点:
与人类习惯的思维方式一致
稳定性好
可重用性好
较易开发大型产品
可维护性好
2)面向对象的一些基本概念
类 实例 消息 方法 属性 封装 继承 多态 重载
3)面向对象建模
用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是描述系统数据结构的对象模型(object model),描述系统控制结构的动态模型(dynamic model)和描述系统功能的功能模型(functional model)。
一个典型的软件系统组合了上述三方面内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。
3)对象模型(最基础最重要的模型)(重点)
对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
在UML(Unified Modeling Language)中用静态结构图(Static Structure Diagrams)——类图(Class Diagrams)表示
4)动态模型(重点)
动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
在UML中用状态图(State Diagrams)、交互图(Interaction Diagrams)和活动图(Activity Diagrams)来表示
5)功能模型(重点)
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。
在传统方法中,功能模型由一组数据流图组成。
UML中用用例图(Use Case Diagrams)来表示。
第十章
1)面向对象分析(OOA): 相当于软件开发过程中的问题定义和需求分析阶段
基本过程:
首先,系统分析员要对需求文档进行分析
然后,是需求建模
最后,是需求评审
三个模型:对象模型、动态模型、功能模型
五个层次:主题层、类&对象层、结构层、属性层、服务层(对应五项活动 可并行处理)
2)需求陈述:提出:做什么“ 描述用户的需求
3)建立对象模型(重点)
步骤:
a.确定类与对象
b.确定关联
c.划分主题
d.确定属性
e.识别继承关系
f.反复修改
4)建立动态模型(重点)
a.编写脚本(正常 异常)
b.设想用户界面
c.画事件跟踪图
d.画状态图
e.审查动态模型
5)建立功能模型(重点)
a.画出功能级DFD
b.描述处理框功能
(要找些题目实际练习)
6)定义服务
1、常规行为
2、从事件导出的操作
3、与数据流图处理框中对应的操作
4、利用继承减少冗余的操作
第十一章
1)面向对象设计准则:
模块化 抽象 信息隐蔽 弱耦合(降低交互耦合 提高继承耦合) 强内聚 可重用
2)软件重用:
代码重用 设计结果重用 分析结果重用
可重用软件特点:
模块独立性强 高度可塑性 接口清晰、简明、可靠
类构件重用方式:
实例重用 继承重用 多态重用
3)系统分解:
问题域子系统 人-机交互子系统 任务管理子系统 数据管理子系统
子系统间交互方式
在软件系统中,子系统之间的交互有两种可能的方式:
§客户—供应商(client-supplier)关系
·单向交互:“客户”子系统调用“供应商”子系统
§平等伙伴(peer-to-peer)关系
·双向交互:任意子系统间均可相互调用
组织系统的两种方案
水平层次组织
垂直块组织
4)设计问题域子系统
§在面向对象设计过程中,可能对面向对象分析得出的问题域模型作的补充或修改:
a.调整需求:简单修改面向对象分析结果,然后再把修改反映到问题域子系统中。
b.重用已有的类:重用已有类的典型过程:
·选择有可能被重用的已有类,标出这些候选类中对本问题无用的属性和服务,尽量重用那些能使无用的属性和服务降到最低程度的类;
·从被重用的已有类中派生出问题域类
·标出问题域类中从已有类继承来的属性和服务
·修改与问题域类相关的关联
c.把问题域类组合在一起:引入一个根类
d.增添一般化类以建立协议:
一些具体类需要一个公共的协议。
·在这种情况下可以引入一个附加类(根类),以便建立这个协议(公共服务集合)。
e.调整继承层次:有些语言不支持多继承
5)设计人机交互子系统
应遵循以下准则:
一致性 减少操作步骤 及时提供反馈信息 提供撤销命令 无须记忆 易学 富有吸引力
策略:
分类用户 描述用户 设计命令层次 使用原型 设计人机交互类 根据GUI界面进行设计
6)设计任务管理子系统
·常见的任务有事件驱动型任务(event-driven tasks)、时钟驱动型任务(clock-driven tasks)、优先任务(prior tasks)、关键任务(key tasks)和协调任务(collaborative tasks)等。
·设计任务管理子系统,包括确定各类任务并把任务分配给适当的硬件或软件去执行。
a.确定事件驱动型任务:某些任务是由事件驱动的,主要完成与硬件设备或其他系统的通信工作。工作过程:睡眠 唤醒(事件中断)执行 睡眠
b.确定时钟驱动型任务:某些任务每隔一定时间间隔就被触发以执行某些处理。 工作过程:睡眠 唤醒(时钟中断)执行 睡眠
c.确定优先任务
d.确定关键任务
e.确定协调任务:
当系统中存在三个以上任务时,就应该增加一个任务,用它作为协调任务。
引入协调任务会增加系统总开销,但有助于把不同任务之间的协调控制封装起来。这类任务仅完成协调工作,不承担其他服务工作。
f.尽量减少任务数
g.确定资源需求
定义各个任务:
模板:任务的定义如下:
Name (任务名)
Description (描述)
Priority (优先级)
Services included (包含的操作)
Communication Via (经由谁通信)
7)设计数据管理子系统
选择数据存储管理模式
不同的数据存储管理模式有不同的特点,适用范围也不相同。
1.文件管理系统(file management system)
2.关系数据库管理系统(Relational DBMS, RDBMS)
3.面向对象数据库管理系统(OO DBMS)
设计数据管理子系统
a.设计数据格式
(1)文件系统
定义1NF表(类的属性表)
为每个1NF表定义一个文件
测量性能和需要的存储容量
修改原设计的1NF,以满足性能和存储需求
(2)关系数据库管理系统
定义3NF表
为每个3NF表定义一个数据库表
测量性能和需要的存储容量
修改先前设计的3NF,以满足性能和存储需求
(3)面向对象数据库管理系统
扩展的关系数据库途径:使用与关系数据库
管理系统相同的方法
扩展的面向对象程序设计语言途径:不需要
规范化属性的步骤,因为数据库管理系统本
身具有把对象映射成存储值的功能。
b.设计相应的服务
(1)文件系统
注意,为提高性能应该批量处理访问文件的要求。
(2)关系数据库管理系统
访问哪些表、怎样访问需要的行、怎样检索
(3)面向对象数据库管理系统
扩展的关系数据库途径:与使用关系数据库管理系统时方法相同。
8)设计类中的服务
设计实现服务的算法 选择数据结构 定义内部类和内部操作
9)设计关联
实现单项关联:
用指针可以方便地实现单向关联。
§如果关联的重数是一元的,则实现关联的指针是一个简单指针;
§如果重数是多元的,则需要用一个指针集合实现关联。
实现双向关联:
§只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。
§两个方向的关联都用属性实现。
§用独立的关联对象实现双向关联。
关联对象的实现:
·实现关联对象的方法,取决于关联的重数。
·对于一对一关联来说,关联对象可以与任何一个对象合并。
·对于一对多关联来说,关联对象可以与“多”端对象合并。
·如果是多对多关联,通常使用一个独立的类来实现关联链,这个类的每个实例表示一条链及该链的属性。
第十二章
1)面向对象语言的优点:
一致的表示方法 可重用性 可维护性
2)代码重用:
内部重用:本项目内的代码重用;外部重用:新项目重用旧项目的代码
3)测试类的方法:测试单个类的方法主要有,随机测试、划分测试和基于故障的测试等三种。
4)面向对象的测试方法:
面向对象的单元测试:
随机测试,划分测试,基于故障的测试
面向对象的集成测试:
多类测试,从动态模型中导出测试用例
面向对象的确认测试:
根据动态模型和描述系统行为的脚本来设计确认测试
最后
以上就是幸福斑马为你收集整理的软件工程复习——九至十二章的全部内容,希望文章能够帮你解决软件工程复习——九至十二章所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复