软件工程 第8章 面向对象的开发技术
- 格式:ppt
- 大小:498.00 KB
- 文档页数:39
第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。
如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。
实现方案用UML交互图表示。
(2)设计技术支撑设施。
在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。
这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。
例如,数据的持久存储服务、安全控制服务和远程访问服务等。
在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。
此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。
因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。
该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。
一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。
在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。
顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。
第1章软件与软件工程的概念1、1 举出您所知道的应用软件的例子。
办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。
1、2 认为“软件就就是程序,软件开发就就是编程序。
”这种观点就是否正确?为什么?认为“软件就就是程序,软件开发就就是编程序。
”这种观点就是错误的。
首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。
1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。
1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。
典型表现:(1)对软件开发成本与进度的估计常常很不准确。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常就是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:(1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。
(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。
(3) 软件开发过程不规范。
如,没有真正了解用户的需求就开始编程序。
(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。
需要很多人分工协作,不仅涉及技术问题,更重要的就是必须有科学严格的管理。
(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。
1、5 什么就是软件工程?软件工程就是指导计算机软件开发与维护的工程学科。
判断题:第1章概述1。
由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2。
由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵.(×)4。
大多数软件产品在其生命周期中不需要增强功能。
(×)5。
大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。
(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。
(√)2。
UML语言支持面向对象的主要概念,并与具体的开发过程相关。
(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。
(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。
(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器.(√)3. 良好的分层体系结构有利于系统的扩展与维护。
(√)4。
消除两个包之间出现的循环依赖在技术上是不可行的.(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。
(√)第8章面向对象设计1。
面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型.(√)2。
系统设计的主要任务是细化分析模型,最终形成系统的设计模型.(×)3。
关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
(×)4。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
第1章概述〔习题与参考答案〕[判断题]1. 由于今天个人计算机不断开展壮大,人们不再采用软件团队的开发方式。
〔×〕2. 由于软件是产品,因此可以应用其他工程制品所用的技术进展生产。
〔×〕3. 购置大多数计算机系统所需的硬件比软件更昂贵。
〔×〕4. 大多数软件产品在其生命周期中不需要增强功能。
〔×〕5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
〔√〕6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
〔×〕[选择题]1. 〔〕因素促使计算机系统越来越复杂。
〔D〕A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系构造方面的深刻变化D. 以上所有选项2. 下面的〔〕不再是现代软件工程师关注的问题。
〔A〕A. 为什么计算机硬件的本钱这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的本钱这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于〔〕。
〔C〕A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于〔〕。
〔C〕A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的〔〕说法是正确的。
〔C〕A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的根本目标是〔〕。
〔B〕A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. 〔〕是将系统化的、标准的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
第一篇软件工程引论第1章软件工程概述1.1 软件1.2 软件危机1.3 软件工程1.4软件生存周期1.5软件开发模型1.6 软件工程技术的发展1.7本章小结习题第二篇传统软件工程第2章软件问题定义及可行性分析2.1 软件问题定义2.2 可行性研究的任务2.3 可行性研究的步骤2.4 系统流程图2.5 数据流图2.6 数据字典2.7 成本效益分析2.8本章小结习题第3章需求分析3.1 需求分析的任务和原则3.2 需求分析的步骤3.3 结构化需求分析方法3.4 需求分析的图形工具3.5 需求管理3.6 本章小结习题第4章总体设计4.1 总体设计的目标和任务4.2 总体设计的过程4.3 总体设计的原理4.4 软件结构设计准则4.5 描绘软件结构的图形工具4.6 面向数据流的软件结构设计方法4.7本章小结习题第5章详细设计5.1 详细设计的目标和任务5.2 详细设计的原则5.3 用户界面设计5.4 详细设计工具5.5 面向数据结构的设计方法5.6 程序复杂程度度量5.7本章小结习题第6章软件编码与软件测试6.1 程序设计语言6.2 程序设计风格6.3 软件测试定义6.4 软件测试方法6.5 软件测试过程6.6 测试用例定义6.7 黑盒测试用例设计6.8 白盒测试用例设计6.9 软件测试原则和策略6.10 软件调试6.11 本章小结习题第7章软件维护7.1 软件维护概述7.2软件维护类型7.3 软件维护过程7.4 软件可维护性7.5 软件重用和再工程7.6 本章小结习题第三篇面向对象软件工程第8章面向对象技术与UML8.1 面向对象技术概述8.2 UML概述8.3 UML图8.4本章小结习题第9章面向对象分析9.1 面向对象分析概述9.2 面向对象分析过程9.3 面向对象分析原则9.4 建立对象模型9.5 建立动态模型9.6 建立功能模型9.7 本章小结习题第10章面向对象设计10.1 面向对象设计概述10.2 面向对象设计过程与准则10.3 面向对象设计启发规则10.4 系统设计10.5 对象设计10.6本章小结习题第11章面向对象编码与测试11.1 面向对象设计语言11.2 面向对象设计风格11.3 面向对象测试策略11.4 面向对象测试用例设计11.5本章小结习题第四篇软件管理与项目实例第12章软件项目管理12.1 软件项目管理概述12.2 软件项目估算12.3 进度管理12.4 风险管理12.5 团队管理12.6 质量管理12.7 软件配置管理12.8 本章小结习题第13章软件工程标准与文档13.1 软件工程标准13.2 软件文档与编写要求13.3 软件文档撰写规范指南13.4本章小结习题第14章项目实例14.1 XXX系统实例(传统软件工程项目实例)14.2 XXX系统实例(面向对象软件工程项目实例)14.3本章小结习题参考文献。
第3章软件项目管理(习题与参考答案)[选择题]1. 软件项目管理的“4P”是()。
(C)A. people,performance,payoff,productB. people,product,performance,processC. people,product,process,projectD. people,process,payoff,product2. ()项目管理在现代软件开发中是不太重要的,因为大多数项目能够及时完成并成功交付。
(B)A. 真B. 假3. 在软件开发的各种资源中,()是最重要的资源。
(C)A. 开发工具B. 方法C. 硬件环境D. 人员4. 软件项目规划的第一步是()。
(D)A. 确定项目预算B. 选择团队的组织模型C. 确定项目的约束D. 建立项目的目标和范围5. 下面的()方法最不适合你向团队成员解释他或她为什么表现不合格。
(B)A. 个人谈话B. 项目团队会议C. 正式报告D. 电子邮件6. 功能点估算技术需要以()为基础进行问题分解。
(A)A. 信息域B. 项目进度C. 软件功能D. 过程活动7. 软件开发团队的每一个成员都应该参与计划活动,以便()。
(C)A. 降低计划的粒度B. 深入地分析需求C. 所有成员同意该计划D. 开始设计8. 在攻克技术难题时,最佳的开发团队组织模型是()。
(A)A. 民主式结构B. 主程序员式结构C. 技术管理混合式结构D. 以上所有选项都不是9. 在选择开发团队组织结构时应考虑()因素。
(E)A. 沟通的复杂程度B. 最终程序的规模大小C. 发布日期的严格程度D. 项目预算的多少E. 选项A,B和C10. 在软件开发过程中避免受挫的最佳方法之一是()。
(A)A. 给予团队成员对于过程和技术决策的更多控制权B. 给予团队成员对于过程和技术决策的更少控制权C. 向团队成员隐瞒坏消息直到事情有所改善D. 根据生产效率奖励团队成员11. 下面的()软件特性不是引起项目协调困难的一个因素。
面向对象的软件开发方法分析论文•相关推荐面向对象的软件开发方法分析论文面向对象的技术是计算机软件技术史上的一次革命,为软件开发拉开了新的篇章。
面向对象的软件开发方法,是一种以对象建模为基础,自底向上和自顶向下相结合的方法,包括了所有对象的数据结构。
基于此,文章从传统软件开发方法存在的问题出发,并以此为基础,对面向对象的软件开发方法展开分析,以供参考。
相比传统的软件开发方法,面向对象的软件开发方法(OMT)实现了质的飞跃,采用了一种自底向上的归纳、自顶向下的分解方法,通过对对象建模的建立,彻底解决了软件开发在需求分析、可维护性以及可靠性三大环节上的问题,同时也大大提高和改善了系统的可维护性。
可见,面向对象的软件开发方法,作为一种归纳和演绎思想的综合体现,其对软件设计、软件开发所起的促进作用是毋庸置疑的。
一、传统软件开发方法存在的问题(一)软件复用性差在软件开发工程所追求的目标当中,软件复用性是重点之一,同时也是节约人力和提升软件生产率的重要渠道。
虽然近年来软件当中的结构化分析、结构化设计和结构化程序开发给软件产业带来了巨大的进步,但是还不足以从根源上解决软件重复使用的问题。
(二)软件可维护性差传统的软件开发方法过于侧重一致、完整的文件合成最终的产品,以致在整个开发过程中,软件的可测试性、可读性和可修改性成了衡量一个软件产品优劣的重要标准。
事实上,在软件的实际应用中,我们可以发现这类产品的维护性差,且所消耗的成本相当高。
(三)开发出的软件不能满足用户需要传统的结构化方法所涉及的知识领域比较广泛,以致使用它开发大型软件时,一旦遇到系统需求模糊或者系统发生动态变化,就会影响开发效率,导致最终开发出来的软件脱离用户实际需求。
(四)软件质量难以保证传统的软件开发方法所开发出来的复杂型大型软件,或者是需求模糊的系统,绝大多数都是难以成功投入市场使用的。
归其原因,主要有以下两大因素:第一,软件开发人员对用户的实际需求理解不够透彻,以致最后开发出来的软件和用户的期待不相符;第二,所开发出来的软件灵活性低,无法适应用户需求的经常性变化,再加上部分用户有时会在软件的一些使用性能方面提出部分要求,倘若系统的设计和开发是基于过程中,那么软件系统的可扩充性和稳定性就会无法适应变化,而这种变化也会对软件系统自身的机构造成影响,设计、开发的成本也会随之提高。