面向过程的软件设计方法

前面主要是对系统的分析,从而明确我们系统的逻辑模型。也就是说,通过前面几章我们清楚了“系统需要做什么?”。而软件设计阶段主要任务则是要实现系统逻辑模型向物流模型的转化,即“系统是如何实现”的问题。

例如,下面是面向过程的软件设计方法阶段的一个大概图,主要包括这几个方面:软件设计的目标和任务、软件设计基础、模块独立性、设计类型、结构化设计方法以及最后形成概要设计说明书等。

我们进行软件设计,其主要目标是为了了解软件的需求并且明确软件的主要功能。在这阶段主要产生数据设计,数据结构的定义和过程设计。

例如,下面的开发信息流

从图中我们可以看出,软件设计主要来源于信息域需求,功能与性能的需求。然后在设计阶段主要围绕着数据设计、系统结构设计和过程设计三个方面来进行,最后才进入到下一阶段,即编码阶段。

软件设计阶段的任务主要是完成软件设计的概要设计和详细设计。

在概要设计阶段主要是完成系统的结构设计,包括划分模块以及模块的层次。而详细设计主要是完成数据设计,例如对数据的描述,定义等。

软件设计的目的和任务,规定了我们对软件的具体需求,为了实现这一阶段需要的任务。需要我们具备一些软件技术基础,其包括:

1.自顶向下,逐步细化:将软件的体系结构按自顶向下方式,对各个层次的过程逐层细化。把一个大的问题,分解成若干个子问题,从顶层开使进行划分,一直到不能再分解为止。

2.软件结构包括两部分:程序的模块结构和数据结构,软件的体系结构通过划分的过程:需求分析——确立的目标系统——模型出发——对整个问题进行分解,再对子问题进行求解。

例如下图的程序结构图:

3.结构图:反应程序中之间的层次调用关系和联系。

4.所谓模块,是指具有相对独立性的,由数据说明,执行语句等程序对象构成的集合。

了解了模块之后,我们来了解模块之间的调用关系和接口:

图中表示:A 循环的调用 C和D和有条件的调用B

下面一张是程序的系统结构图:

下面我们来了解图中涉及到的一些基本概念:

宽度:表示任一层模块数的多少,也就是每一层当中有多少个模块!

深度:表示模块的层次数。即图中有多少个层次。

扇出:表示每一模块带出的多少,也就是负载。例如,C的扇出为2,B的扇出为1.

扇入:表示这个模块被多少个模块调用。例如T的扇入为4,注意的是,扇入一般为1—5之间。

模块的对立性:

要了解模块的对立性,我们要先弄清楚什么是模块:所谓模块,是指具有相对独立性的,由数据说明,执行语句等程序对象构成的集合。一个模块具有输入/输出(接口)、功能、内部数据和程序代码四个特征。输入/输出主要是用于实现模块与其他模块间的数据传送,即向模块传入所需原始数据及从模块传出得到的结果数据。功能指模块所完成的工作。内部数据是指仅能在模块内部使用的局部量。程序代码用于描述实现模块功能的具体方法和步骤。

模块的独立性是指每个模块只需完成系统要求的独立子功能,与其他模块的联系少!一般遵循高内聚、低耦合的原则。

系统结构图中的模块主要包括以下模块:

传入模块:从下属模块中取得数据,经过某些处理,传入上级模块,传送的是逻辑数据流。

传出模块:从上级模块获得数据处理之后传到下级模块。

变换模块:从上级模块取得数据,经过特定处理之后,又返回到下级模块。

协调模块:对所有的下属模块进行协调和管理,例如d图中把X经过协调之后,变成了Y。

这几个模块在下面的图当中都会涉及到:特别是在变换型系统结构图和事务型系统结构图中。

例如:变换型系统结构图

变换型数据处理主要分为三步即,取得数据,变换数据和给出数据。

上图中要注意的是:在输入的时候,左边的模块是输入模块,右边的是变换模块,即先输入后变换;在输出的时候,则是要进行先变换后输出。

又如:事务型系统结构图

根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。

事务型数据处理,依赖于变换型,不同的是在事务处理中心有多条道供你选择。如图中出现的调度模块,数据经过调度完成之后,又返回到事务中心,然后进行输出!并且在调度模块提供了多个事务供你选择!

程序流程图:主要有五种基本控制结构:

N-S图:也叫盒图,五种基本控制结构用N-S图表示如下:

PAD图:问题分析图

使用问题分析图的好处是:

1:使用PAD图一定是结构化的程序

2.用PAD图描述的流程图比较清晰

3.可以表示程序的逻辑结构,易懂而且便于我们记忆。

4.嵌套层次清晰,可以很容易的将PAD图转变为高级的程序

5.可以描述数据结构

6.支持自顶向下,逐步求精方法使用。

posted on 2012-12-15 09:43 雨落天涯 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mingxuanyun/archive/2012/12/15/3084237.html

面向过程的软件设计方法相关推荐

  1. 《软件工程》-面向过程的软件设计方法

    [前言] 软件设计的目标和任务 软件设计基础 模块独立性 结构化设计方法 数据设计和文件设计.过程设计 [内容] 1.软件设计的目标和任务 根据用信息域表示的软件需求,以及功能和性能需求,进行 数据设 ...

  2. 【软件设计】软件设计方法归纳总结

    软件设计方法有:结构化设计(数据流图为依据).面向对象设计(面向对象概念为依据): 结构化设计方法的模块化体现为:过程.函数.子程序: 面向对象设计的模块化体现为:类.对象.构件. 以上为主流的两种, ...

  3. 【Java-笔试面试】面向对象与面向过程(结构化程序设计)的区别?

    文章目录 1.面向过程(结构化程序设计) 2.面向对象 1.面向过程(结构化程序设计)     结构化程序设计中最小程序单元是函数,各个模块都是不断细分为更小的模块,直到分为一个个函数,系统由这一个个 ...

  4. 软件工程学习笔记——第六章 软件设计方法

    目录 第一章 概述 第二章 过程和活动 第三章 软件过程模型 第四章 问题定义和可行性研究方法 第五章 需求分析方法-1 第五章 需求分析方法-2 第六章 软件设计方法 第七章 软件实施与测试方法 第 ...

  5. 软考·系统架构师论文——论基于架构的软件设计方法及应用

    文章目录 说明 摘要 过渡 项目背景 论点理论+实践 结尾 说明 1.[摘要 300~330字] ① 项目介绍:时间.项目名.项目主要功能简述.作者角色及工作内容 ② 项目技术简介:正文理论/分论点的 ...

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

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

  7. 软考高级系统架构设计师系列之:面向构件的软件设计,构件平台与典型架构

    软考高级系统架构设计师系列之:面向构件的软件设计,构件平台与典型架构 一.构件的概念 二.构件的标准布线 三.构件框架 1.体系结构核心构成 2.语境相关组合构件框架 3.构件开发 4.开发构件通常采 ...

  8. 软件工程:结构化软件设计方法 VS 面向对象软件设计方法

    一.基本概念 1.结构化方法 结构化方法是一种传统的软件开发方法,它是由结构化分析.结构化设计和结构化程序设计三部分有机组合而成的. 基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向 ...

  9. 面向对象与面向过程在软件开发中的应用

    今天设计一个功能模块,深入进去后突然对面向对象和面向过程有了些认识.赶紧记下来以免忘了. 在设计和开发一个软件或是功能的时候,眼光或是站的位置决定了你对软件的理解程度.如果你 以软件的设计者的角度你会 ...

最新文章

  1. Windows Server 2003 服务应用大全之DNS服务使用详解
  2. 关于数据中心的选址大全
  3. vue城市三级联动组件 vue-area-linkage
  4. launch mode 应用场景
  5. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...
  6. 谈谈我这几年的C++学习之路
  7. c语言中index函数,MATCH+INDEX函数详解
  8. 学python电脑要装什么_初学 Python 需要安装哪些软件?
  9. Tomcat 配置数据库连接池
  10. Android权限全记录(转)
  11. 捕获事件要比冒泡事件先触发
  12. Spring 注解编程之模式注解
  13. 软件需求说明书(GB856T——88)
  14. fbx 骨架_骨架修剪
  15. 易经- 第一卦 乾卦
  16. matlab trapz二重积分函数_「matlab 积分」使用Matlab求解定积分/不定积分 - seo实验室...
  17. 一篇文章,助你实现认知突破,重获新生
  18. 祖传治癌奇方 仅供参考 转自网络
  19. matlab——红绿灯颜色及数字识别(一)
  20. 30岁的我,裸辞、自甘堕落、重回生活:成功转行Python工程师,月入1W+

热门文章

  1. 双11大考 POLARDB分钟级弹性让企业轻松扩展
  2. 道器相融,由Angel论一个优秀机器学习平台的自我修养
  3. 基于HT for Web 快速搭建3D机房设备面板
  4. 浅谈算法和数据结构: 五 优先级队列与堆排序
  5. 功能:人脉(People Hub)2-群发短信(创建组)
  6. 【专题】“莓日一介”之(BlackBerry 7230“经典”)
  7. JQuery -- this 和 $(this) 的区别
  8. How to enable coredump on centos 7.6
  9. 我们前端忙成狗人家后端写SQL?
  10. docker 标记和推送镜像