一、绪论

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描述的是原始图类型,如类图和顺序图,它并没有在这些图上叠加建模的透视图。

  1. 概念透视图:用图来描述现实世界或关注领域中的事物。
  2. 规格说明(软件)透视图:用图来描述软件的抽象物或具体规格说明和接口的构建,但并不约定特定实现(例如非特定为C#或Java中的类)。
  3. 实现(软件)透视图:用图来描述特定技术(如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项目将其工作和迭代组织为四个主要阶段:

  1. 初始(Inception):大体上的构想、业务案例、范围和模糊评估。
  2. 细化(Elaboration):已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估。
  3. 构造(Construction):对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。
  4. 移交(Transition):进行bata测试和部署。

  UP描述了科目(discipline)中的工作活动,例如编写用力。科目是在一个主题域中的一组活动(及相关制品),例如需求分析中的活动。在UP中,制品(artifact)是对所有工作产品的统称,如代码、Web图形、数据库模式、文本文档、图、模型等。

《UML和模式应用》读书笔记(一)的更多相关文章

  1. 《html5 从入门到精通》读书笔记(一)

    今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...

  2. HTML5从入门到精通(明日科技) 中文pdf扫描版

    HTML5从入门到精通(明日科技) 中文pdf扫描版

  3. HTML5从入门到精通(千锋教育)免费电子版+PDF下载

    本书是HTML5初学者极好的入门教材之一,内容通俗易懂.由浅入深.循序渐进.本书内容覆盖全面.讲解详细,其中包括标签语义化.标签使用规范.选择器类型.盒模型.标签分类.样式重置.CSS优化.Photo ...

  4. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  5. Oracle从入门到精通----学习笔记

    书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...

  6. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  7. Unity Shader入门精要读书笔记(二)UnityShader概述

    第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...

  8. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  9. 《html5 从入门到精通》读书笔记(三)

    二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...

  10. 《HTML5 CANVAS基础教程》读书笔记

    一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...

随机推荐

  1. 支持WEB、Android、IOS的地图解决方案

    转自原文 支持WEB.Android.IOS的地图解决方案 工具链 GIS工具集 OpenGeo Suite 包含PostGIS, GeoServer, GeoWebCache, OpenLayers ...

  2. 【spring cloud】Feign使用填坑

    引用地址:https://blog.csdn.net/liuchuanhong1/article/details/54728681 问题一: 在前面的示例中,我们讲过 @RequestMapping( ...

  3. 3.【nuxt起步】-下面以一个SPA单页程序为例子

    spa:single page applcation 1.components目录新建header.vue,footer.vue Header.vue Footer.vue Pages/index.v ...

  4. Python基础语法02-运算符

    Python 运算符 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 Python运算符优先级 以下表格列出了从最高到最低优先级的所有运算符: ...

  5. log4net日志组件经验分享

    引自log4net日志组件经验分享 我们在开发WEB项目的时候,经常会出现这样的情况:在本地调试都是正常的,但是部署到服务器上就不行了.一般出现这种情况很大一部分原因是因为服务的环境和本地不同,数据库 ...

  6. beautifulsoup的一些使用

    自动补全代码: import requests from bs4 import BeautifulSoup response=requests.get('https://www.ithome.com/ ...

  7. weblogic的几点配置

    2.在tomcat下写过滤器以后还有的地方需要手工转码<-->weglobic下也不用 eg:SubjectAction.java3.weblogic下anltr.jar有冲突,需要从外界 ...

  8. Spring.net1.3.1+Nhibernate3.0+Mysql/Access/SqlServer/Oracel/SQlite

    详情请看我的博文:http://www.ruisoftcn.com/blog/article.asp?id=999

  9. 【Sprint3冲刺之前】TDzhushou软件项目测试计划书

    TDzhushou软件测试计划文档 文档编号:2014-5-8 产品版本:1.1 产品名称:TDzhushou 文 档 作 者: 解凤娇       日期:2014-5-4 软件测试计划 目录 第一章 ...

  10. soap webservice

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://cnn237111.blog.51cto.com/2359144/1357029 ...