软件设计是需求工程的后续阶段,他根据项目所描述的需求(功能需求、性能需求、领域需求、数据需求等)的定义,进行数据设计、体系结构设计、界面设计和过程设计。

软件设计主要解决“如何做”的问题,设计的方案最终会影响软件实现的成败。

一般把软件设计分为概要设计和详细设计两个阶段,包括体系结构设计、界面设计、数据设计和过程设计。

1.概要设计:

也称总体设计,主要任务是基于数据流图和数据字典,确定系统的整体软件结构,划分软件的各个子模块,确定他们之间的关系。概要设计是要完成体系结构设计、数据设计和界面设计。

体系结构设计:

确定各子系统模块间的数据传递与调用关系;

界面设计:

包括与系统交互的人机界面设计,以及模块间、系统与外部系统的接口关系;

数据设计:

包括数据库、数据文件和全局数据结构的定义。

2.详细设计

详细设计的任务就是在概要设计的基础上,具体实现各部分的细节,直至系统的所有的内容都有足够详细的过程描述,使得编码的任务就是将详细设计的内容翻译成代码就可以了。详细设计就是完成过程设计。

3.软件设计的原则

a.分而治之

分而治之用于解决大型、复杂度高的问题时所采用的策略。把大问题划分成若干个小问题,把对一个大问题的求解转换为对若干个小问题的解答,这样极大地降低了问题的复杂度;

b.重用设计模式

重用是指同一事物不做修改或者稍作改动就能多次使用的机制,重用的内容是软件的设计模式;

c.可跟踪性

软甲设计的任务之一就是确定软件各部分间的关系。设计系统结构,就是要确定系统各部分、个模块间的相互调用和控制关系,以便在需要修改模块的时,能掌握与修改模块有关的部分,并正确追溯问题的根源;

d.灵活性

设计的灵活性是指设计具有易修改性。会发生修改是因为:一是用户需求发生改变,二是设计存在缺陷,三是设计需要进化,四是设计利用重用。软件设计的灵活性主要是通过系统描述问题的抽象来实现。

e.一致性

一致性在软件设计方法和过程总都有体现。界面试图的一致性保证了用户体验和对系统的忠诚度。用统一的规则和约束规范模块接口定义,确保编码阶段对接口和数据结构的统一操作,减少数据理解的歧义。

aaa

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

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

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

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

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

  3. 软件工程——软件设计方法(概要设计)

    软件设计方法主要分为两个方面:1.概要设计  2.详细设计 概要设计: 一.软件设计的目标和任务 1.定义 将文字转化为结构图,根据用信息域表示的软件需求,以及功能和性能需求进行数据设计,系统结构设计 ...

  4. 软件设计是怎样炼成的(7)——细节决定成败(详细设计)

    摘要: 当我们需要考虑类.类的内部细节.类之间的关系时,这时我们已经开始做详细设计了.详细设计不一定是一份文档,也不一定是Word文档,详细设计也不一定叫"详细设计",有时候&qu ...

  5. 第4章 软件的设计——总体设计与详细设计

    第4章 软件的设计--总体设计与详细设计 1.划分模块可以减低软件的复杂度和工作量,所以应该将模块分得越小越好.(错误) 2.一般来讲,在模块划分时,应当尽量使用数据耦合,少用控制耦合,限制公共耦合的 ...

  6. 概要设计实例_多核片上系统(SoC)架构的嵌入式DSP软件设计

    多核片上系统(SoC)架构的嵌入式DSP软件设计 Multicore a System-on-a-Chip (SoC) Architecture SoCs的软件开发涉及到基于最强大的计算模型在各种处理 ...

  7. 面向过程的软件设计方法

    面向过程的软件设计方法 前面主要是对系统的分析,从而明确我们系统的逻辑模型.也就是说,通过前面几章我们清楚了"系统需要做什么?".而软件设计阶段主要任务则是要实现系统逻辑模型向物流 ...

  8. 第五次作业——软件设计

    第五次作业--软件设计 在开始软件设计之前,首先确定软件设计中的各个模块需要考虑的任务,绘制概要图如下: 下面根据上述各个模块,逐层进行软件设计: 一.概要设计 首先,概要设计的目的是确定软件的结构以 ...

  9. 如何取得好的软件设计

    [转贴] 段先德  2006-5-20 似乎作为一个软件开发者,就注定要背着沉重的行囊,穿行在茂密的热带丛林里,酷热,没有风,只有腐烂的植被.浓浓的瘴气.不时从肩膀上爬过的毒蜘蛛和从脚背上" ...

  10. 《大话软件工程—需求分析与软件设计》,给出了分析与设计过程中需要的理论、方法、工具和标准

    □ 做好一款软件从哪里开始呢?→ 客户需求的调研: □ 一款软件的价值高低由哪个环节决定呢?→ 软件的分析与设计: □ 软件顺利完成开发靠什么?→ 高效的项目管理: □ 软件开发的主要角色?→ 客户. ...

最新文章

  1. Java调用net的webservice问题分享
  2. bzoj2339[HNOI2011]卡农 dp+容斥
  3. grouping Function
  4. android 耳机检测,android – 检测耳机是否有麦克风
  5. 【比较面】真核生物和原核生物的异同
  6. 《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术
  7. 原型对象prototype和原型属性[[Prototype]]
  8. HTML map元素
  9. underscore.js依赖库函数分析一(遍历)
  10. Unix C编程:共享内存示例 测试代码
  11. MATLAB 图像处理工具箱 一种简单的基于图像处理交通信号灯识别算法
  12. 模板引擎jade/ejs,模板适配
  13. lwj_C#_集合listT
  14. 色彩模型(HSB,RGB,CMYK,YIQ,YUV)
  15. 计算机桌面图标有小锁如何去掉,去掉电脑桌面图标小黄锁的两种方法
  16. Exe文件开机启动,隐藏运行窗口运行
  17. 测试环境docker-swarm安装部署
  18. python excel动态图表_那些年做过的动态图表-实用漂亮的Excel动态图表
  19. MySQL百万级压测数据表
  20. 开放机器人控制软件Orocos

热门文章

  1. 《你的灯亮着吗》思维导图个人梳理
  2. 浅学transcad(与表格链接以及创建矩阵OD并显示期望线)
  3. 番茄时间法--2018年1月26号
  4. Ubuntu22.04(Linux Mint 21)安装使用绿联USB无线网卡CM448(rtl8821CU)的方法
  5. php网站 视频马赛克,给视频打马赛克的软件 如何在视频上打马赛克 怎样给视频的局部打马赛克...
  6. 杨永强“兑”现承诺 乐视云发力VaaS
  7. android 使用画布实现电子签名板功能并保存到本地
  8. MobTech城市智图 | 如何进行商场客群和竞品客群分析?
  9. 浏览器Cookie详解
  10. nmake的调用方法