开始进入设计 … Transition to Design

   从需求分析到设计

   逻辑架构与子系统 Logical Architecture and sub-system

5.1 向设计过程切换 Transition to Design

   需求与领域分析阶段During requirements and domain analysis work

     做正确的事情 “Do the right thing”

     理解领域问题 Understand the domain

     澄清并记录约束和需求 Clarify and record the constraints and requirements

     本质上,暂不考虑设计,集中在理解问题

   设计阶段 During design work

     正确地做事情 “Do the thing right”

     创建设计模型,以便构建系统 Create a design model that can be used to build the system

       满足领域约束 Meet the domain constraints

       两类主要的模型: 交互图 Interaction diagrams 设计类图 Design class diagrams
   设计的输入

     系 统 操 作 System Operations

     或者操作契约

   迭代

     每次迭代,都存在需求 到设计的过程

     遇到需求的变化,应当 “拥抱”而不是“回避”

  设计的结果

     设计一个方案,展示系 统是如何实现需求
5.2 逻辑架构、软件架构

   什么是架构 What is Architecture?(有的教材翻译成“结构”)

     架构是关于如何组织软件系统的一系列重大决策

      An architecture is the set of significant decisions about the organization of a software system

       如何选择组成系统的结构元素及其接口

       这些结构元素相互协作时的行为规范

       这些结构元素如何组合成逐渐变大的子系统

       可以参考的架构风格 architectural style,以便指导如何组织这些结构元素、定义它 们的接口、协作、以及组合成子系统的过程

   架构的另外一种说法: Logical Architecture、Software Architecture

     大规模组织类,以便形成模块、分层、子系统、命名空间等

     不同于部署架构 Deployment Architecture  定义这些结构元素分布在不同的物理设备上
   可能会影响逻 辑架构的因素, 还包括: 补充规 格说明中约束 、非功能性需 求等
5.3 逻辑架构设计方法 – 分层法

   分层 System Partitioning

     “分而治之”

   标识一定规模的结构元素 large-scale elements (LSEs)

     层Layers: 粗粒度地组织结构元素,考虑内聚性,完成特定功能

      Coarsegrained grouping of architectural elements cohesively responsible for a specific aspect

     子系统 Subsystems

     模块 Modules

     接口

     结构元素之间的协作

   在开发的过程中,上述各部分是会变化的

   在“分”的同时,要考虑“合”
5.4 分层架构的优点

   优点

     各层都容易被替换 Layers can be easily replaced

     较低层次包含更多的操作细节,容易成为可重用的构件

     每层都容易分布部署与连接

   分层时考虑的问题 Separation of concerns

     服务是放在高层还是底层 High-level vs. low-level services

     服务是作为应用专门的,还是通用的 Application specific vs. general services
5.5 分层架构示例 
  物联网大数据平台TIZA STAR架构http://mt.sohu.com/20161024/n471123659.shtml

6.5 开始进入设计 … Transition to Design的更多相关文章

  1. 什么是领域驱动设计(Domain Driven Design)?

    本文是从 What is Domain Driven Design? 这篇文章翻译而来. ”…在很多领域,专家的作用体现在他们的专业知识上而不是智力上.“ -- Don Reinertsen 领域驱动 ...

  2. 企业级的响应式设计(Responsive design at enterprise level)译

    导言 响应式设计是现在人们谈论的热点,但如何部署,特别是在有多种设备的大型项目中如何组织响应式设计,响应式设计和可伸缩性(Scalable)有什么区别?这都是需要解决的难题. 优化用户经验——Opti ...

  3. 领域驱动设计(Domain Driven Design)参考架构详解

    摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

  4. 领域驱动设计(DDD:Domain-Driven Design)

    领域驱动设计(DDD:Domain-Driven Design) Eric Evans的"Domain-Driven Design领域驱动设计"简称DDD,Evans DDD是一套 ...

  5. [转载]领域驱动设计(Domain Driven Design)参考架构详解

    摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

  6. 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  7. LeetCode 622:设计循环队列 Design Circular Queue

    LeetCode 622:设计循环队列 Design Circular Queue 首先来看看队列这种数据结构: 队列:先入先出的数据结构 在 FIFO 数据结构中,将首先处理添加到队列中的第一个元素 ...

  8. 算法、数据结构、与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design)

    算法.数据结构.与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design) 作者: Compasslg 李涵威 1. 什么是单例设计(Singleton Design) 在学 ...

  9. 设计系统(Design System),设计和开发之间的“DevOps”

    最近,我们网站的上新增了几个新功能,比如通过导航栏的QR Code可以下载App:通过Carousel的方式,显示多条信息. 以往这样的功能可能需要2-3个Sprints完成,但是现在这些功能都是在一 ...

随机推荐

  1. 枚举+排序|神奇算式|2014年蓝桥杯A组题解析第三题-fishers

    标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. ...

  2. 不能安装64位office提示已安装32位的

    安装64位office办公软件的时候提示已经安装32位的office办公软件所以无法继续安装,但实际上之前安装的32位的office办公软件已经卸载了.问题现象截图如下: 从问题描述中,我们其实已经能 ...

  3. jvm:分析工具

    bin/jvisualvm.exe 可查看类实例数 bin/jconsole.exe 监控线程,堆,等 http://blog.csdn.net/yaowj2/article/details/7107 ...

  4. 使用Python制作第一个爬虫程序

    用到的开发环境 IDE:pycharm python  version :2.7 掌握的知识:  Pycharm  还能更改Python的版本 代码如下:(重点就是   正则表达式的学习) # !/u ...

  5. mybatis中mysql转义讲解

    本文为博主原创,未经允许不得转载: 在mybatis中写sql的时候,遇到特殊字符在加载解析的时候,会进行转义,所以在mybatis中 写sql语句的时候,遇到特殊字符进行转义处理. 需要注意的是,转 ...

  6. 程序设计第二次作业<2>

    我所找到的C++相关课程列表: (2016/1/27)(部分) 1. 慕课网 http://www.imooc.com/learn/342 <c++远征之起航篇> 授课人:james_yu ...

  7. oracle批量删除某用户下的表

    昨天干了一天的体力活,到快下班时被要求删除一批测试库上错误的表,主要是这些表的字段和生产上字段顺序对不上,然后让我写个脚本,让dba执行一下,主要是删表这种东西我们都没权限. 然后,我就被难到了,我记 ...

  8. [转]Eclipse下开发Struts奇怪异常:org.apache.struts.taglib.bean.CookieTei

    今天早上开始在Eclipse下学习struts,于是按照李兴华老师的<struts入门视频教程>一步一步地充满快乐的学习,等把登陆程序写完,打开浏览器准备运行的时候,奇怪的异常产生了,异常 ...

  9. JavaScript中的方法事件和函数的方法的三种方法

    js中的很多事件  而事件相对应的就是方法(函数 )那么今天所说的就是这三种方法      已onclick事件为例 1: 基本方法 <div id="a" onclick= ...

  10. Mysql 查看定时器 打开定时器 设置定时器时间

    1.查看是否开启evevt与开启evevt. 1.1.MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的. show VARIABLES ...