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