概要设计和详细设计

在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法?

一般公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。 结构化设计方法的基本思路是:按照问题域,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。模块的概念,和编程语言中的子程序或函数是对应的。

这样一来,设计可以明显地划分成两个阶段:

  • 概要(结构)设计阶段:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。
  • 详细设计阶段:依据概要设计阶段的分解,设计每个模块内的算法、流程等。

一、概要设计阶段

在这个阶段,设计者会大致考虑并照顾模块的内部实现,但不过多纠缠于此。主要集中于划分模块、分配任务、定义调用关系。模块间的接口与传参在这个阶段要定得 十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。概要设计一般不是一次就能做到位,而是反复地进行结构调整。典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。

概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。以概要设计文档为依据,各个模块的详细设计就可以并行展开了。

二、详细设计阶段

  • 在这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。
  • 详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。
  • 概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。
  • 概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。 有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做 概要设计;类属性、方法的内部实现看做详细设计。
  1. 需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。
  2. 概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。
  3. 详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。

三、概要设计和详细设计的区别与联系

  • 概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。 详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
  • 概要设计阶段通常得到软件结构图,详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。
  • 软件设计采用自顶向下、逐次功能展开的设计方法,首先完成总体设计,然后完成各有机组成部分的设计。根据工作性质和内容的不同,软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等;详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计、数据结构设计的细化,等等。
  • 概要设计是详细设计的基础,必须在详细设计之前完成,概要设计经复查确认后才可以开始详细设计。概要设计,必须完成概要设计文档,包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。
  • 详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计,应该完成详细设计文档,主要是模块的详细设计方案说明。和概要设计一样,每个模块的详细设计文档都应该独立成册。
  • 概要设计里面的数据库设计应该重点在描述数据关系上,说明数据的来龙去脉,在这里应该结合我们的一下结果数据,说明这些结果数据的源点,我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档,就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。
  • 概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式,各模块详细说明实现功能所需的类及具体的方法函数,包括涉及到的sql语句等。

四、软件设计的过程

1、制定规范

在软件开发组设计标准,规定编码的信息格式,命名规则

2、软件系统结构的总体设计

基于功能层次,划分模块,采用抽象、分层、模块分解

3、处理方式设计

确定为实现功能的需求所必须的算法,评估算法的性能。

4、数据结构设计

确定数据的模式,子模式,安全性,整体性,输入输出文件的结构和模式

5、可靠性设计(质量设计)

运行期间为了使用要求,保证可靠的运行

6、编写概要设计阶段的文档

概要设计说明书,数据库的说明书,进一步完善用户手册,制定初步的测试计划

7、概要设计评审

概要设计说明书,评审的要点:可追溯性、接口、

模块的内部,高内聚、低耦合

模块的作用于是否在控制范围内,实用性,技术清晰性

其他的选择方案,

8、详细设计阶段

确定软件各个组成部分的算法,

选定某种过程的表达形式,

进行详细设计的评审,

五、软件设计的基础

自定下下,逐步细化

将软件的体系结构按自定向下方式,对各个层次的过程细节和数据细节逐层细化

软件结构

软件的结构包括两部分。程序的模块结构和数据的结构。

程序结构

树状结构、网状结构、

结构图

反应程序中模块中模块之间的层次调用关系和联系

模块

模块的调用关系和接口

模块之间的信息传递

表示模块A有条件地调用另一个模块

模块化

能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。

抽象化

软件系统进行模块设计时,可以有不同的抽象层次。

功能抽象:

抽象层次1(高层次的抽象):用问题所处环境的术语来描述这个软件。

抽象层次2:任务需求的描述。

抽象层次3:程序过程表示。

数据抽象:在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。

模块独立性:

模块:一般具有如下三个基本属性:功能、逻辑、状态、模块的独立性、采用耦合和内聚

六、概要设计说明书:

1、引言

1.1编写目的

1.2项目背景

1.3定义

1.4参考资料

2、任务概述

2.1目标

2.2运行环境

2.3需求概述

2.4条件与限制

3、总体设计

3.1处理流程

3.2总体结构和模块外部设计

3.3功能分配

4、接口设计

4.1外部接口

4.2内部接口

5、数据结构设计

5.1逻辑结构设计

5.2物理结构设计

5.3数据结构与程序的关系

6、运行设计

6.1运行模块的组合

6.2运行控制

6.3运行时间

7、出错处理设计

7.1出错输出信息

7.2出错处理对策

8、安全保密设计

9、维护设计

详细设计说明书

1、引言

1.1编写目的

1.2项目背景

1.3定义

1.4参考资料

2、总体设计

2.1需求概述

2.2软件结构

3、程序描述

3.1功能

3.2性能

3.3输入项目

3.4输出项目

3.5算法

3.6程序逻辑

3.7接口

3.8存储分配

3.9限制条件

3.10测试要点

概要设计和详细设计(软件)相关推荐

  1. 软件概要设计与详细设计的区别

    概要设计与详细设计的区别 概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等.同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数 ...

  2. 软件工程——软件开发阶段(概要设计、详细设计)

    需求分析确定了系统的开发目标,下一步工作就是软件设计.软件设计可以进一步地 分为两个阶段:总体设计和详细设计.确定系统的具体 实现方案.给出软件的模块结构.编写各个文档 目的是什么? 承上(需求)启下 ...

  3. 概要设计与详细设计分别要做什么

    概述     概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等.同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据 ...

  4. 总体设计、概要设计和详细设计

    软件设计分为概要设计和详细设计. 概要设计实现软件的总体设计.模块划分.用户界面设计.数据库设计等等: 详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计.数据结构设计的细化 ...

  5. 概要设计和详细设计说明书的区别

    1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确.无歧义.不涉及具体实现方法.用户能看得明白,开发人员也可据此进行下面的工作(概要设计). 2.概要设计--产生软件概要设计 ...

  6. 概要设计、详细设计:概念、方法、实践步骤

    完整软件开发流程: 需求分析.概要设计.详细设计 一 1.  概念.方法.实践步骤 设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程.根据设计粒度和目的的不同可以将设计分为概要设计. ...

  7. 概要设计和详细设计的区别

    模块的概念 软件工程中谈到的模块是指整个系统中一些相对对独立的程序单元,每个程序单元完成和实现一个相对独立的软件功能.通俗点就是一些独立的程序段.模块设计也叫详细设计,是系统设计阶段后续的一个软件开发 ...

  8. 概要设计与详细设计的区别

    目录 概要设计与详细设计的区别如下: 概要设计与详细设计的区别如下: 1.概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构.设计软件结构的具体任务是:将一个复杂系统按功能进行 ...

  9. 概要设计与详细设计的区别(转)

    概要设计与详细设计的区别 概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等.同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数 ...

  10. 软件概要设计和详细设计的区别

    差别项 概要设计 详细设计 定义 说明系统的体系结构.选择的技术路线.系统模块划分.系统模块之间的接口关系.系统的内外部接口关系.系统的数据结构.系统复用设计.界面风格设计.设计约定.整体说明软件的实 ...

最新文章

  1. 紫书 习题 10-17 UVa 11105 (筛法)
  2. SGU 111 Very simple problem
  3. PHP:echo、print、print_r() 和 var_dump()
  4. 使用 docker 搭建 web 服务环境
  5. c++怎么输入esc_绘制CAD图纸的过程中CAD快捷键失灵了怎么办?
  6. NavigationController 已经洗干净了, 就等你来
  7. 您的UX库不只是书籍
  8. flymcu无法打开串口_西门子1200与其他PLC/组态软件无线串口通讯(自由口)
  9. Go语言学习Day01
  10. y币充值通道_比特币如何扩容?读懂比特币链下扩容技术进展与投资现状
  11. mysql hy000 2013_MySQLERROR2013(HY000)错误解决方法
  12. 大数据的特性优势有哪些
  13. 网络安全实验四 防火墙技术的具体应用
  14. Springboot封装的好的发送post请求的工具类
  15. 常用思维模式大全(上)
  16. 解决网络栏只剩下飞行模式
  17. 携程航班信息爬取(python)---第一次写博客,不好请别见外!
  18. 淘宝自动客服(旺旺机器人)
  19. 2015年HEVC解码器组个人工作总结
  20. xml生成xsd文件的方法

热门文章

  1. DEA模型(数据包络分析)deap2.1操作方法
  2. office出错怎么简单修复
  3. 番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
  4. xshell4 选中复制,右键粘贴
  5. python批量检索文献_导师每天都让查文献,如何才能快速查找文献呢?
  6. 斯坦福大学最新-机器学习导论
  7. 微信小程序 图片显示不出来的问题 100%管用
  8. 微信小程序图片上传uploadfile失败
  9. 原生JS实现canvas移动端电子签名板/画板
  10. Keil MDK 软件包(MDK5 Software Packs)离线下载方法