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