软件设计的基本原理

那么 今天会展开一个新的模块:软件设计的基本原理  其模块的主要特点是:

1.模块化

模块在程序中是数据说明可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等。

模块具有以下基本属性:

接口:指模块的输入与输出

功能:指模块要实现的功能

逻辑:描述内部如何实现要求的功能及所需数据

状态:该模块的运行环境,即模块的调用与被调用关系

模块化是解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。在划分模块时,模块的规模应当取决于它的功能和用途,同时减少接口的代价,提高模块独立性。

特性:抽象(用层次的方式构造和分析复杂系统)、信息隐蔽(只对特定或者需要的模块进行访问)、局部化

2.模块的独立性

指每个模块只完成系统要求独立的子功能,并且与其他模块的联系最少且接口简单。

衡量标准:

A.耦合性,也称块间耦合。指软件系统结构中各模块间相互联系的紧密程度的一种度量。

无直接耦合:模块间没有联系,不相互传递信息。

数据耦合:指传递简单的数据值。

标记耦合:指两个模块传递的是数据结构的地址(传址)

控制耦合:两个模块传递的是控制变量(如开关、标志)该模块通过控制变量的值有选择的执行块某一功能。

公共耦合:指通过一个公共数据环境相互作用的某些模块间的耦合,公共数据环境可以是全局变量或者数据结构共享的通信区,内存的公共覆盖区以及任何存储介质上的文件、物理设备等

内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常的入口转入到另一个模块内部;两个模块有一部分程序代码重迭;一个模块有多个入口。

内聚性,又称块内联系。指模块功能强度的度量,即一模块内各个元素彼此结合的紧密程度的度量。

偶然内聚:一个模块间没有联系

逻辑内聚:模块内执行几个逻辑相似的功能,通过参数确定该模块完成哪一个功能。

时间内聚:吧需要同时执行的模块动作组合在一起形成的模块为时间内聚模块。

过程内聚:把流程图作为工具设计程序时,流程图中的某一部分划分出组成模块,就得到过程内聚模块。

通信内聚:模块内所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者是产生相同的输出数据。

顺序内聚:一个模块内的处理元素和同一个功能密切相关,这些处理必须顺序执行,通常一个处理元素的输出数据作为另一个处理单元的输入数据。

功能内聚:模块内所有元素共同完成一个功能,缺一不可。因为它的功能是单一的明确的,因此与其他模块的耦合是最弱的。

面向数据流的设计方法:

因为是新开的一个模块 所以主要是理解其主要的关键词的含义和概念。

原文地址:https://www.cnblogs.com/bibabo/p/9392510.html

时间: 2024-10-17 14:01:48

软件设计的基本原理的相关文章

软件设计的哲学:第四章 深度封装模块

目录 4.1 模块化设计 4.2什么是接口? 4.3 抽象 4.4 深度模块 4.5浅模块 4.6 类拆分 4.7示例:Java和Unix I/O 4.8 结论 管理软件复杂性最重要的技术之一是系统设计,这样开发人员在任何时候都只需要面对总体复杂性的一小部分.这种方法称为模块化设计,本章介绍其基本原理. 4.1 模块化设计 在模块化设计中,软件系统被分解成一系列相对独立的模块.模块可以采用多种形式,例如类.子系统或服务.在理想的情况下,每个模块都完全独立于其他模块:开发人员可以在任何模块中工作,

软件设计与实现总结

本周学习了<软件设计与实现>的章节,了解了一些常用的分析和设计方法和开发阶段的一些管理方法: 1.分析和设计方法: 写软件就是为了解决用户的需求,所以我们首先了解用户需求即需求分析. 方法:(1)以文字为主的文档(2)以图形为主的构造模型(3)数学语言(4)类+代码(5)源代码+注释 2.从Spec到实现 (1)估计开发任务所需时间(2)分析需求(3)生成设计文档(4)和同事审核文档(5)编写代码(6)代码复审,代码重构 3.开发人员的标准工作流程(附图片) BTV测试又称冒烟测试 4.开发阶

软件设计

软件设计 一定是创建订单的时候填充market字段,我曾经一度打算在回调的时候再根据回调方来填充Market,但是如果没有回调呢?Market这样的标志性字段一定要依赖于靠谱的操作: 对于重载方法要注意,尤其套调用的重载方法,对于某些核心校验必须要放置在里层方法调用,否则因为重载都是public出去的,都可以被外界调用,如果在外层方法实现校验,里层重载方法被外界直接调用,校验会被跳过:考虑CheckMarket是放在CreateOrder(String encryptedString)还是Cre

软件设计原则和方法通俗理解

网上有很多关于软件设计原则的说法,很精确,很官方,但是对于有些初学者来说可能是不知所云,到最后把自己给郁闷到了,学习软件应该是一件愉快的事情. 那么软件设计原则有哪些呢? (1)可靠性 做出一个可靠的软件,跟女人找一个可靠的男人一样,女人找男人,需要男人品质好,人品好,靠谱,可信赖,可依靠,身材高大,等等.软件设计也是一样,在软件的设计阶段就要非常注意软件的可靠性,不要等到最后用的时候发现软件这里不行那里不行,或者说在使用软件过程中一旦发现问题还是可以恢复使用,不能直接崩溃. (2)健壮性 这个

《新浪微博自动评论软件&#183;设计与实现之UI篇》

任务:编写用户界面 使用Python中的wxPython对界面进行编写工作 预计的按钮有:登录,评论,退出 预计的输入框有:cookie.评论内容.搜索关键字 预计的单选框有:是否使用关键字搜索 首先,看看我们需要的控件都有哪些,按钮(Button).单选按钮(RadioButton).静态文本(StaticText).可编辑文本(TextCtrl),到WxPythonInAction查看对应的文档,要注意到的是,wxPython和之前玩的MFC不一样,不是先设计界面,再编写代码,而是所有控件的

图书管理系统------软件设计图纸

图书管理系统------软件设计图纸 一.图书馆管理系统总体功能概述 图书馆管理系统功能图: 1.系统登录模块 : 本模块的功能点包括: (1) 判断用户名和密码是否相符: (2) 根据用户的权限类型,登录到系统的制定界面操作使用. 2.图书管理模块: 在本模块中图书馆工作人员可以对图书进行管理操作. 本模块的功能点包括: (1) 新书入库,将新进图书按其类型将图书的基本信息录入系统数据库: (2) 图书出库,某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图

主流MVC框架的设计模式及遵守的软件设计原则

原文地址,会不断更新  http://it.zuocheng.net/mvc-design-pattern-design-principle-summary   作程的技术博客 本文以主流的MVC框架为例,比如Java 的SSH.PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式:鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则.作此文,一为学习,二为总结.其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善. 框架模式

第五届蓝桥杯全国软件设计大赛--2013年校内选拔赛Java题目

第五届蓝桥杯全国软件设计大赛 2013年校内选拔赛Java题目 一.考生注意: (1)[结果填空题]要求参赛选手根据题目描述直接填写结果.求解方式不限.不要求源代码. 把答案存入[考生文件夹]下对应题号的文件中即可. (2)[代码填空题]要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确.完整.所填写的代码不超过一条语句(即中间不能出现分号). 把填空的答案(仅填空处的答案,不包括题面已存在的代码)存入[考生文件夹]下对应题号的文件中中即可. (3)[编程题]要求选手设计

C#使用设计模式和软件设计原则构建应用程序 PartIII

依赖注入 这个原则的要点是什么.为什么你不能对类的实例进行再次硬编码?当我们编码,测试的时候,让我们关注一件很重要的事情.希望你知道单元测试并知道它的重要性.也许在你做任何编码之前你都应该首先设计你的测试,因此你应该很熟悉测试驱动开发.为了定义新功能你应该去写测试,你应该尝试去实现并开始编码直到测试通过.让我们先看看之前的文章的代码. public class DateBasedTaxFactory:ITaxFactory { Customer _customer; ITaxFactory _t