个人总结,仅供参考,欢迎加好友一起讨论
文章目录
- 系分 - 系统设计
- 考点摘要
- 系统设计
- 软件设计
- 软件架构设计
- 结构化设计
- 概要设计
- 详细设计
- 处理流程设计
- 流程
- 工作流
- 活动及其所有者
- 工作项
- 工作流管理系统
- WFMS的基本功能
- WFMS的组成WRM
- 流程设计工具
- 用户界面设计/人机界面设计
- 面向对象的设计
- 设计原则
- 设计模式
系分 - 系统设计
考点摘要
- 软件架构设计(★★★)
- 人机界面设计(★★)
- 结构化设计(★★★)
- 面向对象设计(★★★★)
系统设计
系统设计是系统分析的延伸与拓展。系统分析阶段解决“做什么”的问题,而系统设计阶段解决“怎么做”的问题。同时,它也是系统实施的基础,为系统实施工作做好铺垫。合理的系统设计方案既可以保证系统的质量,也可以提高开发效率,确保系统实施工作的顺利进行。
系统设计阶段又称为物理设计阶段,它是信息系统开发过程中一个非常重要的阶段。其任务是根据系统规格说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案,也就是设计新系统的物理模型,为下一阶段的系统实施工作奠定基础。
系统设计的主要内容包括概要设计和详细设计。概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。根据任务的不同,详细设计又可分为多种,例如,网络设计、代码设计、输入/输出设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。
软件设计
软件设计包括体系结构设计、接口设计、数据设计和过程设计。
- 结构设计,定义软件系统各主要部件之间的关系,开发一个模块化的程序结构,并表示出模块间的控制关系。
- 数据设计,将模型转换成数据结构的定义。高质量数据设计将改善程序结构和模块划分,降低过程复杂性。
- 接口设计(人机界面设计),软件内部、软件和操作系统间以及软件和人之间如何通信。
- 过程设计,系统结构部件转换成软件的过程描述。
软件架构设计
软件架构 = 软件体系结构
架构设计就是需求分配,即将满足需求的职责分配到组件上。
详细的架构设计可参考:软件架构设计
结构化设计
结构化设计(Structured Design,SD)是一种面向数据流的方法,它以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系;详细设计的主要任务是为每个模块设计实现的细节。
概要设计
概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
系统结构图(Structure Chart,SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。
人们在解决复杂问题时使用的一个很重要的原则,就是将它分解成多个小问题分别处理,在处理过程中,需要根据系统总体要求,协调各业务部门的关系。在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。
模块的四个要素:
- 输入和输出,模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
- 处理功能,指模块把输入转换成输出所做的工作。
- 内部数据,指仅供该模块本身引用的数据。
- 程序代码,指用来实现模块功能的程序。
前两个要素是模块的外部特性,即反映了模块的外貌;后两个要素是模块的内部特性。在结构化设计中,主要考虑的是模块的外部特性,其内部特性只做必要了解,具体的实现将在系统实施阶段完成。
在SD方法中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:
- 保持模块大小适中
- 尽可能减少调用的深度,宽度也不宜过高
- 扇入/扇出系数合理,多扇入少扇出,单入口单出口
- 模块的作用域应该在模块内,功能应该是可预测的
- 模块独立性原则(高内聚,低耦合)
模块的四种类型:
- 传入模块。传入模块从下属模块中获取数据,经过某些处理,再将其传送给上级模块。
- 传出模块。传出模块从上级模块中获取数据,进行某些处理,再将其传送给下属模块。
- 变换模块。变换模块也称为加工模块,它从上级模块获取数据,进行特定的处理,然后转换成其他形式,再传送回上级模块,大多数计算模块(原子模块)都属于这一类。
- 协调模块。协调模块是对所有下属模块进行协调和管理的模块。在系统的I/O部分或数据加工部分可以找到这样的模块,在一个好的SC中,协调模块应在较高层出现。
模块结构图/系统结构图:SC包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号等四个部分。
模块
在SC中,模块用矩形框表示,框中标注模块的名字,对于已定义或者已开发的模块,可以用双纵边矩形框表示。如下:
模块之间的调用关系
绘制方法是两个模块一上一下布局,以箭头相连,上面的模块是调用模块,箭头指向的模块是被调用的模块。“在线选课”模块调用“检索课程”模块,通常,箭头表示的连线可以用直线代替。如下:
模块之间的通信
模块间的通信以表示调用关系的长箭头旁边的短箭头表示,短箭头的方向和名字分别表示调用模块和被调用模块之间信息的传递方向和内容。例如,“在线选课”模块将信息“课程名、学期”传给“检索课程”模块,经加工处理后,“检索课程”模块将信息“课程号、课程名、已选修人数、教师姓名”等再回传给“在线选课”模块。
辅助控制符号
在SC中,条件调用时所依赖的判断条件和循环调用时所依赖的控制条件通常都无须注明。当模块A有条件地调用模块B时,在箭头的起点标以菱形,模块A反复调用模块C时,在调用关系的连线上增加一个环状的箭头,如下:
例题1:
例题1解析与答案:
答案:D
解析:一个模块的扇出是指该模块直接调用的下级模块的个数,扇出大表示模块的复杂度高
一个模块的扇入是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程度高
设计良好的软件结构通常顶层扇出比较大,中间扇出比较小,底层模块则有大扇入
内聚类型与耦合类型
例题2:
例题2解析与答案:
答案:C
解析:略
详细设计
在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。
根据任务的不同,详细设计又可分为多种,例如,网络设计、代码设计、输入/输出设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。
网络设计
网络设计的主要任务是,根据系统的要求选择网络结构,按照系统结构的划分,安排网络和设备的分布,然后根据物理位置考虑网络布线和设备的部署,还要根据实际业务的要求划定各网络节点的权限、级别和管理方式等,选择相应的系统软件和管理软件。
具体参考计算机网路相关章节。
代码设计
代码是用数字或字符来表示各种客观实体。在系统开发过程中,进行代码设计的主要目的是确保代码的唯一化、规范化和系统化。在进行代码设计时,首先需要考虑系统的编码问题,编码问题的关键在于分类,有了一个科学的分类方式,系统要建立编码规范就相对较为容易。
输入/输出设计
输入设计的目的是确保向系统输入的数据的完整性、正确性和一致性,其主要内容包括确定输入数据的内容、输入方式设计、输入格式设计和检验方式的设计;输出设计的目的是确保系统输出数据的完整性、正确性和一致性,其主要内容包括确定输出的内容、选择输出设备与介质,以及确定输出格式等。输入设计需要遵循以下原则:
- 输入数据最少原则。在满足需求的前提下尽量提供较少的数据输入,数据的输入量越少,出错的几率越低,花费的时间也越少。
- 简单性原则。输入过程应尽量简单,如性别、出生日期等数据设计为选择项,一方面方便用户的使用,节省输入时间,同时可以降低出错的可能性。
- 尽早验证原则。对输入数据的检验尽量接近数据的输入点,及时发现输入中存在的错误,以便能够尽早进行改正。
- 少转换原则。输入数据尽量采用原始的数据格式,避免在数据转换过程中发生错误。
系统输出一般包括中间输出和最终输出,用户关心的是系统的最终输出,最常用的最终输出方式有两种,一种是报表输出,一种是图形输出。一般来说,对于普通用户或具体数据的管理者和查阅者,应该以报表方式给出详细的数据记录;而对于企业的高层领导和宏观或综合管理部门,则应该使用图形方式给出比例或综合发展趋势的信息,可以通过曲线图、柱状图、饼状图等图形方式来呈现。
处理流程设计
处理流程设计是系统详细设计的重要组成部分,它的主要目的是确定各个系统模块的内部结构,即内部执行过程,包括局部数据组织和控制流,以及每个具体加工过程和实施细节。
具体参考下面单独章节介绍。
数据存储设计
数据存储设计主要是根据数据处理要求、处理方式、存储的信息量大小、数据使用的频率和所能提供的设备条件等,选择数据存储的方式、存储介质、数据组织方式和记录格式,并估算数据的容量。一个好的数据存储设计应该充分体现系统的业务流程,充分满足组织的各级管理要求。同时,还应该使得后续的系统开发工作方便、快捷,系统开销小,且易于管理和维护。
具体参考数据库系统相关章节。
用户界面设计
界面是系统与用户交互的最直接的层面,界面的好坏决定用户对系统的第一印象,而设计优良的界面能够引导用户自己完成相应的操作,起到向导的作用。
具体参考下面单独章节介绍。
安全性和可靠性设计
安全性和可靠性设计的目的是确保系统的安全性和可靠性,对系统的运行环境和数据处理进行有效的控制,保证系统安全、有效地运行。其主要内容包括系统运行环境安全性分析和控制,例如,对管理结构的组织、硬件和系统软件、自然环境等方面的分析与必要的监督和控制等;还包括对数据处理的控制,例如,输入内容和输入方式的控制、错误程序与异常处理等。
具体参考系统安全分析与设计和系统可靠性分析与设计的相关章节。
处理流程设计
处理流程设汁的任务是设计出系统所有模块以及它们之间的相互关系,并具体设计出每个模块内部的功能和处理过程,为开发人员提供洋细的技术资料。每个信息系统都包含了一系列核心处理流程,例如,OA系统的考勤流程、在线教育平台系统的组卷和考试流程、网上购物系统的购物和支付流程、航空订票系统的订票和退票流程等,对这些处理流程的理解和实现将直接影响系统的功能和性能。
系统处理流程对应于现实世界中的真实业务过程,通过对业务流程的设计,可以对其进行建模,以便使用信息系统来取代传统的手工处理,提高业务处理的效率和准确性,降低业务处理成本。
流程
ISO9000定义业务流程(Business Process) 为一组将输入转化为输出的相互关联或相互作用的活动。流程具有目标性、内在性、整体性、动态性、层次性和结构性等特点。一般来说,流程包括6 个基本要素,分别是输入资源、活动、活动的相互作用(结构)、输出结果、用户和价值。
工作流
根据工作流管理联盟( WorkFlow Management Coalition,WFMC) 的定义,工作流是一类能够完全或者部分自动执行的业务过程,根据一系列过程规则、文档、信息或任务,在不同的执行者之间传递和执行。
工作流管理是人与计算机共同工作的自动化协调、控制和通信,在信息化的业务过程中,通过在网络上运行相应的软件,使所有活动的执行都处于受控状态。在工作流管理下,可以对工作进行监控,并可以进行工作的指派。
活动及其所有者
活动是流程定义中的一个基本要素,一次活动可以改变流程处理数据的内容、流程的状态,并可能将流程推动到其他活动中去。活动可以由人来完成,也可以是系统自动进行处理。
活动的所有者是流程参与者(包括人或其他系统)之一,他们有权决定该活动是否结束,当活动结束时,可以将活动推动到其他活动中,可能是下一个活动,也可能是前一个活动。
活动的所有者是有权整体控制流程实例执行过程的参与者,通常活动的所有者是流程的发起人,他们对流程的各项活动都很关注,而 & 可以整体控制流程实例的执行。
工作项
工作项代表流程实例中活动的参与者将要执行的工作,工作流管理系统包括若干个工作项,一个参与者也可对应多个工作项。通常,在系统实现时,不同的工作项有不同的编号,可以通过编号来快速定位到某一工作项。
工作流管理系统
工作流管理系统(WorkFlow Management System,WFMS) 通过软件定义、创建工作流并管理其执行。它运行在-个或多个工作流引擎上,这些引擎解释对过程的定义与工作流的参与者相互作用,并根据需要调用其它IT工具或应用。
WFMS的基本功能
WFMS的基本功能体现在以下几个方面:
- 对工作流进行建模,即定义工作流,包括具体的活动和规则等,工作流对应现实世界的业务处理过程,不能改变真实业务的处理逻辑。
- 工作流执行。遵循工作流模型来创建和执行实际的工作流,即通过WFMS可以执行多个工作项执行实际的工作流。
- 业务过程的管理和分析。监控和管理执行中的业务(工作流),进度完成情况和数据所处状态、工作分配与均衡情况等。
WFMS的组成WRM
工作流参考模型(Workflow Reference Model,WRM)包含6个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、调用应用和管理监控工具。这6个模块被认为是WFMS最基本的组成部分,WRM同时也包括了这些模块之间的接口标准,包括接口一、接口二、接门三、接口四和接口五。
- 工作流执行服务,它是WFMS的核心模块,功能包括创建和管理流程定义,创建、管理和执行流程实例。
- 工作流引擎,是为流程实例提供运行环境,并解释执行流程实例的软件模块。
- 流程定义工具,是管理流程定义的工具,它可以通过图形方式把复杂的流程定义显示出来并加以操作,流程定义工具与工作流执行服务交互,一般该模块为设计人员提供图形化的用户界面。
- 客户端应用,是通过请求的方式与工作流执行服务交互的应用,客户端应用调用工作流执行服务。客户端应用与工作流执行服务交互,它是面向最终用户的界面,町以将客户端应用设计为B/S架构或C/S架构。
- 调用应用,是被工作流执行服务调用的应用,调用应用与工作流执行服务交互。
- 管理监控工具,主要指组织机构和参与者等数据的维护管理和流程执行情况的监控,管理监控工具与工作流执行服务交互。
为了降低这6个模块的耦合度,使得模块之间相互独立,可通过接口来进行连接和调用,这6个模块之间可以通过以下5个接口进行交互:
- 工作流定义交换接口(接口一 )。用于在流程定义工具与执行服务之间交换工作流定义,当工作流定义发生改变时,其处理流程将发生变化,执行服务也应该相应进行调整。
- 工作流客户端应用接口(接口二)。用于工作流客户端应用访问工作流引擎和工作列表,客户端应用是最终用户直接操作的界面,只要设计合理,可以实现多个不同的客户端应用调用同一个工作流引擎。
- 调用应用接口(接口三)。用于凋用不同的应用系统
- WMFS互操作接口(接口四)。用于不同的WMFS之间的互操作。
- 系统管理和监控接口(接口五)。用于系统管理应用访问工作流执行服务。
例题3:
例题3解析与答案:
答案:A A
解析:略
流程设计工具
在处理流程设计过程中,出现了一些用于表示处理流程的工具,这些工具包括三类,分别是图形工具、表格工具和语言工具。其中常见的图形工具包括PFD程序流程图、IPO图、N-S盒图、PAD问题分析图、判定树,表格工具包括判定表,语言工具包括过程设计语言等。
用户界面设计/人机界面设计
以上三条原则由著名用户界面设计专家Theo Mandel博士所创造,通常称之为人机交互的“黄金三原则”。另外,在设计用户界面时,还需要保证界面的合理性和独特性,有效进行组合,注重美观与协调;恰到好处地提供快捷方式,注意资源协调等。
面向对象的设计
面向对象的设计OOD是面向对象的分析OOA的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在OOD中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。由于现实世界中的事物都可以抽象出对象的集合,所以OOD方法是一种更接近现实世界、更自然的系统设计方法。
设计原则
在OOD中,可维护性的复用是以设计原则为基础的。常用的OOD中原则包括单一原则、幵闭原则、里氏替换原则、依赖倒置原则、组合/聚合复用原则、接口隔离原则和最少知识原则等。这些设计原则首先都是面向复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
- 单一职责原则,设计目的单一的类。
- 开放-封闭原则,对扩展开放,对修改封闭。即尽量在不修改原有代码的情况下进行扩展。
- 里氏替换原则,子类可以替换父类(父类可以替换成子类),程序的行为没有变化。软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别。
- 依赖倒置原则,抽象不应该依赖于细节,细节要依赖于抽象,而不是具体实现。针对接口编程,不要针对实现编程。
- 组合/聚合复用原则,又称为合成复用原则,要尽景使用组合/聚合关系,少用继承。
- 接口隔离原则,使用多个专门的接口,而不使用单一的总接口。
- 最少知识原则,也称为迪米特法则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。
例题4:
例题4解析与答案:
答案:A
解析:略
例题5:
例题5解析与答案:
答案:C
解析:generalize泛化,子用例继承父用例的行为与含义
子用例还可以增加或者覆盖父用例的行为,子用例可以出现在父用例出现的任何位置
包含include关系,表示基础用例在它内部,说明某一位置上显式的合并是另一个用例的行为
被包含用例从不孤立存在,仅作为某些包含它的更大的基础用例的一部分出现
扩展extend关系,表示基础用例在延伸用例间的一个位置上,隐式合并了另一个用例的行为
基础用例可以单独存在,但是在一定的条件下,它的行为可以被另一个用例的行为延伸
最后,call可解释成“调用”
设计模式
名词解释
架构模式
架构模式是软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。
设计模式
设计模式主要关注软件系统的设计,与具体的实现语言无关。
惯用法
惯用法是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法。
设计模式考查点:
- 设计模式三种类型的定位
- 设计模式分类
- 设计模式应用场景及特点
- 设计模式的英文表示需要熟练背过
创建型模式 | ||
---|---|---|
模式名称 | 简要描述 | 速记关键字 |
Factory Method 工厂方法模式 | 定义了创建对象的接口,它允许子类决定实例化哪个类 | 动态生产对象 |
Abstract Factory 抽象工厂模式 | 提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类 | 生产成系列对象 |
Builder 构建器模式 | 将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示 | 复杂对象构造 |
Prototype 原型模式 | 允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象,通过拷贝原型对象来创建新的对象 | 创建、克隆对象 |
Singleton 单例模式 | 确保一个类只有一个实例,并且提供了对该类的全局访问入口 | 单实例 |
结构型模式 | ||
---|---|---|
模式名称 | 简要描述 | 速记关键字 |
Adapter 适配器模式 | 将一个类的接口转换成用户希望得到的另一种接口,它使原本不相容的接口得以协同工作 | 转换接口 |
Bridge 桥接模式 | 将一个复杂的组件分成两个独立的但又相关的继承层次结构,将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化 | 继承树拆分 |
Composite 组合模式 | 创建树型层次结构来改变复杂性,同时允许结构中的每一个元素操作同一个接口,用于表示“整体-部分”的层次结构 | 树形目录结构 |
Decorator 装饰模式 | 在不修改对象外观和功能的情况下添加或者删除对象功能,即动态地给一个对象添加一些额外的职责 | 动态附加职责 |
Facade 外观模式 | 子系统中的一组接口提供了一个统一的接口 | 对外统一接口 |
Flyweight 享元模式 | 可以通过共享对象减少系统中低等级的、详细的对象数目,提供支持大量细粒度对象共享的有效方法 | 汉字编码 |
Proxy 代理模式 | 为控制对初始对象的访问提供了一个代理或者占位符对象 | 快捷方式 |
行为型模式 | ||
---|---|---|
模式名称 | 简要描述 | 速记关键字 |
Chain of Responsibility 职责链模式 | 可以在系统中建立一个链,这样消息可以在首先接收到它的级别处被处理,或者可以定位到可以处理它的对象 | 传递职责 |
Command 命令模式 | 在对象中封装了请求,这样就可以保存命令,将该命令传递给方法以及像任何其他对象一样返回该命令 | 日志记录,可撤销 |
lnterpreter 解释器模式 | 可以解释定义其语法表示的语言,还提供了用表示来解释语言中的语句的解释器 | 虚拟机的机制 |
lterator 迭代器模式 | 为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合,并与之相分离的 | 数据集 |
Mediator 中介者模式 | 通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信 | 不直接引用 |
Memento 备忘录模式 | 保持对象状态的“快照”(snapshot),这样对象可以在不向外界公开其内容的情况下返回到它的最初状态 | 游戏存档 |
Observer 观察者模式 | 为组件向相关接收方广播消息提供了灵活的方法,定义对象间的一种一对多的依赖关系 | 订阅、广播、联动 |
State 状态模式 | 允许一个对象在其内部状态改变时改变它的行为 | 状态变成类 |
Strategy 策略模式 | 定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化 | 多方案切换 |
Template Method 模板方法模式 | 提供了在不重写方法的前提下允许子类重载部分方法的方法 | 框架 |
Visitor 访问者模式 | 提供了一种方便的、可维护的方法来表示在对象结构元素上要进行的操作 | 数据与操作分离 |
另外,详细的设计模式(Java代码描述),请移步如下文章链接:
23种设计模式分析与见解 |
---|
开篇、UML、软件设计原则 https://blog.csdn.net/lili40342/article/details/128358435 |
创建型模式 https://blog.csdn.net/lili40342/article/details/128358392 |
结构型模式 https://blog.csdn.net/lili40342/article/details/128358313 |
行为型模式 https://blog.csdn.net/lili40342/article/details/128358224 |
例题6:
例题6解析与答案:
答案:A D C B
解析:略
例题7:
例题7解析与答案:
答案:A
解析:责任链模式,为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它
依据题意,就是在传递过程的中间位置,配置一个敏感词过滤的处理
例题8:
例题8解析与答案:
答案:B
解析:略