4-软件设计

软件设计基本概念

软件设计:根据所表示的信息与的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计。(整个开发过程的核心部分

软件设计的任务:

  • 确定软件的体系结构,划分子模块
    • 划分子系统,以及之间的关系
  • 确定软件的数据结构
    • 确定数据的类型,组织,存取方式,相关程度及处理方式
  • 设计用户界面

软件设计的过程:

  1. 体系结构设计,说明系统有哪些子系统,以及他们之间的关系
  2. 抽象说明书,编写每个子系统服务以及受到约束的抽象说明书
  3. 接口设计,设计每个子系统与其他子系统通信的接口
  4. 软件设计,子系统提供的服务分解到构件中,为每个构件设计接口
  5. 数据结构设计
  6. 算法设计

软件设计的目标:高效率 高可靠性 高可维护性 高可理解性

衡量软件设计目标的准则:

  • 软件实体有明显的层次结构,利于软件元素间控制;
  • 软件实体应该是模块化的,模块具有独立功能;
  • 软件实体与环境的界面清晰;
  • 设计规格说明清晰简洁、完整、和无二义性。

模块分解(子系统)

模块分解的目的:将系统“分而治之”,以降低问题的复杂性使软件结构清晰便于阅读和理解,易于测试和调试,因而也有助于提高软件的可靠性。

模块关系

层次结构和网状结构

衡量模块层次结构的指标

  • 深度:表示软件结构中从顶层模块到底层模块的层数。
  • 宽度:表示控制的总分布。
  • 扇出数:一个模块直接控制的下属模块的个数。
  • 扇入数:一个模块的直接上属模块个数。

模块的独立性

模块独立性:软件的模块只涉及到软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。

独立性的标准:

内聚性:用来表示一个模块内部各种数据和各种处理之间联系的紧密程度。

  • 巧合(偶然)内聚:将无关系的成分放到一个模块中
  • 逻辑内聚:逻辑上相似的功能放到一个模块中
  • 时间内聚:功能执行和时间有关系
  • 过程内聚:流程图中某一部分画出组模块
  • 通信内聚:相同的输入数据产生相同的输出数据
  • 信息内聚:多个功能在同一数据结构上操作
  • 顺序内聚:模块中某个成分的输出是另一成分的输入。
  • 功能内聚:包括且仅包括完成某一具体功能所必须的所有成分。

耦合性:模块间相互联系的紧密程度。

  • 内容耦合:一个模块直接访问另一个模块的内部数据。
  • 公共耦合:同访问公共的数据环境。
  • 控制耦合:一个模块传递给另一个模块的信息是控制该模块的内部逻辑的信号。复合耦合:一个模块给另一个模块的参数是复合的数据结构。
  • 数据耦合:一个模块给另一个模块的参数是单个数据项和单个数据项组成的数组。

信息隐蔽:每个模块的实现细节对于其他模块来说是隐蔽的,模块中所包含的信息(数据和过程),不允许其他不需要这些信息的模块使用。

详细设计

详细设计阶段的任务:是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。

常用的描述工具有,传统的流程图、结构化流程图(N-S图)、问题分析图(PAD图)、PDL语言等

面向数据流的设计方法:变换流和事务流

任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树)

面向对象设计

OOD是OO的核心,OO方法使用喷泉模型。

面向对象设计准则:抽象 信息隐蔽 弱耦合 强内聚 可重用

面向对象设计的基本任务:

  • 系统设计
    • 将分析模型中紧密相关的类划分为若干子系统,子系统应该具有良好的接口,子系统种的类相互协作
    • 标识问题的并发性,将各个子系统分配给处理器,建立子系统之间的通信
    • 大多数系统OOD逻辑为,问题域子系统、人机交互子系统、任务管理子系统和数据管理子系统四个部分
  • 对象设计
    • 对每个类的属性和操作进行详细设计,包括属性和操作的数据结构、实现算法以及类之间的关联。
    • 在进行对象设计的同时还要进行消息设计,即设计类与其写作者之间的消息规约
  • 设计优化:主要涉及提高效率的技术和建立良好的继承结构的方法。

用户界面设计的任务:

  • 用户特性分析-建立用户模型;
  • 用户界面的任务分析-建立任务模型(DFD)图;
  • 确定用户界面类型。

MVC设计模式

MVC是模型-视图-控制器。 是一种非常有效的支持信息多种表示的方法,用户可以用最适合的方式与每种信息表示交互,这里提到的信息被封装在模型(Mode)对象当中,每个模型对象都可以拥有一系列不同的视图(View)对象,每个视图对象相联系的是不同的模型表示。表示每个视图对象拥有一个控制(Controller)对象来处理用户的输入和设备的交互。

模型:封装问题的核心数据逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。

视图:把模型数据及逻辑关系和状态的信息及特定形式展示给用户。

控制器:处理软件与用户的交互操作,用来协调模型和视图的关系。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值