软件工程OOAD(面向对象的分析与设计)概念整理
期中复习
词汇 | 说明 |
---|---|
Iterative | 迭代 |
Agile | 敏捷 |
Vision | 设想 |
Glossary | 词汇表 |
Supplementary Specification | 补充性规格说明 |
OOAD的定义
OOAD——从对象的角度考虑问题领域和概念上的解决方案
OOA——定义了问题领域中的概念,这些概念的关系和属性,在OOA中,强调的是在问题领域内发现和描述对象(或概念)
OOD——定义了该问题的逻辑上的软件解决方案,这个方案是基于OOA阶段的findings被定义的,包含描述了逻辑软件解决方案的类方法,在这个阶段,会发现新概念,新属性,或者这些概念间的关系,它们可以迭代反射回OOA阶段,在面向对象设计的过程中,强调的是定义软件对象以及他们如何协作以实现需求
OOA阶段制品包括:用例,领域模型,设想,业务规则,补充性说明,词汇表
OOD阶段制品包括:静态:类图,包图;动态:顺序图,通信图
OOA、OOD和OOP之间的关系
OOA需要领域知识和OOA专业知识
- 因此,既需要领域专家,也需要面向对象分析专家
- 领域专家对有关问题领域的决策总是正确的
- 如果你幸运的话,这两位专家是同一个人
OOA标识
- 问题领域的概念
- 这些概念之间的关系
- 这些概念的属性
OOD为问题定义了一个逻辑软件解决方案
- 基于OOA阶段的结果定义解决方案
- 它包括代表逻辑软件解决方案的类方法的定义
- 在设计阶段经常会发现新的概念、属性或概念之间的关系。
它们迭代地反映回分析阶段
统一过程up
不仅仅是一个简单的软件过程,而是一个通用的过程框架,可用于不同类型的应用系统、各种不同的应用领域、各种不同类型的组织、各种不同功能和规模的项目。它是基于构件(Component-based)的,即所构造的软件系统是由软件构件通过明确定义的接口相互链接所建造起来的。并且它使用统一建模语言(Unified Modeling Language,UML)来制定系统的所有蓝图。
统一软件过程的特点:用例驱动、以构架为中心、迭代和增量的软件过程框架。
迭代和敏捷建模
迭代开发是UP和大多数其他现代方法中的实践关键;开发被组织成为一系列固定的短期小项目,称为迭代;每个迭代具有各自的需求分析、设计、实现和测试活动。
敏捷建模即使避开繁琐复杂的过程,用最简单的工具进行产品的设计和建模。应用时间定量的进化式开发,使用自适应计划,提倡增量交付,并包含其他提倡敏捷性的价值和时间;采用敏捷方法并不意味着不进行任何建模,这是错误的理解;建模和模型的目的主要是用于理解和沟通,而不是构建文档;不要对所有或大多数软件设计建模或者应用UML。
区分迭代开发和敏捷开发:https://zhuanlan.zhihu.com/p/142731328
需求
需求就是系统(更广义的说法是项目)必须提供的能力和必须遵从的条件
用例与功能列表
用例是一组相关的成功和失败场景的集合,用来描述参与者如何使用系统来实现其目标。用例是文本故事,更简单,更为我们熟知,更加以用户为中心,是发现和定义功能性需求的中心机制,能够根据需要对复杂程度和形式化程度进行增减调节。
功能列表是一种描述系统功能的传统方法,不适用于面向用户的软件,难以维护,
用例比老式的功能列表更加关注以用户为中心,老式的功能列表难以维护;在文档中加入简洁的高阶特性列表有助于概括系统的功能性,是用例的总结。
需求的类型,FURPS+指:
- 功能性(Functional):特性、功能、安全性。
- 可用性(Usability):人性化因素、帮助、文档。
- 可靠性(Reliability):故障频率、可恢复性、可预测性。
- 性能(Performance):响应时间、吞吐量、准确性、有效性、资源利用率。
- 可支持性(Supportability):适应性、可维护性、国际化、可配置性。
“FURPS+”中"+”是指一些辅助性的和次要的因素,比如:
- 实现(Implementation):资源限制、语言和工具、硬件等。
- 接口 (Interface):强加于外部系统接口之上的约束。
- 操作(Operation):对其操作设置的系统管理。
- 包装(Packaging):例如物理的包装盒。
- 授权(Legal):许可证或其他方式。
CURD
增删改查: create, retrieve, update, delete
UML
统一建模语言是描述、构造和文档化系统制品的可视化语言;是面向对象的概念建模系统的标号系统;不是一种方法,不是一个过程。
用例
用例是一组相关的成功和失败场景集合,用来描述参与者如何使用系统实现其目标。
用例的三种形式
- 摘要
简洁的一段式概要,主要用于主成功场景。 - 非正式
非正式的段落格式。用几个段落覆盖不同场景。 - 详述
详细编写所有步骤及各种变化,同时具有补充部分。
如何发现用例
- 选择系统边界
- 寻找主要参与者和目标
- 定义用例
如何判断用例的好坏
- The Boss Test 老板测试
- The EBP Test EBP测试
- The Size Test 规模测试
EBP 基本业务过程
EBP即基本业务过程,是源于业务过程工程领域的术语;一个人于某时刻在一个地点所执行的任务,用以响应业务事件。该任务能够增加可量化的业务价值,并且以持久状态留下数据
领域模型
领域模型是OO分析中最重要和经典的模型,阐述了领域中的重要概念,领域模型可以作为设计某些软件对象的灵感来源,也将作为在案例研究中所讨论的几个制品的输入。
如何创建领域模型:
- (可以通过catalog list方式)寻找概念类
- 绘制UML类图中的类
- 添加关联和属性
绘制 SSD 的好处
系统顺序图(SSD)是为阐述与所讨论系统相关的输入和输出事件而快速、简单地创建的制品。它们是操作契约和(最重要的)对象设计的输入。SSD
- 绘制系统时序图的好处:
SSD 使事件变得更加具体和明确; - 绘制的动机
基本上,软件系统要对以下三种事件进行响应:1)来自于参与者(人或
计算机)的外部事件,2)时间事件, 3)错误或异常(通常源于外部)。因此,需要准确地知道,什么是外部输入的事件,即系统事件。这些事件是系统行为分析的重要部分。你可能对如何识别进入软件对象的消息非常熟悉。而这种概念同样适用于更高阶的构件, 包括把整个系统(抽象地)视为一个事物或对象。在对软件应用将如何工作进行详细设计之前,最好将其行为作为“黑盒”来调査和定义。 系统行为(system behavior)描述的是系统做什么,而无需解释如何做。这种描述的一部分就是系统顺序图。
SSD与用例之间的关系
SSD展示了用例中一个场景的系统时间,因此他是从对用例的考察中产生的。
操作契约
- 操作契约使用前置和后置条件的形式,描述领域模型里对象的详细变化,
并作为系统操作的结果。 - 操作契约可以视为 UP 用例模型的一部分,因为它对用例指出的系统操作
的效用提供了更详细的分析。 - 操作契约有哪些部分
操作:操作的名称和参数
交叉引用:会发生此操作的用例
前置条件:执行操作之前,对系统或领域模型对象状态的重要假设。
后置条件:最重要的部分。完成操作后,领域模型对象的状态。 - 系统操作是作为黑盒构件的系统在其公共接口中提供的操作。系统操作
可以在绘制 SSD 草图时确定。 - 后置条件描述了领域模型内对象状态变化。领域模型状态变化包括创建
实例、形成或消除关联以及改变属性。后置条件有三种类型创建或删除实例、形成或消除关联、属性值的变化。 - 在 UP 中,用例是项目需求的主要知识库。用例可以为设计提供大部分或
全部所需细节。这中情况下,契约就没什么用处。 - 如何创建和编写契约
从 SSD 图中确定系统操作,如果系统操作复杂,其结果可能不明显,或者在用例中不清楚,则可以为其构造契约使用以下几种类表来描述后置条件:- 创建或删除实例
- 属性值的变化
- 形成或消除关联(UML 连接)
软件工程OOAD(面向对象的分析与设计)概念整理相关推荐
- OOAD:面向对象的分析和设计
OOAD:面向对象的分析和设计 1.什么是面向对象 面向对象(Object-Orientation,简称OO)是一种系统建模技术/编程思想. 面向对象编程(Object-Orienta ...
- OOAD——面向对象的分析与设计
内容概括 1.软件工程的概念 整个软件开发行业里,很多概念都是来自于建筑工程的.因为,在人类活动里,这两个行为都有很大的共性,特别是都需要合作和分工. 软件危机 软件危机的出现,导致了软件开发的工程化 ...
- 面向对象的分析与设计
目录 介绍 你会学到什么? 你不会学到什么? 背景 软件开发过程模型简介 为什么我需要了解过程模型 面向对象的分析和设计--最需要的定义 开发过程与开发方法论的区别 面向对象分析 面向对象的设计 你应 ...
- UML和模式应用(1):面向对象的分析与设计
UML和模式应用(1):面向对象的分析与设计 学习笔记:1小时 1.1.什么是分析和设计 分析(analysis):强调的是对问题和需求的调查研究,而不是解决方案,即应该如何使用系统,系统应该具有哪些 ...
- 【面向对象】面向对象的分析与设计概述
文章目录 分析与设计 结构化方法与面向对象方法 面向对象分析与设计 分析与设计 分析强调对问题的调查 而不是如何确定解决方案. 设计强调的是问题的逻辑解决方案 . 结构化方法与面向对象方法 结构化方法 ...
- 面向对象的分析与设计——包图、组件图和部署图
<软件工程与实践>实验报告 日期 2020/12/24 题目:面向对象的分析与设计--包图.组件图和部署图 姓名 学号 实验环境: 已安装Microsoft Visio 软件的计算机 实验 ...
- 软件工程--面向对象的分析和设计方法
面向对象的基本概念: 面向对象=对象+类+继承+通信 类的定义:一旦标识了一个类,就给出了它的规格说明,其中包括类的实例可执行的操作和它们的数据表示. 对于每一个,无论是在哪一个阶段标识的类都是如此. ...
- 原型法和面向对象的分析与设计方法
原型法是在20世纪80年代中期为了快速开发 系统而推出的一种开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减少开发 风险.原型法的理念是:在获取一组基本需求之后,快速地构造出一个能够反 ...
- 面向对象的分析和设计
OOA,面向对象分析(Object Oriented Analysis ) 的目的是获得对应问题的理解. 理解的目的是确定系统功能和性能要求.面向对象分析技术可以将系统的行为和信息的关系表示为迭代构造 ...
- Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(七)...
解决实际中的大问题solving really big problems 引言 时候构建一些真实的大东西了.你准备好了吗?are you ready?你已经掌握了一系列的OOA&D工具,但是 ...
最新文章
- 数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
- 拒绝穿模!新方法让虚拟偶像自由互动无障碍“贴贴”,8000网友追着点赞
- Python编程基础:第九节 逻辑运算Logical Operators
- DataFormatString={0:格式字符串} 用法
- 在 IntelliJ IDEA 中误添加自定义的 JavaDoc 标签,如何删除
- JSTracker:前端异常数据采集
- Qt官方文档阅读笔记-对官方Star Delegate Example实例的解析
- cmd模式下如何从c盘转换到其他盘
- 2017.8.11 亚瑟王 失败总结
- (25)FPGA乘法器设计(第5天)
- centos6.5 安装python3.5
- Python入门--函数的返回值
- Java IO流复制文件拒绝访问的原因及解决方法
- matlab2012仿真电路图,cuk电路matlab仿真 - 全文
- 计算机显示去掉拼音分类,大师传授win10系统取消电脑文件显示以字母数字拼音分组的办法...
- android 设置gps波特率,GPS端口、波特率设置原理详解(GPS如何搜星,波特率对传输速度和精度的影响)...
- android app icon素材,史上最全的APP图标模板素材以及设计格式最全的
- 360校招失败的惨痛经历
- 量化投资学习——经济周期
- 中国历史上10大经典遗言