本文主要是介绍概要设计、详细设计:概念、方法、实践步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
完整软件开发流程:
需求分析、概要设计、详细设计
一
1. 概念、方法、实践步骤
设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程。根据设计粒度和目的的不同可以将设计分为概要设计、详细设计等阶段以便于管理和确保质量。设计内容也要根据软件系统的实际情况进行定义,比如对于交互性要求高的系统可以有视觉设计等等。
一般来说可以将设计阶段划分为概要设计、详细设计2阶段进行管理,程序设计可以结合项目管理、作业配分、开发团队的能力以及质量要求等因素来决定是否作为单独的阶段进行管理。
n
n
程序设计:结合具体的编码语言,编码过程中对代码的设计。根据经验对于团队中有大量初学者来说,进行一定量的程序设计可以提高编码的质量和效率。
2. 设计阶段的主要流程
设计阶段的主要活动包括以下内容:设计阶段的计划或规划、确定设计的准则、设计以及制作设计文档、设计产物评审等。
1.设计阶段的计划或规划内容为确定设计团队的组织并授权、评估设计阶段的工作量、明确设计的工作任务(WBS分解)以及完成时间、定义设计阶段的质量标准以及效率标准。这部分活动主要是PDCA中首要步骤,除上述内容外,还需要考虑项目管理中一些共同管理规划,比如风险管理、配置管理、干系人管理、变更管理、决策分析管理等等内容。在多人或团队作业的工作,制定合理的计划和规划是首要的步骤。
2.设计不同类型的系统其设计方法、方式等有很大的区别,比如图像处理系统、监控系统和ERP等管理系统的差异是显而易见的。因此设计阶段有个关键的活动就是确定设计准则,这个活动的主要目的就是根据系统的实际情况,选择最佳的实践,用最优的方法指导设计的进行。设计准则通常要考虑的内容包括:设计的内容、方法、工具、模板、命名规约、模块划分规则(尤其设计粒度)、质量以及效率评估方式等等。
3.设计以及制作设计文档:根据设计准则以及设计规划执行设计任务并制作设计文档多数情况不是一件复杂的工作,但是对软件系统来说却是一个迭代的、消化大量时间的过程。从我们讨论设计思路、形成初步草案、充分沟通、决策优劣、再修正、评审通过都需要理解、学习、反复迭代并花费大量时间。软件系统的设计无论采用什么形式,分层、抽象、归纳、汇总是设计的主要方法。分层和抽象是最关键的步骤,也是相对比较难掌握的,无论分层和抽象都是从分类开始的,比如功能的分类、业务的分类、信息的分类、控制模式的分类等等,只要能逐层分类就很容易进行分层和抽象。另外,归纳、汇总是常见的方法,也是体力工作,只要认真细致就能很好的完成。
4.设计产物评审:针对设计设计产物进行评审以及相关的沟通是确保设计质量的主要活动。从形式上,可以采用多种方法,比如设计小组评审、P2P评审、正式会议评审等等。
设计阶段的主要活动设计阶段的计划或规划、确定设计的准则、设计以及制作设计文档、设计产物评审等是个反复迭代的过程。本质上设计是个学习迭代的过程、通过不断的评审、确认、改善达到成熟,因此设计的保证手段主要是设计准则和评审。
根据软件项目类型的不同具体流程也有一些细节差异,每个软件开发组织可以结合业务特征具体定义,下面举例介绍2种典型的流程。
例:软件外包企业,工程类的典型流程(概要设计)
主要特征:
ü
ü
ü
3.1制定及修改项目计划
•
•
•
注:与客户达成一致是外包的核心,计划以及核心内容和客户达成一致非常重要。
•
3.2确定系统架构和概要设计准则
•
a.
b.
如果用户有不同于一般项目的要求或者采用了公司不熟悉的架构,开发技术(环境)组需制作项目原型,以验证技术架构方案并确保其正确性。
注:根据不同工作量、技术、质量、进度要求、团队规模等识别出项目分类,并对概要设计的关键控制点(体系结构)进行不同的管控。
•
3.3设计业务机能
•
•
•
•
•
•
3.4评审系统概要设计
•
•
3.5确认概要设计
•
注:软件外包中的概要设计结果一般还需要客户的评审,这个也是项目屏蔽风险的主要方法,但是不同的客户技术水平并不相同,还要根据实际情况来判断。
3.6纳入基线管理
•
•
案例2:软件产品类的典型流程
主要特征:
ü
ü
ü
3.1计划编制
产品研发经理根据《开发详细时间计划》细化设计工作,编制《系统设计计划》。经相关人员确认后,提交产品团队经理审核,审核通过后发布计划。
产品团队经理应将《系统设计计划》及时合并到《开发详细时间计划》中。
3.2设计准则确定
系统设计组根据项目情况,确定设计准则。准则通常包括:设计的方法、设计使用的工具、设计成果物所使用的模板等。
系统设计组制定各种设计方针,设计过程中需遵循已定义的方针。
3.2.1概要设计准则
概要设计方针通常包含:功能模块命名规约、功能模块操作、错误处理、异常处理、提示信息显示、日志记录等。
系统设计组汇总概要设计方针形成《概要设计准则》。
3.2.2详细设计准则
详细设计的方针通常包含:类和方法命名规约、方法输入参数的排列次序、方法输出参数的格式、提示信息输出格式、方法级日志输出格式等。
系统设计组汇总详细设计方针形成《详细设计准则》。
3.2.3设计准则评审
产品研发经理宜组织资源对《概要设计准则》、《详细设计准则》进行评审,评审通过后,由配置组进行配置管理。
3.3概要设计
3.3.1《概要设计书》编制
《概要设计书》应包含以下内容:
3.3.2《概要设计书》评审
产品研发经理组织相关干系人对《概要设计书》进行评审。评审通过后,由配置组进行配置管理。
3.4视觉设计
注:强调交互设计中的视觉设计,单独作为一项工作内容进行管理。
3.5详细设计
3.5.1《详细设计书》编制
《详细设计书》应包含以下内容:
3.5.2《详细设计书》评审
产品研发经理组织相关干系人对《详细设计书》进行评审。评审通过后,由配置组进行配置管理。
3.6 前端设计
注:强调交互设计中的视觉设计,单独作为一项工作内容进行管理。
二
参考:http://blog.sina.com.cn/s/blog_5dfa359001016urn.html
不同的系统类型其概要设计的内容也不相同,通过概要设计准则我们可以根据实际情况确定概要设计的具体内容,但是一般来说,概要设计的内容可以包含系统构架、模块划分、系统接口、数据设计4个主要方面的内容。
1.系统构架
系统构架包含系统使用的软硬件技术平台及相关技术列表、系统的物理架构、物理器件类型、数据库管理系统类型、服务器类型、子系统划分及部署方式、系统的软件架构、第三方软件平台列表等。
例: 硬件架构
例: 软件架构:包括层次划分、子系统&模块划分
例: 软件技术平台
软件技术平台通常定义采用什么样的软件体系来实现具体的功能,比如采用SOA结构实现服务分散部署,用ESB解决数据通讯以及共享,采用MVC结构实现交互、业务分离,采用RIA技术支撑复杂、可视交互等等。
例: 子系统划分
2.模块划分
模块划分的主要工作是结合业务领域以及系统的要求,通过拆分、合并、分组等方法,将各功能划分到子系统和功能模块中,并细化到各机能组件和功能模块上。模块划分可以通过2步来实现,层次以及模块设计和流程设计。
第1步层次设计,对于复杂系统需要对系统进行多层的划分,然后一层层的设计。层次划分的方法可以结合业务、部署、运用功能等因素考虑,首先进行分类,然后进行抽象分析,整理共性要素,将功能归纳到模块。制作方法方法可以采用各种表述方法,下例都是按图或表的方式制作的。
例 层次、模块划分
例中对系统首先进行了平台的划分(省、市、终端)、各平台中的子系统(监控系统、分析系统)进行定义,同时对子系统中的各模块(服务)进行的明确的定义。
例 层次、模块划分
按业务功能进行划分,同时对一些共性模块进行抽象后归纳。
第2步进行流程划分,进行模块间的流程设计。层次、模块划分完成后,需要对整理描述各模块间的关系,这些关系可以包括时序关系、状态关系、数据关系等等。在实际设计中,可以根据情况采用不同的描述方法来制作对应的设计文档,比如以时序为主的系统可以采用时序图。
例 模块切分后,切分用例、流程。采用时序图的方式进行的模块间流程设计
3.接口设计
软件系统结合业务、功能、部署等等因素将软件系统逐步分解到模块,那么模块与模块间就必须根据各模块的功能定义对应的接口。概要中的接口设计主要用于子系统/模块之间或内部系统与外部系统进行各种交互。接口设计的内容应包含:功能描述、接口的输入输出定义、错误处理等。软件系统接口的种类以及规范很多,可以有API、服务接口、文件、数据库等等,所以设计的方法也有很大的差异。但是总体来说接口设计的内容包含:通讯方法、协议、接口调用方法、功能内容、输入出参数、错误/例外机制等。从成果上来看,接口一览(表)以及详细设计资料是必须的资料。
例.
这个接口定义了数据的格式、含义、类型等方面的内容。
例.
4.数据设计
现代的软件系统和信息数据紧密的相连,尤其信息系统主要就是处理各类数据。从本质上来说各类系统都是(信息)收集、转换、处理、再转换、传播的过程。难道不是这样吗?从人体这个系统到我们的电视、手机系统,这些本质过程有差异吗? 软件系统的数据设计,尤其信息系统,主要包含数据库设计或完成核心(库)表的设计,当然除了数据库设计还包括建立在内存、文件中各种关键的数据也是设计内容。
ü
ü
例 数据库设计(E-R图)
例 数据字典
补充
例 内存设计
补充
例 配置文件设计
补充
3.2详细设计的主要内容
详细设计的是概要设计的延续,这个延续体现在设计粒度上。一般来说,详细设计根据业务要求以及概要设计的内容,确定细化个各类组件的功能、逻辑流程、业务要求、组件接口。 从过程上基本遵循设计的4个主要活动,具体操作一般可以概括为模块组件分割、模块组件设计、设计共通功能3个步骤,其中组件分割是比较关键的。一般的信息系统,主要的组件分类可以包括画面、报表、服务、共同组件。
1.画面设计
画面设计是交互性设计的主要内容之一。常见的设计内容包括画面一览对应的画面迁移关系,详细的画面功能。
例, 画面一览
例,画面迁移
画面迁移主要描述画面间的动作关系、定义所有画面的出入口等内容。
单体画面设计
2.服务设计
服务组件对应软件系统主要通过软件接口实现功能的模块,详细设计中服务设计主要内容包括对应程序模块(package)设计、Class设计、处理逻辑(时序关系)、内外接口、限制条件等等。
例 处理逻辑
例 Class设计
3.共同设计
详细设计中关键的步骤就是进行共同设计,共同设计的多少往往极大的影响后续开发的工作量。比如一个系统抽取40%的共同和只抽取10%的共同,开发、测试工作量差异很大。建议 具体项目中应尽早以及有效的管理共同设计。共同设计可以大体分为业务共同、技术共同。
ü
ü
例 共同设计
补充
例 目录( 配置) 结构的设计
参考:
http://blog.sina.com.cn/s/blog_5dfa359001016urn.html
三:
1. 关键点(Know-How)、运用技巧
4.1 设计准则
制定设计准则是概要设计阶段的最主要、最关键的工作。在实际工作中往往忽略,多数项目牺牲在这个环节。制定设计准则着眼于如何更好的做设计,设计准则通常要考虑的内容包括:设计的内容、方法、工具、模板、命名规约、模块划分规则(尤其设计粒度)、质量以及效率评估方式等等。我们首先要根据系统的需求、客户能力、项目的特征(成本、规模、进度、质量)以及自身的经验确定设计的内容。对于软件外包类的工程项目,尤其一些国际外包项目,设计准则一般已经制定好了,我们的设计团队只需要学习、理解、制作并符合这些要求的。而另外一些情况,需要我们一项项的定义规则,并同客户达成共识。实际上从某种角度来说,设计准则就代表着设计能力。
1. 设计内容的定义
识别以及定义概要设计、详细设计的内容,在定义设计内容时需要考虑成本、质量、进度、团队能力等方面的因素,同时也要兼顾测试阶段的要求。
例:一般网站系统的设计内容
概要设计 | 概要设计书 | 1本 | 系统架构设计 |
物理架构 | |||
软件架构&软件层次设计 | |||
子系统(包含共同部分\PACKAGE命名) | |||
接口总设计 | |||
概要设计-同XXX接口设计书 | 若干 | 同各产品的分接口设计 | |
概要设计-网站结构设计书 | 1本 | 网站结构设计(目录结构划分\包含部署设计) | |
概要设计-数据库设计书 | 1本 | 数据库物理/逻辑设计 | |
概要设计-数据字典书 | 1本 | 数据字典 | |
详细设计 | 画面一览表 | 1本 | 所有展示画面一览表 |
共同设计 | 1本 | 所有程序级别的共同设计(总合并一本):日志\LOG\消息\SESSION\权限\宏定义\数据库操作规程\画面各组件\专项功能\业务共同 | |
提示信息设计 | 1本 | 日志\LOG\对外消息 所有对外提示信息总集中一起. | |
配置设计 | 1本 | 各种配置项目总体引索 | |
详细设计 | 1本 | 通用规则设计,大多数功能统一设计 | |
详细设计-XX功能 | 若干 | 复杂功能,单独设计.大约30%~50% |
例:监控类系统设计内容
编号 | 概要设计内容 | 描述 | |||
1 | 业务方面 | 业务 | 《变电站业务层总体概要设计》 | 1本 |
|
2 |
| 《变电站业务层站端概要设计》 | 1本 |
| |
|
| ….. |
|
| |
5 |
| 《画面设计一览表》 | 1本 |
| |
6 |
| 《画面演示Demo》 | 若干本 |
| |
7 | 服务 | 《变电站服务层数据交换标准》 | 总1本 |
| |
8 |
| 《变电站服务层概要设计》 | 总1本(也可以按服务分) |
| |
10 | 信号 | 《全信号一览表》 | 1本 | 信号标准分类/编号/设备信息标准-通讯标准-警报标准-处理标准-性能要求 对应表 | |
11 |
| 《变电站智能设备信息标准》 | 若干本 | 分设备,信号格式规范 | |
|
| …. |
|
| |
16 |
| 《版本导入信号一览表》 | 1本 | 管理用 | |
17 | 数据 | 《数据库逻辑设计书》 | 1本(按站/市/省分比较好) | 数据库表与字段的逻辑设计 | |
|
| …. |
|
| |
21 |
| 《系统配置信息规范》 | 总合1本 | 内容是各种配置的说明 | |
22 | 接口 | 《MIS系统接口设计书》 | 1本 |
| |
|
|
| …. |
|
|
26 | 技术方面 |
| 《变电站辅助监控架构设计说明书》 | 1本 |
|
27 |
| 《关键技术调查案》 | 若干 |
| |
| 详细设计内容 |
| |||
1 | 业务方面 |
| 《画面设计》 | 若干本 |
|
2 |
| 《报表设计》 | 若干本 |
| |
3 |
| 《服务层详细设计》 | 若干本 | 根据服务展开设计(状态管理/控制管理/ADP) | |
4 | 技术方面 |
| 《画面层详细设计》 | 1本 | 画面引擎/结构原型设计 |
5 |
| 《服务层详细设计》 | 1本 | 服务引擎/结构原型设计 | |
6 |
| 《系统共通设计》 | 1本 |
| |
7 |
| 《业务共通设计》 | 1本 |
| |
8 |
| 辅助开发/测试工具 | 若干本 | 管理用,辅助效率开发使用 |
2. 设计方法以及工具
根据设计的内容以及要求考虑采用何种设计工具进行设计。比如采用ERWIN进行DB设计、Visio进行流程设计等等。另外,有些设计工具还必须对设计团队进行培训才能有效的使用。
3. 制作设计模板
将各设计书制作成对应模板,对格式、内容、图例、文字等做出具体的要求,可以使团队更有效的工作。有的时候,我们会对设计书的1-4级目录都会详细制定,以保证设计更有效的进行。
例 数据模版
注:对于EXCEL之类的模版,可以制作一些宏或工具更便于检索、修改等操作。另外,也可以借助wiki等系统提高设计资料的管理。
4.命名规约、模块划分规则
命名规约可以包含很多的内容,比如设计资料文件的命名、各类术语的命名规则、编号的规则等等。其中,给任何东西都编个合适的号是个好习惯,当然也许有人认为这是属于IT的职业病。当设计资料有数十、百G时,当一个设计人员需要和不同层次的人员,比如客户、用户、业务专家、管理人员、开发人员、测试人员等等进行沟通时,有的时候还不得不用各种语言进行交流,任何人都希望有个完整的命名规约。
2.
例,设定质量以及效率的目标
4.2 设计评审
补充
4.3 变更管理
补充
4.4 团队组织
补充
四:
参考:http://blog.sina.com.cn/s/blog_5dfa359001016urv.html
1. 设计一般来说是个学习迭代的过程、通过不断的评审&确认&改善达到成熟. 但是前提必须写出设计文档,而不能仅仅停留在脑袋里。
2. 分层、抽象、归纳、汇总 是设计的主要方法。其中分层是最最基本的,而是绝大数设计人员不能掌握的(这个有点悲剧),归纳是常见的方法。
3.交互的设计往往是人们关注的重点,所以也要特别注意、特别设计。对于画面的风格、操作等我的理解是“美的事物,任何人都觉得美”。
4. 设计的完整性、严密性、可用性是成功的主要因素。
5.设计不等同于创造和创新,但是好的设计一定包含各种创新。
6. 多看看其他的系统,功能、交互方法、实现方式等,才会有思路,有想法。比如,画面色彩、布局等可以参考日本的网站,交互参考欧美站。多看才有比较!
7.系统/产品研发就是群体学习活动,什么时候学会什么完成。需求、概要设计、详细设计中如何描述、粒度如何划分,是要在前期就要思考的,这些是研发人员的“教材”。
参考:
http://blog.sina.com.cn/s/blog_5dfa359001016urv.html
这篇关于概要设计、详细设计:概念、方法、实践步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!