背诵——系统设计

系统设计

概要设计

概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务。

详细设计

为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。根据任务的不同,详细设计又可分为多种,例如,网络设计、代码设计、输入输出设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。

用户界面设计

  • 置于用户控制之下。
  • 减轻用户的记忆负担。
  • 保持界面一致性。

处理流程设计概述

处理流程设计的任务是设计出系统所有模块以及它们之间的相互关系,并具体设计出每个模块内部的功能和处理过程,为开发人员提供详细的技术资料。

流程设计概述

流程具有目标性、内在性、整体性、动态性、层次性和结构性等特点。一般来说,流程包括 6 个基本要素,分别是输入资源、活动、活动的相互作用(结构)、输出结果、用户和价值。

工作流管理系统

WFMS 基本功能包括对工作流建模(定义活动和规则,对应现实业务处理过程)、工作流执行(创建和执行实际工作流)、业务过程管理和分析(监控管理执行中的业务情况)。
工作流参考模型(WRM ) 包含 6 个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、调用应用和管理监控工具。
工作流参考模型(WRM ) 为工作流管理系统(WFMS)关键模块提供了功能描述,并描述了关键模块之间的交互,而且这个描述是独立于特定产品或技术的实现的。

流程设计工具

图形工具、表格工具和语言工具。

面向对象设计

面向对象设计(面向对象设计)是面向对象分析(OOA) 方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在面向对象设计 中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。

设计类分类

在系统设计过程中,类可以分为三种类型:实体类、边界类和控制类。
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如, 在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。
实体类是对用户来说最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,在用例模型向领域模型的转化中,一个参与者一般对应于实体类。通常可以从软件需求规格说明书(SRS)中的那些与数据库表(需要持久存储)对应的名词着手来找寻实体类。通常情况下,实体类一定有属性,但不一定有操作。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词” 或 “名 词+动词”)转化来的名词,例如,用例 “身份验证”可以对应于一个控制类“身份验证器”,它提供了与身份验证相关的所有操作。控制类用于对一个或几个用例所特有的控制行为进行建模,控制对象(控制类的实例)通常控制其他对象,因此它们的行为具有协调性。
控制类将用例的特有行为进行封装,控制对象的行为与特定用例的实现密切相关,系统执行用例的时候,就产生了一个控制对象,控制对象经常在其对应的用例执行完毕后消亡。通常情况下,控制类没有属性,但一定有方法。
边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交界处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。要寻找和定义边界类,可以检查用例模型,每个参与者和用例交互至少要有一个边界类,边界类使参与者能与系统交互。边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。常见的边界类有窗口、通信协议、打印机接口、传感器和终端等。实际上,在系统设计时,产生的报表都可以作为边界类来处理。边界类用于系统接口与系统外部进行交互,边界对象将系统与其外部环境的变更(例如,与其他系统的接口的变更、用户需求的变更等)分隔开,使这些变更不会对系统的其他部分造成影响。通常情况下,边界类可以既有属性也有方法。

面向对象设计原则

常用的面向对象设计原则包括单一职责原则(S)、开闭原则、里氏替换原则、依赖倒置原则、组合/聚合复用原则、接口隔离原则和最少知识原则等。

  • 单一职责原则
    单一职责原则指一个类应该仅有一个引起它变化的原因。

  • 开闭原则
    开闭原则是指软件实体应对扩展开放,而对修改关闭,即尽量在不修改原有代码的情况下进行扩展。

  • 里氏替换原则
    里氏替换原则由 Barbara Liskov 提出,其基本思想是,一个软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别,即把基类都替换成它的子类,程序的行为没有变化。

  • 依赖倒置原则
    依赖倒置原则是指抽象不应该依赖于细节,细节应当依赖于抽象。
    实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计 的目标的话,那么依赖倒置原则就是面向对象设计的主要机制。

  • 组合/聚合复用原则
    组合/聚合复用原则又称为合成复用原则,是在一个新的对象中通过组合关系或聚合关系来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简单地说,就是要尽量使用组合/聚合关系,少用继承。
    通过继承来进行复用的主要问题在于继承复用会破坏系统的封装性,因为继承会将基类的实现细节暴露给子类,由于基类的内部细节通常对子类来说是透明的,所以这种复用是透明的复用,又称为白盒复用。
    由于组合或聚合关系可以将已有的对象(也可称为成员对象)纳入新对象中,使之成为新对象的一部分,新对象可以调用已有对象的功能,这样做可以使得成员对象的内部实现细节对于新对象是不可见的,因此,这种复用又称为黑盒复用。

  • 接口隔离原则
    接口隔离原则是指使用多个专门的接口 , 而不使用单一的总接口。每个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。

  • 最少知识原则
    最少知识原则也称为迪米特法则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少地影响其他的模块,扩展会相对容易。这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。

结构化设计

结构化设计(Structured Design , 以下简称 SD) 是一种面向数据流的方法,它以 SRS 代表的软件需求规格说明(Software Requirements Specification),SA 代表的系统分析(System Analysis)阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD 方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系。详细设计的主要任务是为每个模块设计实现的细节。

模块结构

  • 模块的大小要适中。
  • 模块的扇入和扇出要合理。
  • 深度和宽度适当。
  • 信息隐蔽。

耦合内聚

耦合表示模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非耦合则表示模块之间无任何联系,是完全独立的。
内聚表示模块内部各成分之间的联系程度,是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做目标单一的一件事情。
一般说来,系统中各模块的内聚越高,则模块间的耦合就越低,但这种关系并不是绝对的。耦合低使得模块间尽可能相对独立,从而各模块可以单独开发和维护;内聚高使得模块的可理解性和维护性极大增强。因此,在模块的分解中应尽量减少模块的耦合,力求增加模块的内聚,遵循 “高内聚、低耦合”的设计原则。

设计模式

一方面可以降低分析、设计和实现的难度,另一方面可以使系统具有更好的可复用性和灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒人w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值