【前言】

在经历过计划阶段和需求分析的阶段接下来就到了软件设计的阶段,他是软件工程中非常重要的阶段,它主要是分两步来完成,一个是概要设计,一个是详细设计!

一、概要设计阶段

1、解析

概要设计主要是完成,系统的结构设计,进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程。

2、软件设计的基础:

1.自顶向下,逐步细化;
2.软件结构 ——-将软件结构分解,为的是解决复杂性。
3.程序结构——–树状结构(层次结构),网状结构。
4.结构图———-解决了模块的层次关系和调用关系()
5.模块化———-能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。 (高内聚,低耦合)
6.抽象化———-考虑最本质的因素(功能)
7.信息屏蔽——–屏蔽重要的信息

3、模块的内聚和耦合

模块具有三个基本的属性,功能、逻辑、状态!功能指的是模块实现的功能是什么,逻辑就是描述模块内部应该怎么做,状态就是该模块使用时候的环境和条件。

耦合(块间联系)

耦合指的是模块间的联系的强度,耦合性越强,模块间的联系越强

内容耦合——– 一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合: 一个模块直接访问另一个模块的内部数据。
一个模块不通过正常入口而直接转入到另一个模块的内部。 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。 一个模块有多个入口。
内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。

公共耦合——— 一组模块都访问同一个全局数据结构。
外部耦合——— 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。
控制耦合———模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。
标记耦合———调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。
数据耦合———调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。
非直接耦合———两个模块之系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。

内聚(块内联系)

内聚指的是同一个模块之间的联系程度,理想模块都是高内聚的!

功能内聚——模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已 不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。
信息内聚——按照顺序执行(一个模块有一个任务)
通信内聚——具有公共的数据
过程内聚——顺序执行(一个模块中有多个任务,上一个步骤执行完,下一个执行)
时间内聚——同一时间完成任务,同一时间执行
逻辑内聚——将几种相关的功能结合在一起
巧合内聚——模块内部各部分之间没有什么联系

综上由上边的两幅图可知,模块的独立性强的表现为就是高内聚,低耦合。

4、概要设计的基本任务

(1)成本效益分析,系统的进度计划
(2)确定模块结构,划分功能模块,
(3)编写文档

5、产生的文档

概要设计说明书
用户手册
测试计划
数据描述

二、详细设计

详细设计主要是完成数据设计(描述定义)和过程设计(代码的依据),根据概要设计提供的文档,确定每一个模块的算法,内部的数据组织!

详细设计的基本任务:

(1)为每个模块进行详细的算法设计。
(2)为模块内的数据结构进行设计。
(3)对数据结构进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。
(4)估算存取时间和存储容量
(5)编写详细设计说明书。
(6)评审。对处理过程的算法和数据库的物理结构都要评审。

详细设计用到的工具

1、数据流程图

2、n-s图(盒图)

控制关系隐含,循环的次数隐含,它看不到控制流

3、pad图(问题分析图)便于记忆,容易转换成高级语言(自顶向下)

4、判定表(静态逻辑)

后记:

软工视频已经完成很长时间了,现在才总结,都是拖拉造成的,趁着假期,很快都会补上的!

【软件工程】 软件设计阶段相关推荐

  1. 软件工程之软件设计阶段

    软件设计阶段也是软件工程里的一个中重要问题,我把它分为三部分,软件设计阶段.软件编码阶段和软件测试阶段. 一.软件设计阶段 根据用信息域表示的软件需求,以及功能和性能需求分析,软件设计阶段的目标有数据 ...

  2. 软件工程 软件设计 步骤_好的软件设计特点 软件工程

    软件工程 软件设计 步骤 For good quality software to be produced, the software design must also be of good qual ...

  3. 软件工程-软件开发的工程思维

    软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...

  4. 【软件工程】--设计阶段

    [前言]    走过了前面的计划阶段和需求分析阶段之后,我们来到了设计阶段的学习,设计阶段的学习是至关重要的,本阶段是软件工程的核心,成品的软件的原型基本是在设计阶段塑造的,这个阶段要分两步来完成,首 ...

  5. 软件工程-软件设计基础

    第三章 软件设计基础 本总结是根据课上老师讲述内容所作笔记 软件设计–解决"如何做"的问题 一 软件设计阶段的任务和目标 设计任务:将需求阶段获得的需求说明(模型)转化为计算机中可 ...

  6. [软件工程]软件生存周期过程与管理————(2020.6.29学习笔记)

    目录 第一节 软件生存周期过程概述 第二节 过程描述 第三节 应用说明 第四节 软件生存周期模型 第五节 过程规划与管理 第一节 软件生存周期过程概述 软件生存周期(SDLC,软件生命周期) 是软件的 ...

  7. 软件工程软件开发成本度量规范_软件开发成本度量方法

    软件成本度量一直都是软件行业的一个痛点问题.软件度量一度乱象丛生.拍脑袋的定价方式曾大行其道.软件成本度量的乱象直接导致了软件价格的诸多问题.比如预算费用存在浪费或不足的现象,招标存在投标额过低过高等 ...

  8. 软件工程 软件工程师的誓言

    有人说 程序 = 算法 + 数据结构 有人说 软件 = 程序 + 软件工程,  软件企业 = 软件 + 商业模式. 程序本身没有伦理和职业道德, 但是程序员和软件企业要有. 我们听说过很多例子: 一个 ...

  9. 软件工程-软件生存周期模型

    软件工程-软件生存周期模型 软件工程-软件测试 软件工程-软件测试-测试方法 概念 同任何事物一样,一个软件产品或软件系统也要经过孕育.诞生.成长.成熟.衰亡的许多阶段,一般称为软件生存周期. 软件的 ...

最新文章

  1. android监听器在哪里创建,[转载]android开发中创建按钮事件监听器的几种方法
  2. 【通知】3月第二周直播预告,模型优化,人脸识别,图像增强核心技术与难题...
  3. find 按文件修改时间查找文件
  4. strlen函数_四种好用的PHP自定义加密函数(可逆/不可逆)
  5. Assemby 打包并启动jar包
  6. mysql实验视图及索引_MySQL视图及索引
  7. set python_Python之set的用法(一)
  8. java技术类网站收录
  9. SQL的四种连接查询
  10. 2D激光雷达的多传感器拼接
  11. java实现五子棋_Java的五子棋实现
  12. php怎么解析xml,php解析xml方法实例详解
  13. HTML表格中输数字进行计算,excel表格如何自动计算输入数字
  14. GSM/CDMA区别
  15. Unity提取模型动画
  16. 阳春三月,正是樱花绽放时,借此机会给午饭献上鲜艳艳的视觉盛宴!
  17. C++ modbus TCP 协议跟PLC通信
  18. 自律努力有目标的人生有多美
  19. Orin平台GMSL camera CHANSEL_NOMATCH问题分析
  20. 计算机一级更换桌面,2018自动替换壁纸工具

热门文章

  1. 做个男人,做个成熟的男人,做个有城府的男人
  2. 李建忠设计模式——策略模式Strategy
  3. 电子垃圾也很香 篇一:垃圾佬捡个路由器1:选择与刷机
  4. Linux socket accept尽信书不如无书
  5. html ol圆点,HTML ol 标签 type属性
  6. ol-ext transform 对象,旋转、拉伸、放大(等比例缩放),事件监听
  7. 新海诚画集[秒速5センチメートル:樱花抄·铁道]
  8. php命令执行后门,php后门木马常用命令
  9. SPI总线的特点、工作方式及常见错误解答重点是SCK时钟频率时间
  10. RocEDU.阅读.写作《苏菲的世界》书摘(四)