概要设计和详细设计
Posted kunwen123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了概要设计和详细设计相关的知识,希望对你有一定的参考价值。
概要设计和详细设计的区别
一般地说,概要设计又叫结构设计、部件设计,它主要是描述软件由哪些部件或模块构成的,以及这些部件或模块之间的关系。而详细设计则是具体描述每个部件或模块的实现方法。
除此之外,概要设计和详细设计还有以下不同点:
- 编写者不同
概要设计承接软件需求,所以概要设计可以由需求分析人员(熟悉软件需求)编写或者设计人员(站在设计的角度)来编写,而详细设计下后续软件实现,它可以由设计人员(站在设计的角度)编写,也可以由实现人员(站在实现的角度)来编写。
设计依据不同
概要设计依据软件需求进行设计,而详细设计不仅依据软件需求,更要依据概要设计的成果。
对应的测试级别不同
概要设计对应于集成测试,是设计集成测试用例的主要依据;而详细设计对应于单元测试,是设计单元测试用例的主要依据。
- 可裁剪性不同
概要设计给出了软件由哪些部件组成以及它们之间的关系,是最基本的设计要求,所以概要设计文档必须具备,不能裁剪;而详细设计用于指导代码实现的,详细设计文档可以合并到概要设计文档中,甚至在敏捷开发中,还可以用代码注释及可读性好的代码代替代详细说明。
- 设计文档内容不同
设计方法 | 概要设计 | 详细设计 |
---|---|---|
结构化设计 | 系统的体系结构、系统的技术路线、系统的模块划分、系统模块之间的接口关系、系统的内外部接口关系、系统的数据结构、系统复用设计、界面风格设计、设计约定 | 实现的功能、输入输出数据、实现算法、数据结构、交互界面 |
面向对象设计 | 系统结构划分、静态模型(有哪些类、类之间的静态关系、类的类型,主要通过类图的形式来表达)、动态模型(描述类与类之间是如何交互的,主要通过顺序图来表述,也可以采用协作图、活动图等)、设计约定、复用设计、界面风格设计、持久对象设计 | 类的具体责任、类的外部接口、类的属性与方法定义、方法的逻辑设计 |
- 描述的详细程度不同
在面向对象设计中,概要设计要将软件拆分到包和类。虽然并不一定能覆盖所有的类,但是包对外的接口类一定要覆盖,包内部的核心类要覆盖。在结构化设计中,概要设计要详细到模块,即函数的上级系统元素。而详细设计则要详细到完成方法或函数的逻辑设计。
两种设计大不同,一为结构一详细
前定框架为基础,后描组件怎实现
概要设计的主要内容
不同的系统类型其概要设计的内容也不相同,通过概要设计准则我们可以根据实际情况确定概要设计的具体内容,但是一般来说,概要设计的内容可以包含系统构架、模块划分、系统接口、数据设计4个主要方面的内容。
- 1.系统构架
系统构架包含系统使用的软硬件技术平台及相关技术列表、系统的物理架构、物理器件类型、数据库管理系统类型、服务器类型、子系统划分及部署方式、系统的软件架构、第三方软件平台列表等。
例: 软件技术平台
软件技术平台通常定义采用什么样的软件体系来实现具体的功能,比如采用SOA结构实现服务分散部署,用ESB解决数据通讯以及共享,采用MVC结构实现交互、业务分离,采用RIA技术支撑复杂、可视交互等等。
-
2.模块划分
模块划分的主要工作是结合业务领域以及系统的要求,通过拆分、合并、分组等方法,将各功能划分到子系统和功能模块中,并细化到各机能组件和功能模块上。模块划分可以通过2步来实现,层次以及模块设计和流程设计。 -
- 第1步层次设计,对于复杂系统需要对系统进行多层的划分,然后一层层的设计。层次划分的方法可以结合业务、部署、运用功能等因素考虑,首先进行分类,然后进行抽象分析,整理共性要素,将功能归纳到模块。制作方法方法可以采用各种表述方法,下例都是按图或表的方式制作的。
-
- 第2步进行流程划分,进行模块间的流程设计。层次、模块划分完成后,需要对整理描述各模块间的关系,这些关系可以包括时序关系、状态关系、数据关系等等。在实际设计中,可以根据情况采用不同的描述方法来制作对应的设计文档,比如以时序为主的系统可以采用时序图。例 模块切分后,切分用例、流程。采用时序图的方式进行的模块间流程设计
-
3.接口设计
软件系统结合业务、功能、部署等等因素将软件系统逐步分解到模块,那么模块与模块间就必须根据各模块的功能定义对应的接口。概要中的接口设计主要用于子系统/模块之间或内部系统与外部系统进行各种交互。接口设计的内容应包含:功能描述、接口的输入输出定义、错误处理等。软件系统接口的种类以及规范很多,可以有API、服务接口、文件、数据库等等,所以设计的方法也有很大的差异。但是总体来说接口设计的内容包含:通讯方法、协议、接口调用方法、功能内容、输入出参数、错误/例外机制等。从成果上来看,接口一览(表)以及详细设计资料是必须的资料。 -
4.数据设计
现代的软件系统和信息数据紧密的相连,尤其信息系统主要就是处理各类数据。从本质上来说各类系统都是(信息)收集、转换、处理、再转换、传播的过程。难道不是这样吗?从人体这个系统到我们的电视、手机系统,这些本质过程有差异吗? 软件系统的数据设计,尤其信息系统,主要包含数据库设计或完成核心(库)表的设计,当然除了数据库设计还包括建立在内存、文件中各种关键的数据也是设计内容。
ü 数据库设计:数据库逻辑设计、物理设计、容量设计、数据字典、数据部署设计等等内容。
ü 数据设计:配置文件设计、临时文件设计、内存数据设计(共享数据设计、内容数据结构设计)等内容。
例 数据库设计(E-R图)
详细设计的主要内容
详细设计的是概要设计的延续,这个延续体现在设计粒度上。一般来说,详细设计根据业务要求以及概要设计的内容,确定细化个各类组件的功能、逻辑流程、业务要求、组件接口。 从过程上基本遵循设计的4个主要活动,具体操作一般可以概括为模块组件分割、模块组件设计、设计共通功能3个步骤,其中组件分割是比较关键的。一般的信息系统,主要的组件分类可以包括画面、报表、服务、共同组件。
- 画面设计
画面设计是交互性设计的主要内容之一。常见的设计内容包括画面一览对应的画面迁移关系,详细的画面功能。
- 例, 画面一览
- 例,画面迁移
画面迁移主要描述画面间的动作关系、定义所有画面的出入口等内容。
单体画面设计 - 例 画面的原型
- 例 画面的动作定义
- 例 画面要素、处理定义
- 服务设计
服务组件对应软件系统主要通过软件接口实现功能的模块,详细设计中服务设计主要内容包括对应程序模块(package)设计、Class设计、处理逻辑(时序关系)、内外接口、限制条件等等。
例 处理逻辑
例 Class设计 - 共同设计
详细设计中关键的步骤就是进行共同设计,共同设计的多少往往极大的影响后续开发的工作量。比如一个系统抽取40%的共同和只抽取10%的共同,开发、测试工作量差异很大。建议 具体项目中应尽早以及有效的管理共同设计。共同设计可以大体分为业务共同、技术共同。
ü 业务共同是同业务相关的,可以根据业务的特征识别并抽象出不同的模型进行设计,不过一些常见共同比较容易识别,比如权限管理、基础(master)数据管理、用户管理、安全管理等等。再如常见的电商系统,包括内容(CMS)管理、推荐引擎、TM、OSS、BI、支付、广告管理等都可以根据情况纳入到共同设计中。
ü 技术共同一般是和计算机技术相关的,比如线程管理、画面各组件、LOG管理、内存管理、文件处理、文字处理、配置管理、加解密、日志、消息、异常、错误处理等。
- 例 共同设计
- 例 目录( 配置) 结构的设计
第五弹——概要设计和详细设计说明书的诞生
在之前的需求规格说明书完美告一段落之后,我们又将面临着完成概要设计和详细设计说明书的任务。
在四月中下旬,我们小组对此展开了一系列的讨论,将任务合理的进行分配,期间由于两个设计说明书的创作时间并不是十分充裕,我们没有时间让每位同学都同时参与到两个说明书的创作过程中,我们选择了更加高效的方式——分组来完成本次任务。
概要设计组:兰晨伟、赵洪萱、周玉城。 详细设计组:谭娥、刘述密。
我们通过小组内分工的方式有条有理的在五一假期前各自完成了自己的部分并由小组中的负责人负责将所有内容整合到一起。初步的说明书完成之后我们还将其分享到了全小组,两个小小组的同学通过一个旁观者的角度检查双方的说明书完成情况,给与了更多不一样的创意和见解。
就这样,既有分工又有讨论和监督,我们狮子山街一号的概要设计和详细设计说明书就这样顺利的在规定日期内诞生啦!
以上是关于概要设计和详细设计的主要内容,如果未能解决你的问题,请参考以下文章