《UML和模式应用》读书笔记(一)
一、绪论
1. 面向对象分析和设计
1.1 什么是分析和设计
分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案。
设计(design)强调的是满足需求的概念上的解决方案,而不是其实现。例如对数据库方案和软件对象的描述。
1.2 什么是面向对象分析和设计
在面向对象分析(object-oriented analysis)过程中,强调的是在问题领域内发现和描述对象(或概念)。
在面向对象设计(object-oriented design)过程中,强调的是定义软件对象以及他们如何协作以实现需求。
1.3 什么是UML
统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言,UML定义了各种UML简档(UML profile),这些简档专用于某些常用主题领域的表示法子集,例如对EJB使用UML EJB文档。
1.3.1 应用UML的三种方式
- UML作为草图——非正式的、不完整的图。
- UML作为蓝图——相对详细的设计图,用于逆向工程或代码生成。
- UML作为编程语言——用UML完成软件系统可执行规格说明。可执行代码能够被自动生成(仍处于发展阶段)。
敏捷建模(agile modeling)强调了UML作为草图的方式,这也是使用UML的普通方式,而且通常对时间投入具有高回报。
1.3.2 应用UML的三种透视图
UML描述的是原始图类型,如类图和顺序图,它并没有在这些图上叠加建模的透视图。
- 概念透视图:用图来描述现实世界或关注领域中的事物。
- 规格说明(软件)透视图:用图来描述软件的抽象物或具体规格说明和接口的构建,但并不约定特定实现(例如非特定为C#或Java中的类)。
- 实现(软件)透视图:用图来描述特定技术(如Java)中的软件实现。
1.3.3 不同透视图中“类”的含义
- 概念类(conceptual class)——现实世界中的概念或事物。在概念或本质透视图中使用。UP领域模型中包含概念类。
- 软件类(software class)——无论在过程还是方法中,都表示软件构建在规格说明或实现透视图中的类。
- 实现类(implementation class)——特定OO语言(如Java)中的类。
2. 迭代、进化和敏捷
2.1 什么是UP
软件开发过程(software development process)描述了构造、部署以及维护软件的方式。统一过程(Unified Process)已经成为一种流行的构造面向对象系统的迭代软件开发过程。特别是Rational统一过程(Rational Unified Process, RUP)是对统一过程的详细精化,并且已经被广泛采纳。
UP吧普遍认可的最佳实践结合起来,成为联系紧密并具有良好文档的过程描述。
2.2 什么是迭代和进化式开发
迭代开发(iterative development)是UP和大多数其他现代方法中的关键实践。在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,称为迭代;每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。
迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。随着时间一次次迭代递进,系统增量式地发展完善,因此这一方法也被称为迭代和增量式开发(iterative and incremental development)。因为反馈和调整使规格说明和设计不断进化,所以这种方法也称为迭代和进化式开发(iterative and evolutionary development)。
迭代的输出不是实验性的或将丢弃的原型,迭代开发也不是构造原型,与之相反,其输出是最终系统的产品子集。
迭代的一个关键思想是时间定量(timeboxed),例如,假定选择下一次迭代时间为3周,则必须依照时间表来集成、测试和稳定局部系统——推迟时间则违约。
2.3 什么是瀑布生命周期
在瀑布生命周期过程中,试图在编程之前(详细)定义所有或大部分需求。
准则:不要让瀑布思维侵蚀迭代或UP项目
2.4 什么是风险驱动和客户驱动的迭代计划
UP提倡风险驱动(risk-driven)与客户驱动(client-driven)相结合的迭代计划。这意味着早期的迭代目标要能够识别和减低最高风险,并且能构造客户最关心的可视化特性。风险驱动迭代开发更为明确地包含了以架构为中心迭代开发的实践,意味着早期迭代要致力于架构的构造、测试和稳定。因为没有稳定的架构就会带来高风险。
2.5 什么是UP的阶段和UP科目
UP项目将其工作和迭代组织为四个主要阶段:
- 初始(Inception):大体上的构想、业务案例、范围和模糊评估。
- 细化(Elaboration):已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估。
- 构造(Construction):对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。
- 移交(Transition):进行bata测试和部署。
UP描述了科目(discipline)中的工作活动,例如编写用力。科目是在一个主题域中的一组活动(及相关制品),例如需求分析中的活动。在UP中,制品(artifact)是对所有工作产品的统称,如代码、Web图形、数据库模式、文本文档、图、模型等。
《UML和模式应用》读书笔记(一)的更多相关文章
- 《html5 从入门到精通》读书笔记(一)
今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...
- HTML5从入门到精通(明日科技) 中文pdf扫描版
HTML5从入门到精通(明日科技) 中文pdf扫描版
- HTML5从入门到精通(千锋教育)免费电子版+PDF下载
本书是HTML5初学者极好的入门教材之一,内容通俗易懂.由浅入深.循序渐进.本书内容覆盖全面.讲解详细,其中包括标签语义化.标签使用规范.选择器类型.盒模型.标签分类.样式重置.CSS优化.Photo ...
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
- Oracle从入门到精通----学习笔记
书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...
- MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...
- Unity Shader入门精要读书笔记(二)UnityShader概述
第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...
- 《html5 从入门到精通》读书笔记(二)
接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...
- 《html5 从入门到精通》读书笔记(三)
二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...
- 《HTML5 CANVAS基础教程》读书笔记
一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...
随机推荐
- WindowManager.LayoutParams 详解
WindowManager.LayoutParams 是 WindowManager 接口的嵌套类:继承于 ViewGroup.LayoutParams .它的内容十分丰富.其实WindowManag ...
- 转:在CentOS下编译安装GCC
转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术 秋水逸冰 发布于: 2015-09-02 更新于: 2015-09-02 6519 次围观 ...
- JavaSE入门学习6:Java基础语法之运算符和语句(上)
继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...
- git 强制覆盖,分支合并
强制合并 git fetch --all && git reset --hard origin/master && git pull 合并代码 git commit - ...
- js json 对象
JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集. 数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 JSON 名称/值对 JSON 数据的书写格式是 ...
- 转 Python Selenium设计模式-POM
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python s ...
- linux之return和exit引发的大问题(vfork和fork)
在coolshell.cn上看到的一个问题.为此拿来研究一下. 首先 看看return和exit的差别 在linux上分别跑一下这个代码 int main() { return 0; //exit(0 ...
- 数据库中表的复杂查询&分页
一.数据库中表的复杂查询 1)连接查询 1.0连接的基本的语法格式: from TABLE1 join_type TABLE2 [on (join_condition)][where (query_c ...
- JavaScript读书笔记(3)-操作符、语句和函数
1. 操作符 (1) 一元操作符 前置递增和递减操作符,变量的值都是在语句被求值以前改变的:后置相反 (2) 位操作符 在ECMAScript中,对数值进行位操作时,会发生以 ...
- 为什么在 Java 中用 (low+high)>>>1 代替 (low+high)/2 或 (low+high)>>1 来计算平均值呢?好在哪里?
>>>与>>是位运算符,只对整型有效(不能用于浮点型).当是整型的时候(low+high)>>1可以代替(low+high)/2.>>>是无 ...