软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2

本系列文章为笔记,内容根据北京大学《软件工程》MOOC

初始化模块结构图精化的启发式规则

常见的启发式规则

  • 什么叫做“启发式”
    • 根据设计准则,从长期的软件开发实践中,总结出来的规则
    • 既不是设计目标,也不是设计时应该普遍遵循的原理
  • 常见的六种启发式规则
    • 改进软件结构,提高模块独立性
      • 通过模块的分解和合并,力求降低耦合,提高内聚
    • 模块规模适中-每页60行语句
      • 最好控制在一页纸内
      • 分解过大的模块
    • 深度、宽度、扇入和扇出适中
      • 扇入:表示有多少个上级模块直接调用它
      • 扇出:一个模块控制的下级模块的数量
      • 好的系统:顶层扇出高,中层扇出少,底层扇入高,系统呈“葫芦”型

81d49ebac68ca24d28cb04aa42695974.png
  • 模块的作用域力争在控制域之内
    • 作用域:受该模块内一个判定影响的所有模块的集合
    • 控制域:模块本身+所有直接或者间接从属于它的模块的集合

615183c7183d53b8e96b8662332df630.png
  • 降低模块接口的复杂性
    • 使得信息传递简单并且和模块的功能一致
    • 接口复杂或不一致容易增加耦合
  • 模块功能应该可以预测
    • 相同的输入有相同的输出

7d45694188fefb145f9bd27428f0c73b.png
  • 示例

ca0ef418c90ff74c1d049c1faf6fd541.png

输入部分的精化

92929433f43f92b2bd577358315d925f.png


sps:转速的每秒信号量
rpm:每分钟转速
mph:每小时英里数
gph:每小时燃烧的燃料数 输出部分的精化

9a7fe7160d812b1b9418ed57110ecf8b.png

变换部分的精化
对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构


接口设计

分类

  • 模块间的接口设计(内部接口)
  • 软件与其他软硬件系统之间的接口设计(外部接口)
  • 软件与用户之间的交互设计

系统的接口设计是由穿过系统边界的数据流定义的
在最终的系统中,数据流将成为用户界面中的表单、报表或与其它系统进行交互的文件或通信 人机交互界面
在设计阶段,必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必须的实际显示和输入
用户界面应具备的特性

  • 可使用性:是用户界面设计最重要的目标。包括使用简单、界面一致、充分提示、快速响应、低运行成本、健壮性等
  • 灵活性:考虑到用户特点。应该使用户接口满足不同用户的要求。对不同的用户,应有不同的界面形式,但不同的界面不应该影响功能
  • 可靠性:用户界面的可靠性是指无故障使用的间隔时间。用户界面应能保证用户正确、可靠地使用系统,保证程序和数据的安全性

界面设计类型

  • 外行型
  • 初学型:需要很多界面支持
  • 熟练型:需要较少的界面支持,但不能处理意外错误
  • 专家型:需要为他们提供能够修改和扩充系统能力的复杂界面

选用界面形式(表格,图形,菜单,对话,窗口等)的时候,应该考虑每种类型的优点和限制,可以从以下方面考察

  • 使用的难易度
  • 学习的难易度
  • 操作速度
  • 复杂程度
  • 控制:人机交互时,由计算机还是由人发起和控制接口
  • 开发的难易程度:该界面设计是否有难度,工作量多大

一个界面的设计通常使用一种以上的设计类型,每种类型与一个或一组任务相匹配
设计原则

  • 一致性
  • 操作步骤少
  • 不要“哑播放”
  • 提供Undo功能
  • 减少用户记忆负担
  • 提高学习效率

数据设计


在设计阶段必须对要存储的数据及其格式进行设计 文件设计
适合选择文件存储的情况:

  • 数据量较大的非结构化数据(多媒体)
  • 数据量大,信息松散(历史记录、档案)
  • 非关系层次化数据(系统配置文件)
  • 对数据的存取速度要求极高的情况
  • 临时存放的数据

文件设计的主要工作就是根据使用要求、处理方式、存储的信息量、数据的活动性以及所提供的设备条件等确定文件类型,选择文件媒体,决定文件组织方法,设计文件记录格式,并估算文件的容量 数据库设计
在结构化设计中,很容易将结构化分析阶段建立的数据字典和 实体-关系 模型映射到关系数据库中

  • 数据对象的映射
  • 关系的映射

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java四种权限的高低_Java(四种权限修饰符)

/*Java中有四种权限修饰符:public > protected > (default) > private同一个类(我自己) YES YES YES YES同一个包(我邻居) YES YES YES NO不同包子类(我儿子) YES YES NO NO不同包非子类(陌生人) YES NO NO NO注意事项:(default)并不是关键字“…

安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证

漏洞简介Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行)。受影响的版本:Apache Solr6.6.0 -6.6.5Apache Solr7.0.0 -7.7.3Apache Solr8.0.0 -8.6.2安全专家建议用户尽快升级到安全…

php session页面传值,PHP session在页面间传递的问题

PHP session在页面间传递的问题:前提: 使用codeIgniter的框架, 使用PHP自带的session1. 在纯apache服务器上没有问题2. 在Nginx的apache模式下, 独立于codeIgniter框架外的页面无问题3. 在Nginx的apache模式下, 置于codeIgniter框架内的页面, 页面间session的传递有问题, 即一个…

html5怎么改为vue_Vue实战——编程式导航打开新窗口,登录状态本地存储

近日来,我陆续的分享了vue相关的系列文章,以新闻列表项目为载体,实战的方式介绍了vue及其周边的技术。本文承接前文,不断通过项目迭代的方式继续分享vue相关的知识。目前Vue实战系列文章已形成了目录,各位感兴趣的朋友…

python转cpp_python转c工具

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! compute.proto # python_out目录指定 xxxx_pb2.py的输出路径,我们指定为. 当前路径# grpc_pytho…

80端口为什么要备案_搞网站的你,不了解一下共享虚拟主机和备案问题

正文共:1474字 14图,预估阅读时间:4 分钟今天分享的这一切要从域名备案说起。先科普一下,平时我们访问网站都是用域名访问的,通过DNS服务器将域名解析为IP地址(你知道上网时输入的URL是怎么解析成IP地址的吗&#xff1…

jqprint获取打印页数_高年级应用题40道,假期快给孩子打印练习吧!(含答案)...

1.王爷爷家养的4头奶牛每个星期产奶896千克,平均1头奶牛每天产多少奶呢?2.4辆汽车3次运水泥960袋,平均每辆汽车每次运水泥多少袋?3.水波小学每间教室有3个窗户,每个窗户安装12块玻璃,9间教室一共安装多少块…

cstring移除指定字符串_从String中移除空白字符的多种方式!?差别竟然这么大!...

作者 | Hollis来源 | Hollis字符串,是Java中最常用的一个数据类型了。我们在日常开发时候会经常使用字符串做很多的操作。比如字符串的拼接、截断、替换等。这一篇文章,我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中的空格…

matlab 遗传优化算法_转载 | 遗传算法解决TSP问题的MATLAB实现

问题定义:巡回旅行商问题给定一组n个城市和俩俩之间的直达距离,寻找一条闭合的旅程,使得每个城市刚好经过一次且总的旅行距离最短。TSP问题也称为货郎担问题,是一个古老的问题。最早可以追溯到1759年Euler提出的骑士旅行的问题。1…

php 如何配置 redis,php 如何设置redis

php设置redis的方法:首先安装redis服务及PHP redis驱动;然后打开php.ini文件;接着增加内容为“extensionredis.so”;最后重启php-fpm或apache即可。PHP 设置使用 Redis安装开始在 PHP 中使用 Redis 前, 我们需要确保已…

java数组有跨类建立对象_Java性能优化的45个细节(珍藏版)

点击上面 蓝色字体关注我们技术 / 架构 / 职场 / 面试 关注即送:4000G 架构师视频来源:http://t.cn/EiP42VF在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地…

java 数据纠错,纠错码简介

纠错码是个什么东西引出网络中的通信基于TCP和UDP两个通信协议, 这大家都知道的, 什么TCP的三次握手等等, 面试经常被问到. 三次握手是为了保证连接的正确建立. 但是, 在通信的时候, 你如何保证你的消息正确送达了呢? 有人说了, 有收到请求的响应包. 但我说的不是这个,比如说,…

dataframe修改数据_数据处理进阶pandas入门(一)

前言NumPy作为数据处理的利器,在对数据进行科学计算、存储处理大型矩阵等方面为我们带来了极大的方便,但对于更进一步的数据分析任务,文件操作等方面显得有些吃力。于是,作为NumPy的进阶库pandas应运而生,在实际应用中…

java6个人抽奖抽三个人,基于Java的抽奖逻辑

小组在做一个抽奖系统,现在给我分配到了抽奖逻辑这方面的实现。EMMM,拿到分配的时候是懵B的。老大给的需求图给的关键表结构DROP TABLE IF EXISTS dd_annual_meeting_check;CREATE TABLE dd_annual_meeting_check (check_id int(255) NOT NULL AUTO_INCR…

python自动化教程_Python 任务自动化工具 tox 教程

1、tox 能做什么? 细分的用途包括: 创建开发环境 运行静态代码分析与测试工具 自动化构建包 针对 tox 构建的软件包运行测试 检查软件包是否能在不同的 Python 版本/解释器中顺利安装 统一持续集成(CI)和基于命令行的测试 创建和部…

php 添加inotify扩展,php inotify 扩展的安装

一、安装1) 从内核和目录里面查看是否支持inotify[rootnfs01 ~]# uname -r2.6.32-573.el6.x86_64[rootnfs01 ~]#** ls -l /proc/sys/fs/inotify/** -→主要查看下面有没有三个目录总用量 0-rw-r--r-- 1 root root 0 1月 21 13:03 max_queued_events-rw-r--r-- 1 root root…

简述python执行原理_Python程序的执行原理(1)(2)

Python程序的执行原理(1)(2) 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。 2. 字节码 字节码在Python虚拟机程序…

python文本特征选择,机器学习--特征选择(Python实现)

特征选择就是从原始特征中选取一些最有效的特征来降低维度,,提高模型泛化能力减低过拟合的过程,主要目的是剔除掉无关特征和冗余特征,选出最优特征子集;常见的特征选择方法可以分为3类:过滤式(filter)、包裹式(wrapper…

用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

python接口自动化一(设计一款自己的接口自动化框架) 一、起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest。当接口数量不怎么多时还好,但是当接口的量上去了,一切…

系统新模块增加需要哪些步骤_防锈高效型干式地暖模块解决了装修施工配合的哪些难点?...

通过前面的讲解,我们知道铝板干式地暖末端应用于地暖、辐射冷暖等系统的技术优势非常明显,即省层高、省费用、效果好、空调舒适、业主使用满意度高等,随着水泥黄沙的大幅涨价,其成本优势也突显出来,越来越多的暖通公司…