第1页:面向对象软件工程封面
本课程系统讲授面向对象的软件开发方法学,内容包括 OO 的思想体系、OOA/OOD/OOT 方法、基于 OO 的软件开发过程以及支持工具与环境。
第2页:面向对象的软件开发方法学
面向对象的软件开发方法学主要内容:
- OO 的思想体系
- OO 的方法:OOA(面向对象的需求分析方法)、OOD(面向对象的软件设计方法)、OOT(面向对象的软件测试方法)
- OO 的开发过程
- OO 的开发工具
第3页:主要内容体系
课程主要内容按下列线索展开:
- OO 的思想体系
- OOA
- OOD
- OOT
- 基于 OO 的软件开发过程
- OO 支持工具/环境
第4页:课程目标
课程目标:
- 掌握面向对象的软件开发方法学:面向对象的思想体系,面向对象的需求分析、软件设计的技术和方法,面向对象的软件开发工具
- 能够熟练利用面向对象的方法、技术和工具,进行大、中型软件项目的需求分析、软件设计和软件测试
- 为未来从事软件方法学的进一步研究奠定软件工程方面的基础
第5页:学习方法与要求
学习方法与要求:
- 在实践中体会面向对象的软件开发方法学的思想、方法和技术,在实践中提高学习方法
- 课外实践与课堂教学同步展开
- 培养自顶向下的抽象思维能力
- 培养独立解决问题的能力和合作精神
第6页:参考书目
参考书目:
- 《软件工程》,齐治昌、谭庆平、宁洪,高等教育出版社,2004
- 《UML 精粹》,Martin Fowler,中译本,2002
- 《UML 应用建模实践过程》,尤克滨,机械工业出版社,2003
- 《Mastering UML with Rational Rose》,电子工业出版社,2000
- 《统一软件开发过程》,Ivar Jacobson 等,机械工业出版社,2002
第7页:ATM系统问题描述
问题描述:建立自动柜员机(ATM)系统软件。
- 整个 ATM 系统包括 ATM、中央服务器、ATM 系统软件及界面软件
- ATM 系统软件的任务是处理 ATM 与银行电脑之间的交易:查账、存款、取款
- 使用本系统的银行有多家,每家银行都有各自的电脑系统,处理其客户的帐号和交易
- 所有 ATM 均通过一台中央服务器与每家银行的电脑系统通信
- 对所有从 ATM 上发生的交易,必须记录详细的日志信息
- 必须考虑系统未来的扩展,如增加 Web 客户端
第8页:OOA建立问题的OOA模型
面向对象的开发过程第 2 步:OOA,建立问题的 OOA 模型。
本页以图示方式给出 ATM 问题域中识别出的对象及其相互关系。
第9页:OOD描述对象如何协作
面向对象的开发过程第 3 步:OOD,描述 OOA 模型中的对象如何协作完成任务。
第10页:OOD描述对象协作(续)
面向对象的开发过程第 3 步:OOD(续),进一步描述 OOA 模型中的对象协作关系与消息传递过程。
第11页:OOP实现CATM类
面向对象的开发过程第 4 步:OOP,根据 OOD 模型生成 C++/Java 程序。
class CATM : public CAgent:以编号、名称、位置构造 ATM 对象- get/set 函数:
getLocation() 返回 ATM 所在位置 - 命令函数:
login() 刷卡登录并返回会话号,logout() 结束会话 - 私有属性
m_strLocation 保存 ATM 位置
第12页:OOP实现CAccount类
根据 OOD 模型生成的 CAccount 类(C++ 实现示例):
- 以客户编号、客户姓名和初始储蓄额构造账户对象
- get/set 函数:
getCustomerID()、getCustomerName() - 命令函数:
deposit() 按金额与存期类型存款,draw() 按金额取款 - 私有成员
m_transactionRecord 记录交易流水
第13页:OO方法与结构化方法的区别
面向对象方法与结构化方法的区别| 方法 | 核心特点 |
|---|
| OO 方法 | 对现实世界中的实体或者概念对象进行建模;对象各负其责;对象通过消息进行协同,完成复杂的任务 |
|---|
| 结构化方法 | 研究功能分解的方法;通过复杂的功能组合实现系统功能 |
|---|
第14页:面向对象方法的优越性
面向对象方法的优越性:
- 直观、自然、简单
- 支持递增式开发
- 支持软件重用
- 软件结构更科学,更能够适应未来变化
- ……
第15页:第一章软件工程概论目录
第一章 软件工程概论:
- §1.1 软件工程的目标
- §1.2 软件工程的原则
- §1.3 软件质量控制
- §1.4 软件工程与软件开发实践
第16页:软件工程的目标
在给定成本、进度的前提下,开发出具有下列特性的软件产品:
- 正确性、可靠性、有效性
- 可理解性、可修改性、可维护性、可移植性
- 可重用性和可追踪性
第17页:软件工程的原则
§1.2 软件工程的原则:
- 抽象
- 可验证性
- 完全性
- 一致性
- 模块化(高内聚,低耦合)
- 信息隐藏(局部化)
第18页:软件质量要素:运行特征
§1.3.1 软件质量要素 —— 1. 关于软件的运行特征:
- 正确性
- 软件满足规格说明及完成用户目标的程度
- 可靠性
- 在给定时间间隔内,软件成功运行的概率
- 有效性
- 软件的时空效率
- 完整性
- 控制未被授权人员访问程序和数据的程度
- 可用性
- 使用软件的难易程度
第19页:软件质量要素(续)
§1.3.1 软件质量要素(续):
- 可理解性
- 结构清晰,直接反映问题需求,易理解(关于软件承受修改的能力)
- 可维护性
- 软件交付使用后进行修改的难易程度
- 灵活性
- 改变软件的功能或行为所需的工作量
- 可移植性
- 软件从一个环境移到另一个环境的难易程度(关于软件对新环境的适应能力)
- 可重用性
- 软部件可以在多种场合应用的程度
- 可互操作性
- 多个软件交换信息并相互使用已交换信息的能力
第20页:软件质量控制方法
§1.3.2 软件质量控制方法:
- 系统化的开发方法与工具,例如 OOA、OOD 与 OOP
- 良好的软件结构:高内聚、低耦合,信息隐藏,局部化
- 标准化,文档化
第21页:程序设计规则
§1.4 软件工程与软件开发实践 —— 1. 程序设计规则:
- 统一的、有意义的变量命名与函数命名方法
- 统一的编码风格与格式
- 统一的、准确的、完整的程序注解
- 变量与函数的作用域尽量小
- 尽量采用简单的算法
- 模块之间的接口尽量简单、自然
第22页:软件开发规则
§1.4 软件工程与软件开发实践 —— 2. 软件开发规则:
- 开发未始,规则先行
- 勿因小失大
- 文档和程序同样重要
- 软件质量是首要目标
- 软件结构至关重要
第23页:本章小结
本章小结:
- 软件工程的原则
- 软件工程的目标
- 软件质量控制方法
- 程序设计与软件开发规则