概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。
       概要设计的目标是描述软件模块的外观以及处理逻辑。模块对外暴露的服务接口,以及需要引用的接口,接口标识,接口的访问协议,接口描述都属于模块的外观,其他的模块通过这些接口和模块打交道,自然需要在概要设计阶段对接口做细致的刻画,初此之外,对于关键的模块,外观还应该说明模块的非功能属性,比如并发处理能力,数据吞吐量以及接口调用的反馈时长等等。处理逻辑是指模块从输入到输出的转换过程,描述其转换算法。无论通过何种图例和表现形式,只要能够清晰地说明模块外观和处理逻辑描述,就是好的概要设计。
         概要设计过程一般包括四块内容,这四块内容都是围绕着外观和处理逻辑这两个目标进行。第一部分是模块划分,把架构设计中划分的业务模块按照开发模式迭代细化,拆分成符合高内聚低耦合的功能模块。第二部分是接口描述,重点要放在刻画模块内外部交互的接口形式。第三个部分是模块的逻辑描述,最后一个部分逻辑模型设计,包括数据库的逻辑模型设计以及值对象的概要说明。

一、模块划分

模块划分的粒度很难确定,不同的设计师会用不同的划分策略,相同的一组功能聚集有人会分为2个功能模块,有的人可能划分为4个或者更多。模块的粒度越大,对模块的维护成本就越大,因为修改模块的任何一个点,都有可能更新整个模块;而且越难以解决模块复杂耦合的问题,随着产品的维护,模块内的耦合会越来越严重,有些是因为新的需求引起模块内联系的增加,而有些是缺少硬约束下采用最直接的方式修改代码造成的。当然也不是模块划分的越小越好,因为小粒度的模块虽然降低了模块自身的维护成本,但过多的模块会增加模块间关系维护的成本以及系统管理的复杂性。
    通常来看,模块划分要符合开闭原则和高内聚和低耦合的原则。开闭原则强调的是维护频度不同的功能不要放在同一个模块内,比如有些需要本地化的功能可以通过接口和实现分离的方式划分为业务模块和二次接口实现模块。高内聚和低耦合的原则强调的是把内部关联紧密和外部交互比较单一的功能划分成一个模块。
    同时鉴于模块划分的重要性,建议尽可能把模块划分的工作前移到架构设计阶段,一方面架构设计团队的整体素质比较高,另外一方面架构设计师更能够站在全局的视角合理地划分模块。
    接口描述
    接口描述应该清晰地说明接口的类型,访问方式,接口的入参和出参。通常在概要设计阶段不考虑物理实现,不需要描述的非常详细,之所以如此关照接口,原因在于通过清晰的接口描述为流程逻辑和后面的详细设计建立一个硬约束。模块内的数据流和控制流的入口和出口都能限定在这个约束之内,方便评审的时候能及时发现设计中存在的问题。

二、逻辑描述

逻辑描述的目标是说清楚从输入到输出的转换过程。根据不同的模块的特点,可以选用不同的描述形式,对于以数据流为主的模块,可以使用数据流图,控制比较复杂的可以使用数据流图或者IPO图,而对于规范使用UML的项目可以考虑使用活动图。
    可能有人会很疑惑在设计中没有谈到是用面向对象方法还是结构化的方法,这可是关键的方法论问题。确实,软件研发的坛子里面除了哪种语言更好的话题以外,最容易挑起纷争的就是结构化分析与设计和面向对象分析与设计之争了。我在这里不做结论,只做一个评说。结构化分析设计出现的比较早,那时候软件的主要使用场景更多是科学计算或者自动化控制,典型的特点是用户交互界面简单,更多是批处理的作业方式,更多关注程序的处理过程是否正确高效。随着PC机时代的到来,人机交互界面在软件中占有越来越重要的地位,原来的一套软件只有一个操作员,而现在可能有很多的使用者,为了清楚地描述不同人群对软件的诉求,业务用例应运而生,这就是面向对象的起点。不同的基因决定了他们各擅道场,一个擅长于后台计算的产品设计,另一个长于面向客户服务的产品设计。
    在设计中,我们可以根据需求把两者的特点灵活地结合在一起,比如算法密集的处理模块,我们可以采用数据流图,而对于和外部交互比较复杂的模块,可以引入用例图标识模块支持的使用场景。

三、逻辑模型的设计

逻辑模块的设计主要是数据库的设计和值对象的设计。对于数据库的逻辑模型,可以统一设计,模块中添加引用。也可以在模块中针对所引用的库表独立描述。这两种方式都可以,如果库表结构比较复杂的建议统一建模,而比较简单的模型可以采用分开描述,提升模块设计的可读性。数据库建模现在已经比较成熟,这里不再多说。
    模块的输入输出,以及中间的数据对象,我们统称为值对象,在概要设计阶段的重点是描述值对象的关键属性。需要注意的一点是值对象要和处理逻辑对应起来,特别是处理逻辑中的数据流,出口入口数据,都要在值对象上加以描述。

软件系统概要设计的三大要素相关推荐

  1. 普通地图的六大要素_地图的基本要素是什么 主要是哪三大要素

    地图的基本要素是什么 主要是哪三大要素2018-11-14 14:51:00文/王蕊 地理的知识点是很多的,下面初三网小编就大家整理一下地图的基本要素是什么 ,仅供参考. 构成地图的基本三要素 构成地 ...

  2. 计算机网络三大要素是,计算机网络安全的三大要素不包括?

    计算机网络安全的三大要素不包括? 更多相关问题 研究如何利用样本数据来推断总体特征的统计学方法是().A.描述统计B.推断统计C.理论统计D.应用 按照报送范围,统计报表可分为().A.一次性报表和经 ...

  3. 信息的定义与特征,构成世界的三大要素:物质、能量、信息

    信息的定义与特征 1. 信息的定义:反映一切事物属性及动态的消息.指令.信号等所含的内容. 2. 构成世界的三大要素:物质.能量.信息. 3. 信息的特征包括: ( 1 )普遍性:信息是不以人的意志为 ...

  4. 面向对象的三大要素和五大原则

    1.三大要素 封装,继承,多态 2.五大原则: (1)单一职责原则(SRP:Single Responsibility Principle)一个类,最好只做一件事,只有一个引起它变化的原因 举例:图书 ...

  5. 手机摄影基础篇---手机摄影三大要素

    作为一个IT男,不单单是钻研IT方面的技术,更加应该利用自己是一枚技术猿的优势,多学习一点可以表达逻辑思维之外的其它东西,比如:可以把美的事物表达出来的---摄影,或许这个还是可以在追求女孩过程中,使 ...

  6. 建筑企业宣传片三大要素

    建筑企业作为传统行业,宣传片制作要把握更多方面,视频工厂分享建筑企业宣传片制作的三大要素. 宣传片内容要真实可信:宣传片不单单是用于提升企业知名度,还可以帮助企业塑造特定的企业形象.因此在拍摄建筑企业 ...

  7. 详说做好抖音的三大要素

    抖音可以说是目前为止互联网的的半边天,一夜暴红的博主也不在少数,人们看到了抖音的巨大能量就不断的涌入抖音拍摄视频, 今天我们来详细说说做好抖音爆红的三大要素 一:辅佐篇: 俗语说,欲成功先利其器那么接 ...

  8. 物质、能量、信息:自然界的三大要素

    原文链接:http://blog.sina.com.cn/s/blog_58cf1d320102yb95.html 控制论的创始人维纳认为:信息就是信息,不是物质也不是能量.也就是说,信息与物质.能量 ...

  9. 团队建设靠这三大要素,发挥团队活动真正威力|优思学院

    团队建设在六西格玛活动中扮演着非常重要的角色. 在 21 世纪的工作环境,大部份反覆的工作都逐渐被电脑取代,沟通能力.合作与创意越来越重要.要让员工发挥"人性"的一面,不少企业都会 ...

  10. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络

    虽然现代数据中心的每一部分都是至关重要的,但是网络却是所有通信的绝对基础.这正是为什么从一开始就必须设计和建设一个合理网络的原因.毕竟,没有稳固的网络,即使最好的服务器和存储器也干不了什么. 为此,我 ...

最新文章

  1. MAC安装OpenXenManager管理Xenserver
  2. LSB最低有效位和MSB最高有效位
  3. 用随机梯度下降来优化人生
  4. 阿里云的羊毛如何薅?创业者看过来!
  5. springMVC导入excel案例poi
  6. laravel关于路径的函数
  7. html弹性盒子自适应比例,CCS弹性盒子中间自适应怎么设置
  8. Queue.ArrayBlockQueue
  9. java 获取数据源_J2EE java 获取数据源
  10. libmodbus 开发说明
  11. 计算机硬盘的容量的最小,计算机硬盘容量大小怎么计算
  12. 微信小程序 java社区快递柜取件管理系统python php
  13. Carson带你Android面试:Android语言篇 (附答案)
  14. WebWork深度探索之Pitfall
  15. 【内网学习笔记】22、PsExec 和 WMI 的使用
  16. 百度大脑 EasyEdge 推出端云协同服务,大幅提升本地部署模型迭代效率
  17. JSD-2204-创建csmall项目-Day02
  18. 【代码实现】数学游戏:最后一个说30就输的数学游戏
  19. 你不必去一个遥远的星系去寻找这些奇怪的世界
  20. 又是一年立冬时节,消防安全知识答题小程序v3.0千呼万唤始出来

热门文章

  1. 将谷歌浏览器(chrome)设置为全黑色主题背景
  2. 共享单车数据集_共享单车数据可视化分析
  3. java获取本机ip地址和tomcat端口号
  4. 分享一款代码生成工具,可自定义模板生成不同的代码
  5. 大气传输、大气辐射传输
  6. Spring AOP切面的执行顺序
  7. 自己动手 DIY 一个读写200MB/s 的高速 U 盘
  8. 项目工作说明书(SOW)
  9. popwindow 加个边框_PopupWindow仿微信浮层弹出框效果
  10. 多媒体信息发布系统源码