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

2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。

3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。

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

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

详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。

概要设计阶段通常得到软件结构图

详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等

概要设计和详细设计

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

这个问题在公司内部经常有人问。现在陈述一下。

我们公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。

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

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

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

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

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

在这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不 能就地解决,不打招呼。详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。     概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。

我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。

概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。

有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做 概要设计;类属性、方法的内部实现看做详细设计。

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

软件设计采用自顶向下、逐次功能展开的设计方法,首先完成总体设计,然后完成各有机组成部分的设计。

根据工作性质和内容的不同,软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等;详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计、数据结构设计的细化,等等。

概要设计是详细设计的基础,必须在详细设计之前完成,概要设计经复查确认后才可以开始详细设计。概要设计,必须完成概要设计文档,包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。     详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计,应该完成详细设计文档,主要是模块的详细设计方案说明。和概要设计一样,每个模块的详细设计文档都应该独立成册。

概要设计里面的数据库设计应该重点在描述数据关系上,说明数据的来龙去脉,在这里应该结合我们的一下结果数据,说明这些结果数据的源点,我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档,就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。    概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式,各模块详细说明实现功能所需的类及具体的方法函数,包括涉及到的sql语句等。

概要设计只说明系统有多少个模块,各模块之间的接口和个模块本身的功能     详细设计说明某个具体模块如何实现,粒度应该比程序略高一些

软件的概要设计,主要是建立软件系统的整体架构,也就是我们在盖房子时候,需要先将房子的整个架子构建起来。

软件的详细设计,主要是将软件系统的各个部分的具体设计方法、逻辑、功能采用文字方式进行表述。这样在实现过程中,Coding人员原则上严格按此进行代码实现即可。

概要设计和详细设计说明书的区别相关推荐

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

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

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

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

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

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

  4. 开发文档之 概要设计说明书 详细设计说明书 数据库设计说明书

      软件工程是一门技术含量高设计极其复杂的学科.为了控制好软件产品质量和规范,就必须用大量的文档约束软件工程的进度和状态.浩大的软件工程对于缺少工作和项目经验的人来说,必然是摸不着头脑不知从何开始.[ ...

  5. 软件需求说明书 概要设计说明书 项目开发计划 详细设计说明书 模版

    一.软件需求说明书 1引言 2 1.1编写目的 2 1.2背景 2 1.3定义 2 1.4参考资料 2 2任务概述 2 2.1目标 2 2.2用户的特点 3 2.3假定和约束 3 3需求规定 3 3. ...

  6. 需求分析说明书、详细设计说明书、概要设计说明书样例

    以下是需求分析说明书.详细设计说明书.概要设计说明书样例 需要详细资料的去 http://bbs.csai.cn/BBS/view.asp?ID={CA9329C0-93C5-4417-9170-45 ...

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

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

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

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

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

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

最新文章

  1. 个人作业3——个人总结(Alpha阶段)
  2. div 隐藏_注入WordPress网站的隐藏垃圾邮件链接
  3. OpenCV计算机视觉编程攻略之行人检测
  4. druid监控配置及sql注入防火墙配置
  5. 迟到的2017年终总结与2018目标规划
  6. JAVA 内存模型 (Java Memory Model,JMM)
  7. hp g6服务器安装系统,HPProLiantDL180G6服务器安装图.PDF
  8. 如何使用UR机器人模拟软件URsim
  9. imx6 android快速启动,android启动不起来(已解决)
  10. 函数调用中的参数太多_函数调用
  11. 世界上第一台计算机国际象棋大师是如何诞生的?
  12. hive窗口函数使用详解
  13. Linux下进行微信小程序开发
  14. 尚硅谷Javase项目一(家庭收支记账软件)
  15. 77个提升自我的网站
  16. Porteus Kiosk
  17. 3Dmax已经贴好图的文件如何导入unity3D中
  18. n张图像合成一个长图
  19. 力扣题解:45. 跳跃游戏 II
  20. matlab使用出现矩阵为奇异值、接近奇异值或缩放错误。结果可能不准确。RCOND = NaN。

热门文章

  1. 非常好用的10个自用figma插件分享
  2. 从0到1的CTF之旅————Web(1)
  3. 计算机三级网络技术知识点大全(七)
  4. 计算机三级网络技术需要考二级什么,考计算机三级要先考二级吗?计算机三级的考试内容是什么?...
  5. RecyclerView StaggeredGridLayoutManager瀑布流实现中遇到的问题
  6. Vue全家桶入门精细讲解
  7. slack 使用说明_我如何使用Slack作为自己的个人助理
  8. AJAX应用的演示和源码
  9. DAY5-URDF优化 简单小练习 工具
  10. 【转】Tomato-shibby无线中继(无线级联)