首页 > 其他分享 >第四章 总体设计

第四章 总体设计

时间:2024-04-05 18:14:17浏览次数:14  
标签:软件结构 模块化 总体设计 模块 内聚 耦合 第四章

第四章 总体设计

怎样实现目标系统

【考核内容】

总体设计的概念、设计步骤;模块化的概念、作用,模块化程度与软件开发工作量的关系;Miller法则,模块独立性的重要性,模块耦合及其分类,模块内聚及其分类,模块设计的几条启发式规则及与之相关的概念(深度、宽度、扇出、扇入、作用域);结构图的符号及其意义。

【考核要求】

1. 掌握总体设计的概念与设计步骤;
  • 总体设计的概念
    1. 基本目的是回答“概括地说,系统应该如何实现”这个问题;
    2. 设计软件的结构,确定软件的程序有哪些模块组成,以及这些模块的关系
  • 总体设计的步骤:系统设计阶段,确定系统的实现方案;结构设计阶段,确定软件结构
    1. 设想供选择的方案;
    2. 选取合理的方案;
    3. 推荐最佳方案;
    4. 功能分解;
    5. 设计软件结构;
    6. 设计数据库;
    7. 制定测试计划;
    8. 书写文档;
    9. 审查和复查。
2. 理解软件总体设计中模块化的作用,模块化程度与软件开发工作量的关系;
  • 模块:可以用一个名字调用的相邻程序序列
  • 模块化:把程序分成独立命名且可以独立访问的模块,每一个模块完成一个子功能,这些模块所构成的整体,可以满足用户的需求。
  • 模块化的作用
    • 可以使软件结构清晰,不仅容易设计也容易阅读和理解
    • 提高软件的可靠性:因为程序错误往往出现在模块或模块之间的接口中,所以模块化使软件容易测试和调试;
    • 提高软件的可修改性
    • 有助于软件开发的组织管理:可以由不同的开发人员编写不同的模块。
  • 模块化程度与软件开发工作量的关系
    • 当模块数量增加时每个模块的规模将减小,开发单个模块的工作量确实减少了;但是,随着模块数目增加,设计模块间的接口所需要的工作量也将增加。
3. 掌握Miller法则;
  • Miller法则image-20240403155658083
  • 模块独立:是模块化,抽象,信息隐藏,局部化的直接结果。每个模块完成一个相对独立的功能,和其它模块关系简单,没有过多相互作用关系。
    • 重要性:
      • 具有独立功能的模块容易开发
      • 独立功能的模块容易测试和维护
  • 抽象:抽出事物的本质特性而不考虑他们的细节;
  • 信息隐藏:一个模块包含的信息,对不需要这些信息的模块来说,是不可访问的;
  • 局部化:把一些关系密切的软件元素物理地放得彼此接近;
4. 理解5种模块耦合形式:数据耦合、控制耦合、特征耦合、公共耦合、内容耦合;
  • 耦合:软件结构中不同模块间互联程度度量;
  • 非直接耦合:模块可以独立工作,没关系;
  • 数据耦合:模块之间通过参数交换数据信息
  • 控制耦合:通过参数交换控制信息
  • 特征耦合:给被调用模块传入整个数据结构作为参数,而只使用了数据结构的一部分数据
  • 公共耦合:通过以公共数据环境作用;
  • 内容耦合(相当紧密):访问内部数据,多个入口,非正常进入
  • 原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合,完全不用内容耦合;
5. 理解7中模块内聚形式:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚;
  • 内聚:模块内部各个元素的连接紧密程度;
  • 功能内聚:模块各个元素完成的是某个功能必不可少的部分,eg:矩阵乘法;
  • 顺序内聚:模块内各个元素同某功能密切相关,且按顺序执行,eg:修改信息,先查后改;
  • 通信内聚:模块各个部分使用相同的输入数据,产生相同的输出数据;
  • 过程内聚:模块内部处理元素相关,特定次序执行;
  • 时间内聚:模块内各个处理元素在同一时间段内完成,eg:初始化工作;
  • 逻辑内聚:模块完成功能在逻辑上相同或相似;.
  • 偶然内聚:模块内部各部分没有联系
6. 掌握模块设计的启发式规则及相关概念。
  • 启发式规则

    1. 改进软件结构提高模块独立性:初步结构分解或合并,降低耦合提高内聚;

    2. 软件规模应该适中:过大分解不充分,但分解不应降低模块独立性;过小开销大于优先操作,接口复杂;

    3. 深度、宽度、扇出和扇入应适当;

      • 深度:软件结构控制层数,标志大小和复杂程度;

      • 宽度:软件结构同一层规模数最大值,越大越复杂;

      • 扇入:多少上级模块调用该模块;

      • 扇出:一模块直接控制调用的模块数,大,复杂,小,不好。3~9;

    4. 模块作用域应在控制域内;

      • 作用域:受该模块内判定影响的所有模块集合;
      • 控制欲:模块本身及所有直接间接从属它的模块集合;
    5. 降低模块接口复杂程度;

    6. 设计单入口、单出口模块:防止内容耦合;

    7. 模块功能可预测:可预测输出结果;

标签:软件结构,模块化,总体设计,模块,内聚,耦合,第四章
From: https://www.cnblogs.com/zhouzhouhei/p/18116014

相关文章

  • Java集合框架详解:List、Set、Map及其实现类的使用与特性 第四章
    目录一、Java集合框架的选择与优化选择策略性能优化二、结论一、Java集合框架的选择与优化选择策略根据数据特性和应用需求,选择合适的Java集合类型应考虑以下几个关键因素:是否允许重复:不允许重复:如果元素必须唯一,应选择Set接口的实现类,如HashSet(无序,查找速度快)或T......
  • 第四章总结
    1、组件的定义及属性    组件是页面视图层(WXML)的基本组成单元,组件组合可以构建功能强大的页面结构。小程序框架为开发者提供了容器视图、基础内容、表单、导航、多媒体、地图、画布、开放能力等。8类(30多个)组件。    每一个组件都由一对标签组成,有开始标签和......
  • PTA数据结构第四章7-2 变身(八进制转成十进制)
    分数20作者 陈晓梅单位 广东外语外贸大学题目给出一个由18位八进制数字组成的序列,要求每六位转成一个十进制数并输出。输入格式:18位八进制数字组成的序列。输出格式:输出转换后的三个十进制数,以空格分隔,行末不能有空格。输入样例:000023452230567134输出样例:......
  • 第四章页面组件操作题
    1,使用canvas组件实现“奥运五环”的绘制。代码如下wxml:<canvascanvas-id="wuhuan"></canvas>js:Page({onLoad:function(options){constctx=wx.createCanvasContext('wuhuan');//设置五环颜色constcolors=["blue",&quo......
  • 第四章总结
    4.1组件的定义及属性        组件是页面视图层(WXML)的基本组成单元,组件组合可以构建功能强大的页面结构小程序框架为开发者提供了容器视图、基础内容、表单、导航、多媒体、地图、画布、开放能力等8类(30多个)基础组件。        每一个组件都由一对标签组成,......
  • 00342第四章 结构化程序设计 思考题和练习题(C语言)
    一、单项选择题1.若从键盘输入字符串"HOWAREYOU?",可以直接使用库函数【】。        A.scanf    B.getstr    C.gets    D.都不能直接使用2.C语言的库函数中,可以输出double型变量值的是【】。        A.getchar   ......
  • 第四章 页面组件课后习题
    二.操作题2.使用相应组件,完成"书单"页面。//.wxml<viewstyle="text-align:left">←书单</view><imagesrc="../image/shudan1.jpg"style="width:100%"></image><viewid="qian"><imagesrc="......
  • 【拯救大学牲】人民邮电出版社C语言程序设计第四章编程题答案
     注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。目录1.根据x的值,计算y。2.输入4个整数,从小到大排序。3.求解一元二次方程的实根4.输入一个整数,判断它能否被3和5整除,并输出一下信息之一:5.输入整存整取金额及存期,计算出利息(不计利息税)。利息=金额×......
  • 小程序第四章作业
    操作题1.使用canvas组件实现“五圈”的绘制。代码实现如下test.wxml代码:<canvascanvas-id="olympic-rings"style="width:800px;height:500px;"></canvas><!--引用canvas组件并设置id-->test.js设置样式:Page({onReady:function(){constctx=wx.......
  • 08天【代码随想录算法训练营34期】第四章 字符串part02(KMP)
    KMP算法解决字符串匹配问题文本串aabaabaaf模式串aabaaf问:模式串是否在文本串中出现过?1)暴力解法,ptr指向文本串index0,遍历一遍发现不匹配,ptr再移向index1,遍历……依次重复,直到ptr指向32)KMP算法,ptr指向文本串index0,遍历到f发现不匹配,由于“aa”在字符串中index3和4时也出现......