软件工程 第8章 面向对象的开发技术
软件工程 第八章 面向对象的设计方法
第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。
如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。
实现方案用UML交互图表示。
(2)设计技术支撑设施。
在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。
这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。
例如,数据的持久存储服务、安全控制服务和远程访问服务等。
在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。
此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。
因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。
该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。
一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。
在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。
顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。
软件工程 第三部分 软件设计与建模--面向对象设计
(2) 块状组织 把系统垂直地分解成若干个相对独立的、弱耦 合的子系统/块,每块提供一种类型的服务。
采用层次与块状的混合结构
3. 设计(分布式)系统的拓扑结构 由子系统组成完整的系统时,典型的拓扑结构 有管道形、树形、星形等。设计者应该采用与问题 结构相适应的、尽可能简单的拓扑结构,以减少子 系统之间的交互数量。
3. 设计简单的类 小而简单的类便于开发和管理(高内聚)。为使 类保持简单,应该注意以下几点。 (1) 避免包含过多的属性:完成的功能可能太多了。 (2) 有明确的定义:任务应该简单。 (3) 简化对象之间的合作关系。如果需要多个对象 协同配合才能做好一件事,则破坏了类的简明性和 清晰性。 (4) 不要提供太多服务。典型地,一个类提供的公 共服务不超过7个。
层次图、结 构图、流程 图、N-S图、 PAD图、判 定表、判定 树等
面向对象设计方法比结构化设计方法更具有优势, 9/71 使用范围更广。
内容摘要
• • • • • 面向对象设计方法概述 面向对象设计原则 面向对象设计的启发规则 系统设计 对象设计
10/237
面向对象设计原则
• 强调模块化、抽象化、信息隐蔽、高内聚低耦合、复用性等 设计准则。
4/71
什么是面向对象设计(OOD)?
(二)现今(90年代后)的OOD • 面向对象的设计(OOD)就是在OOA模型的基础上运 用面向对象方法进行系统设计,目标是产生一个符合具 体实现条件的OOD模型。
OOD的特点: • 1、以面向对象的分析为基础,一般不依赖结构化分析。 • 2、与相应的OOA方法共同构成一种OOA&D方法体系。 OOA和OOD采用一致的概念和原则,但属于软件生命 周期的不同阶段,有不同的目标及策略。 • 3、较全面地体现面向对象方法的概念与原则。 • 4、大多数方法独立于编程语言,通过OOA&D所得到 的系统模型可以由不同的编程语言实现。
软件工程学第三版课后习题答案
P 0.048 0.72
789 4474263 5, (美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序
共需4474263条指令。 在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。 为了开发出4474263条指令以装满存储器,需要的工作量 是:
13:07:42 重庆工学院计算机科学与工程学院 李梁(liliang@)
2
作业及解答(第1-2章)
1-5 根据历史数据可以做出如下的假设 : 对计算机存储容量的需求大致按下面公式描述的趋势逐年 增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降: P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为: P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代 表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势 。要求计算:
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
17
作业及解答(第3章)
E1 储户
F1存款单 F2取款单
P0储蓄系统
F3存单 F4利息清单
E1 储户
F5存款信息 F5存款信息
D1存款信息
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
18
E1 储户
F1存款单 F7密码
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
软件工程概论课后答案解析
第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。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
软件工程概论_8_面向对象需求分析
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
数据模型
属性、操作、协作者
功能模型
类/对象 模型
对象关系模型
使用实例
对象-行为模型
行为模型
二.面向对象分析模型描述工具
1. 用例图
2.面向对象建模 (1)建模与模型 建模是将问题域的解空间定义成一种模型,以帮助系统分析 人员更好地理解问题。 模型是为了理解问题而对问题所做出的一种抽象,而且是对 问题的一种无歧义的描述。模型由一组图示符号和组织这些 符号的规则组成。利用它们来定义和描述问题域中的术语和 概念。 建模的目的主要是为了减少复杂性。 (2)面向对象模型
2) 面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-&-对象、识别 结构、识别主题、定义属性和定义服务(方法)。对于一个复杂 问题的面向对象的模型可用五个层次表示:类-&-对象层、结 构层,主题层、属性层和服务层,见图3.3.8。
主题层 subject level 类-&-对象层object 结构层 structure 属性层 attribute 服务层 serves
•使用具有确切含义的名词。
• 尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含 义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。
•必要时用名词短语作名字。
• 为使名字的含义更准确,必要时用形容词加名词或其他形式的名词 短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。
签定保险单 销售统计
客户
软件工程(习题与参考答案)
第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. 〔〕是将系统化的、标准的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
《软件工程》第八章 软件维护与再工程
软件可维护性-主要影响因素
可移植性:指程序转移到一个新的计算环境的难易 程度。
影响软件可移植性的因素有:信息隐蔽原则;模块 独立;模块化;高内聚低耦合;良好的程序结构; 不用标准文本以外的语句等
一个可移植的程序应具有结构良好、灵活、不依赖 于某பைடு நூலகம்具体计算机或操作系统的性能
软件可维护性-主要影响因素
软件维护的概念-维护成本
其它一些因素:如应用的类型、数学模型、 任务的难度、IF嵌套深度、索引或下标数等, 对维护工作量也有影响
软件维护的过程-维护组织
维护组织结构图
软件维护的过程-维护组织
系统监督员一般都是对程序(某一部分)特别熟 悉的技术人员。 在维护人员对程序进行修改的过程中,由配 置管理员严格把关,控制修改的范围,对软 件配置进行审计 。 维护管理员、系统监督员、修改控制决策机 构等,均代表维护工作的某个职责范围 。
如果已经开始保存维护记录,可以对维护工作做 一些定量度量,至少可以从如下7方面进行评价:
每次程序运行平均失败的次数; 用于每一类维护活动的总人时数; 平均每个程序、每种语言、每种维护类型所必需的程序 变动数; 维护过程中增加或删除源语句平均花费的人时数; 维护每种语言平均花费的人时数; 一张维护请求表的平均周转时间; 不同维护类型所占的比例;
软件维护的过程-维护记录
软件修改报告指明:为满足维护申请报告提 出的需求所需的工作量、本次维护活动的类 别、本次维护请求的优先级、本次修改的背 景数据。在拟定进一步维护计划前,软件修 改报告要提交给修改决策机构,供进一步规 划维护活动使用 保存维护记录的第一个问题就是哪些数据值 得保存?
软件维护的过程-维护评价
软件维护的概念-维护问题
计算机导论-第8章 软件工程
10
8.1.2 软件生命周期
5.软件测试
在软件分析、设计和程序编写过程中,难免有各种各样的错误,需要通过测试来查找 和修改,以保证软件的质量。其主要工作如下。
(1)单元测试 查找各模块在功能和结构上存在的问题并加以纠正。 (2)集成测试 将已测试通过的模块按照一定顺序组装起来进行测试。 (3)有效性测试 按照规定的各项需求,逐项进行测试,判断已开发的软件是否合格,能否交付用户使 用。
21
8.1.3 软件开发模型
4.螺旋模型
螺旋模型的思想是:使用原型 及其他方法来尽可能地降低风险。 它在软件开发的每个阶段,都增加 了一个风险分析过程。螺旋模型结 合了快速原型模型的迭代性质和瀑 布模型的系统性和可控性特点,适 用于大型软件的开发。螺旋模型由 4部分组成:制定计划、风险分析、 实施开发、客户评估,如图8-5所 示。在笛卡尔坐标的4个象限上分 别表达了4个方面的活动。
特别地,从经济学的意义上来说,考虑到软件庞大的维护费用远比软件开发费用要 高,因而开发软件不能只考虑开发期间的费用,而应考虑软件生命周期内的全部费用。 因此,软件生命周期的概念就变得特别重要。
6
8.1.2 软件生命周期
同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。软件生 命周期是指一个计算机软件从功能确定、设计,到开发成功投入使用,并在使用中不断地 修改、增补和完善,直到停止使用该软件的全过程。
软件工程教程 作者 吴迪 电子科技大学出版社
第一篇软件工程引论第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本章小结习题参考文献。
软件工程导论第八章-软件质量与质量保证
8.7 结构化程序的测试 8.7.5 软件测试技术
1. 静态分析技术 (3)符号执行是一种符号化定义数据,并
为程序每条路径给出符号表达式,对 特定路径输入符号,经处理输出符号, 从而判断程序行为是否错误,达到分 析错误的目的。
8.7 结构化程序的测试
8.7.1 软件测试的目的 8.7.2 软件测试的原则 8.7.3 软件测试的对象 8.7.4 软件测试的基本过程
8.7 结构化程序的测试 8.7.1 软件测试的目的
1. 软件测试的目的 (1)软件测试是确认软件的质量,其
一方面是确认软件做了所期望的事 情,另一方面是确认软件以正确的 方式来做了这个事件。 (2)软件测试是提供信息,比如提供 给开发人员或项目经理的反馈信息, 为风险评估所准备的信息。
8.6 软件质量保证的标准
2.ISO 9001标准 (8)产品标识和可跟踪性 (9)过程控制 (10)审查和测试 (11)审查、度量和测试设备的控制 (12)审查和测试状态 (13)对不符合标准产品的控制 (14)改正和预防行动
8.6 软件质量保证的标准
2.ISO 9001标准 (15)处理、存储、包装、保存和交付 (16)质量记录的控制 (17)内部质量审计 (18)培训 (19)服务 (20)统计技术
测试过程中产生的基本文档如下: (1)测试计划: 通常包括单元测试和集成测试,
确定测试范围、方法和需要的资源等。 (2)测试过程: 详细描述和每个测试方案有关
的测试步骤和数据,包括测试数据及预期 的结果。 (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. 下面的()软件特性不是引起项目协调困难的一个因素。
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
面向对象技术概述
常用软件开发方法
面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。
消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。
面向对象分析
对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。
面向对象的软件开发方法分析论文
面向对象的软件开发方法分析论文•相关推荐面向对象的软件开发方法分析论文面向对象的技术是计算机软件技术史上的一次革命,为软件开发拉开了新的篇章。
面向对象的软件开发方法,是一种以对象建模为基础,自底向上和自顶向下相结合的方法,包括了所有对象的数据结构。
基于此,文章从传统软件开发方法存在的问题出发,并以此为基础,对面向对象的软件开发方法展开分析,以供参考。
相比传统的软件开发方法,面向对象的软件开发方法(OMT)实现了质的飞跃,采用了一种自底向上的归纳、自顶向下的分解方法,通过对对象建模的建立,彻底解决了软件开发在需求分析、可维护性以及可靠性三大环节上的问题,同时也大大提高和改善了系统的可维护性。
可见,面向对象的软件开发方法,作为一种归纳和演绎思想的综合体现,其对软件设计、软件开发所起的促进作用是毋庸置疑的。
一、传统软件开发方法存在的问题(一)软件复用性差在软件开发工程所追求的目标当中,软件复用性是重点之一,同时也是节约人力和提升软件生产率的重要渠道。
虽然近年来软件当中的结构化分析、结构化设计和结构化程序开发给软件产业带来了巨大的进步,但是还不足以从根源上解决软件重复使用的问题。
(二)软件可维护性差传统的软件开发方法过于侧重一致、完整的文件合成最终的产品,以致在整个开发过程中,软件的可测试性、可读性和可修改性成了衡量一个软件产品优劣的重要标准。
事实上,在软件的实际应用中,我们可以发现这类产品的维护性差,且所消耗的成本相当高。
(三)开发出的软件不能满足用户需要传统的结构化方法所涉及的知识领域比较广泛,以致使用它开发大型软件时,一旦遇到系统需求模糊或者系统发生动态变化,就会影响开发效率,导致最终开发出来的软件脱离用户实际需求。
(四)软件质量难以保证传统的软件开发方法所开发出来的复杂型大型软件,或者是需求模糊的系统,绝大多数都是难以成功投入市场使用的。
归其原因,主要有以下两大因素:第一,软件开发人员对用户的实际需求理解不够透彻,以致最后开发出来的软件和用户的期待不相符;第二,所开发出来的软件灵活性低,无法适应用户需求的经常性变化,再加上部分用户有时会在软件的一些使用性能方面提出部分要求,倘若系统的设计和开发是基于过程中,那么软件系统的可扩充性和稳定性就会无法适应变化,而这种变化也会对软件系统自身的机构造成影响,设计、开发的成本也会随之提高。
软件工程(钱乐秋)第08章 基于构件的软件开发
对可复用构件的要求
• • • • • 构件的设计应具有较高的通用程度 构件应易于调整 构件应易于组装 构件必须具有可检索性 构件必须经过充分的测试
复旦大学计算机科学与工程系 软件工程课程
20/41
创建领域构件的设计框架
• 除应遵循已有的设计概念和原则外, 还必须考虑应用领域的特征,例如:
– 标准数据:应该研究应用领域,并标识出标准的全局 数据结构(如文件结构或完整的数据库)。于是所有设 计的构件都可以用这些标准数据结构来刻画 – 标准接口协议:应该建立三个层次的接口协议:构件 内(intramodular)接口、构件外接口以及人机接口
– 程序模板:程序的结构模型可以作为新程序的体系结 构设计的模板
• COM+ • EJB:一种基于Java的构件标准
– 提供了让客户端使用远程的分布式对象的框架 – EJB规约规定了EJB构件如何与EJB容器进行行交互
11/41
复旦大学计算机科学与工程系 软件工程课程
基于构件的软件开发过程
复旦大学计算机科学与工程系 软件工程课程
12/41
领域工程步骤-1
• 领域分析:首先要进行领域分析,收集领域中有代表性 的应用样本,分析应用中的公共部分或相似部分,抽取 该领域的应用体系结构 • 建立领域特定的基准体系结构模型:在领域分析的基础 上,构造该领域的基准体系结构,这个基准体系结构应 是可以裁剪和扩充的,并可供该领域的应用复用 • 标识候选构件:在领域分析和领域基准体系结构模型的 基础上标识该领域的候选构件 • 泛化(generalization)和可变性(variability)分析:提高 其通用性,同时寻找候选构件在不同应用中的变化点 (variation point),通过设置参数、继承或其它手段, 使可变部分局部化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Software Engineering
【例】ATM系统 ATM系统
柜员 储户 柜员终端
帐户 ATM ATM ATM 中央计算机 帐户 储户 分行计算机 帐户 分行计算机 帐户
Software Engineering
【例】ATM系统的需求陈述 ATM系统的需求陈述
Software Engineering
一,面向对象分析(Object-oriented Analysis, OOA) ObjectOOA)
提取用户需求
理解 表达 验证
建立三个模型
OM DM FM
Requirement statement Rapid prototype Models
Software Engineering
1+
1+
Software Engineering
OOA的五个层次 OOA的五个层次
Software Engineering
OOA大体顺序 OOA大体顺序
寻找类-&-对象 对象 寻找类 识别结构 识别主题 定义属性 建立动态模型 建立功能模型 定义服务
不严格按照顺序 OOA不需要严格遵守自顶 不需要严格遵守自顶 向下的原则
Software Engineering
3. OM的五个层次 OM的五个层次
Coad&Yourdon, 1991 相当于把五张透明 胶片(transparencies) 胶片(transparencies) 叠在一起, 叠在一起,每一层 显示更多的细节
Category Class-&-Object Structure Attribute Method
软件工程
Software Engineering
计算机学院 软件工程课程组
Computer School of Wuhan University
第8章 面向对象的开发技术
如何进行面向对象分析( 如何进行面向对象分析(OOA)? )? 如何进行面向对象设计( 如何进行面向对象设计(OOD)? )? 面向对象实现有何特点? 面向对象实现有何特点? 面向对象的软件开发模型具有哪些特点? 面向对象的软件开发模型具有哪些特点?
Software Engineering
【例】ATM系统的需求陈述 ATM系统的需求陈述
所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号. 所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号.分行代码唯一 标识总行下属的一个分行,卡号确定了这张卡可以访问哪些帐户.通常, 标识总行下属的一个分行,卡号确定了这张卡可以访问哪些帐户.通常,一张卡 可以访问储户的若干个帐户,但是不一定能访问这个储户的全部帐户.每张现金 可以访问储户的若干个帐户,但是不一定能访问这个储户的全部帐户. 兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本. 兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本.因此必须考虑同 时在若干台ATM上使用同样的现金兑换卡的可能性.也就是说,系统应该能够处 上使用同样的现金兑换卡的可能性. 时在若干台 上使用同样的现金兑换卡的可能性 也就是说, 理并发的访问. 理并发的访问. 当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获得有关这次事 当用户把现金兑换卡插入 之后, 就与用户交互, 之后 就与用户交互 务的信息,并与中央计算机交换关于事务的信息.首先, 要求用户输入密码, 务的信息,并与中央计算机交换关于事务的信息.首先,ATM要求用户输入密码, 要求用户输入密码 接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求 把从这张卡上读到的信息以及用户输入的密码传给中央计算机, 接下来 把从这张卡上读到的信息以及用户输入的密码传给中央计算机 中央计算机核对这些信息并处理这次事务. 中央计算机核对这些信息并处理这次事务.中央计算机根据卡上的分行代码确定 这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码.如果用 这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码. 户输入的密码正确, 就要求用户选择事务类型( ).当用户选 户输入的密码正确,ATM就要求用户选择事务类型(取款,查询等).当用户选 就要求用户选择事务类型 取款,查询等). 择取款时, 请求用户输入取款额. 从现金出口吐出现金, 择取款时,ATM请求用户输入取款额.最后,ATM从现金出口吐出现金,并且打 请求用户输入取款额 最后, 从现金出口吐出现金 印帐单交给用户. 印帐单交给用户.
Software Engineering
4. 建立OM 建立OM
确定Class-&-Object 确定 确定关联 确定关联 结构层 划分主题 确定属性 识别继承关系 反复修改 建立DM 建立 建立FM 建立 定义服务
Software Engineering
(1)确定Class-&-Object 确定Class第1步:列出候选 步 列出候选Class-&-Object(candidates) ( )
某银行拟开发一个自动取款机系统,它是一个由自动取款机,中央计算机, 某银行拟开发一个自动取款机系统,它是一个由自动取款机,中央计算机,分 行计算机及柜员终端组成的网络系统. 和中央计算机由总行购买. 行计算机及柜员终端组成的网络系统.ATM和中央计算机由总行购买.总行拥有 和中央计算机由总行购买 多台ATM,分别设在全市各主要街道上.分行负责提供分行计算机和柜员终端. 多台 ,分别设在全市各主要街道上.分行负责提供分行计算机和柜员终端. 柜员终端设在分行营业厅及分行下属的各个储蓄所内. 柜员终端设在分行营业厅及分行下属的各个储蓄所内.该系统的软件开发成本由 各分行分摊. 各分行分摊. 银行柜员使用柜员终端处理储户提交的储蓄事务. 银行柜员使用柜员终端处理储户提交的储蓄事务.储户可以用现金或支票向自 己拥有的某个帐户内存款或开新帐户.储户也可以从自己的帐户中取款.通常, 己拥有的某个帐户内存款或开新帐户.储户也可以从自己的帐户中取款.通常, 一个储户可能拥有多个帐户. 一个储户可能拥有多个帐户.柜员负责把储户提交的存款或取款事务输进柜员终 接收储户交来的现金或支票,或付给储户现金. 端,接收储户交来的现金或支票,或付给储户现金.柜员终端与相应的分行计算 机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户. 机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户. 拥有银行帐户的储户有权申请领取现金兑换卡.使用现金兑换卡可以通过ATM 拥有银行帐户的储户有权申请领取现金兑换卡.使用现金兑换卡可以通过 访问自己的帐户.目前仅限于用现金兑换卡在ATM上提取现金,或查询有关自己 上提取现金, 访问自己的帐户.目前仅限于用现金兑换卡在 上提取现金 帐户的信息(如帐户余额).将来可能还要求使用ATM办理转帐,存款等事务. ).将来可能还要求使用 办理转帐, 帐户的信息(如帐户余额).将来可能还要求使用 办理转帐 存款等事务.
Software Engineering
列出候选Class列出候选Class-&-Object
所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号. 所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号.分行代码唯一 磁卡 分行代码 标识总行下属的一个分行,卡号确定了这张卡可以访问哪些帐户.通常, 标识总行下属的一个分行,卡号确定了这张卡可以访问哪些帐户.通常,一张卡 可以访问储户的若干个帐户,但是不一定能访问这个储户的全部帐户.每张现金 可以访问储户的若干个帐户,但是不一定能访问这个储户的全部帐户. 兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本 副本. 兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本.因此必须考虑同 时在若干台ATM上使用同样的现金兑换卡的可能性.也就是说,系统应该能够处 上使用同样的现金兑换卡的可能性. 时在若干台 上使用同样的现金兑换卡的可能性 也就是说, 理并发的访问 访问. 理并发的访问. 当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获得有关这次事 当用户把现金兑换卡插入 之后, 就与用户交互, 之后 就与用户交互 务的信息 并与中央计算机交换关于事务的信息.首先, 信息, 要求用户输入密码 务的信息,并与中央计算机交换关于事务的信息.首先,ATM要求用户输入密码, 要求用户输入密码, 接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求 把从这张卡上读到的信息以及用户输入的密码传给中央计算机, 接下来 把从这张卡上读到的信息以及用户输入的密码传给中央计算机 中央计算机核对这些信息并处理这次事务. 中央计算机核对这些信息并处理这次事务.中央计算机根据卡上的分行代码确定 这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码.如果用 这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码. 户输入的密码正确, 就要求用户选择事务类型 ).当用户选 户输入的密码正确,ATM就要求用户选择事务类型(取款,查询等).当用户选 就要求用户选择事务类型(取款,查询等). 择取款时, 请求用户输入取款额 从现金出口吐出现金, 择取款时,ATM请求用户输入取款额.最后,ATM从现金出口吐出现金,并且打 请求用户输入取款额.最后, 从现金出口吐出现金 帐单交给用户 交给用户. 印帐单交给用户.
1. 分析过程
用户 开发人员 管理人员
生成需求
问题陈述
访问用户 领域知识 现实世界
建立模型
OM DM FM
界限模糊
设计过程
Software Engineering
2. 需求陈述(Requirement Statement) 需求陈述( Statement)
说明What 而不是 How 说明 内容
物理实体 人或组织 要处理的事件 非正式分析: 名词 → Class-&-Object 形容词 → Attribute 动词 → Method
Software Engineering