第1章面向对象技术概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2 对软件开发的基本认识
一、软件(Software):软件是“程序以及开发使用维护程 序所需的所有文档”,由应用程序,系统程序,面向用户的 文档,及面向开发者的文档四部分构成。
二、软件的特点 1、软件是一种逻辑实体,不是具体的物理实体。 2、软件产品的生产主要是研制。 3、软件具有“复杂性”,其开发和运行常受到计算机系统 的限制。 4、软件成本昂贵,其开发方式目前尚未完全摆脱手工生产 方式。 5、软件不存在磨损和老化问题,但存在退化问题。
1、获取用户基本需求 用户与开发者之间进行充分交流,常用 User case来收集和描述用户的需求。即先 标识使用该系统的不同的行为者(actor)。 行为者所提出的每个使用场景(或功能) 称为一个用例,所有的用例则构成完整的 系统需求。
2、标识类和对象
标识类与对象是一致的。在确定系统的用例后, 可标识类及类的属性和操作。 从问题域或用例描述入手,发现对象。
4、建立类(对象)间的关系
用“对象-关系模型”描述了系统的静态结构。 (1) 一般/特殊结构 (2) 整体/部分结构 (3) 实例连接 (4) 消息连接
5、建立对象-行为模型
描述了系统的动态行为。指明系统如何响应外部 的事件或激励。 建模步骤:
1. 评估所有的用例,以完全理解系统中交互的序列。
2. 标识驱动交互序列的事件,理解这些事件如何和特定
三、软件的分类
1、按照软件功能划分
系统软件 — 如操作系统、设备驱动程序等。 支撑软件(实用软件) — 协助用户开发的工具软件,如 编辑程序、程序库、图形软件包等。 应用软件 — 如工程与科学计算软件、CAD/CAM软件、CAI 软件、信息管理系统等。 2、按照软件工作方式划分 实时处理软件 交互式软件 批处理软件 3、按照软件服务对象的范围划分 项目软件 — 由客户委托开发的软件。 产品软件 — 由软件开发机构开发,提供给市场的。
函数 和过程 数据
对象 对象 对象 对象
SP——结构化程序设计方法。
1.5 面向对象技术
二、面向对象方法 基本思想:对问题进行自然分割,以更接近人 类思维的方式建立问题域模型,从而使设计出 的软件尽可能直接地描述现实世界,具有更好 的可维护性,能适应用户需求的变化
对象 对象
函数 和过程
对象
数据
对象
1.6 面向对象分析源自文库OOA)
面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分 析,确定系统“作什么”,并建立系统的模型 OOA的基本任务
运用面向对象的方法,对问题域和系统责任进行 分析和理解,找出描述它们的类和对象,定义 其属性和操作,及其结构、静态联系和动态联 系。
3、定义类的结构和层次
类的结构有:
一般—特殊 (generalization - specialization)结构 整体—部分(whole-part)结构
构成类图的元素所表达的模型信息,分为三个 层次:
对象层—给出系统中所有反映问题域和系统责任的对象 特征层—给出类的内部特征,即类的属性和操作。 关系层—给出各类之间的关系,包括继承、组装、一 般—特殊 、整体—部分、属性的静态依赖关系,操 作的动态依赖关系。
的对象相关联。 3. 为每个用例创建事件轨迹。 4. 为系统建造状态图。 5. 复审对象--行为模型,以验证准确性和一致性。
1.7 面向对象设计(OOD)
面向对象设计的一般步骤如下: 1. 系统设计 • 将子系统分配到处理器 • 选择实现数据管理、界面支持和任务 管理的设计策略 • 为系统设计合适的控制机制 • 复审并考虑权衡(折衷)
1.3 软件的固有复杂性
软件设计面临的困难要多
软件固有的复杂性
与一些传统的工程领域不同,软件设计没有完
整的理论作指导,软件开发过程具有巨大的自 由性
1.4 控制软件复杂性的基本方法
1. 分解 2. 抽象
抽取系统中的基本特性而忽略非基本特性, 从而理解和控制复杂的系统
3. 模块化 4. 信息隐蔽(封装)
提高软件的可维护性,使软件的部分对整体的影 响减少。隐蔽内部细节,降低软件复杂性
1.5 面向对象技术
一、结构化开发方法(Structured Developing Method)
是一种面向数据流的开发方法,它的基本原则是功能 的分解与抽象。
结构化方法总的指导思想是自顶向下、逐步求精。
包括: SA——结构化分析方法; SD——结构化设计方法;
1.1.1 软件危机
合理分配开发力量
实现的三种途径
改进方法 借助软件工具
三条途径构成软件工程的三大要素:方法、 工具和过程
1.1.2 软件工程
软件工程就是包含方法、工具和过程三个要素的 软件开发方法,实质就是在软件开发过程中引入 过程化的方法 软件工程方法为软件工程提供如何做的技术。系 统分析如何做、系统设计如何做、编码如何做。 主要的侧重点在于改进技术手段 软件工程的工具为软件工程的方法提供支撑环境 软件工程的过程是把软件工程的方法和工具结合 起来,并且整合其他的必要资源,组织起来进行 软件开发 软件工程的目的就是要在规定的时间、规定的开 发费用内开发出满足用户需求的软件系统
对象形式:外部实体 、事物、发生的事件、角色、组织 单位、场所、构造物等
确定最终对象
确定原则:需要保留的信息,需要的服务,具有多个属 性,具有公共属性及操作。
标识属性
可从问题的陈述中或通过对类的理解而标识出属性。
定义操作
操作定义了对象的行为并以某种方式修改对象的属性。 操作分为:对数据的操作,计算操作,控制操作。
OOA面临的问题
1、问题域和系统责任问题 问题域(problem domain) — 被开发系统的应 用领域。 系统责任(system responsibilities) — 所开发 的系统应具备的职能。 2、交流问题(各类人员之间的要求) 3、需求的不断变化(用户、竞争因素、经费、 技术因素)
基于UML的面向对象分析
1946年,世界上第一台电子计算机在美国 研制成功。 50年代,软件诞生。 60年代中期到70年代中期,“软件危机” 出现。 1968年,“软件工程” 概念的提出。
1.1.1 软件危机
软件危机主要表现: ① 开发周期拖后按年计 ② 成本超出可多达一个数量级 ③ 开发生产效率低 ④ 软件质量难以保证,甚至不能使用 ⑤ 系统复杂性远超出人脑直接控制的程度
第1章 面向对象技术概述
1.1 1.2 1.3 1.4 1.5 1.6 1.7 软件危机及软件工程 对软件开发的基本认识 软件的固有复杂性 控制软件复杂性的基本方法 面向对象技术 面向对象分析(OOA) 面向对象设计(OOD)
1.1 软件危机及软件工程
1.1.1 软件危机 1.1.2 软件工程
1.1.1 软件危机
美国丹佛新国际机场
1996年的亚特兰大奥运会中,IBM赞助的
Info96网络
1.1.1 软件危机
6个投入使用,2个被取消。 软件开发时间超时50%。 大型系统中,3/4的系统有运行问题 说明软件问题的重要性、复杂性、困难性 和长期性
提高个人的能力
解决问题的两个途径
提高组织的能力
1.3 软件的固有复杂性
复杂性的原因
① 软件的复杂性和计算机体系结构有关 ② 软件开发是人的智力活动,软件系统从本质
上来说是由许多相互联系的概念组成 ③ 软件系统中各元素之间的相互作用关系具有 不确定性 ④ 软件系统面临不断变化的压力和需要满足不 同用户的工作方式和习惯的压力 ⑤ 规模较大的软件系统的生命周期一般都超过 相应硬件系统的生命周期
2. 对象设计 • 在过程级别设计每个操作,即设计每 个操作的实现细节 • 定义内部类 • 为类属性设计内部数据结构 3. 消息设计 使用对象间的协作和对象--关系模型,设 计消息模型 4. 复审 复审设计模型并在需要时迭代。
典型的面向对象方法
Coad & Yourdon 方法 OMT方法 Booch方法 OOSE方法