软考-系统分析师-系统设计模块
2024-12-20 14:27:36 0 举报
AI智能生成
软考-系统分析师-系统设计模块
作者其他创作
大纲/内容
系统设计概述
系统设计阶段又称为物理设计阶段,其任务是根据系统规格说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案也就是设计新系统的物理模型,为下一阶段的系统实施工作奠定基础。
系统设计的目标是根据系统分析的结果,完成系统的构建过程其主要目的是绘制系统的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新系统的详细设计方案和相关模型,指导系统实施工作的顺利开展。
系统设计的主要内容
概要设计
概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图
详细设计
在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计
根据任务的不同,详细设计又可分为多种
1、网络设计
2、代码设计
3、输入输出设计。
输入设计需要遵循原则
输入数据最少原则。
简单性原则。
尽早验证原则。
4、处理流程设计
5、数据存储设计
6、用户界面设计
良好的用户界面设计需要遵
循原则
循原则
置于用户控制之下
减轻用户的记忆负担。
保持界面一致性。
7、安全性和可靠性设计
...
处理流程设计
概念
处理流程设计的任务是设计出系统所有模块以及它们之间的相互关系,并具体设计出每个模块内部的功能和处理过程,为开发人员提供详细的技术资料。
ISO 9000定义业务流程(Business Process)为一组将输入转化为输出的相互关联或相互作用的活动。
流程包括6个基本要素
输入资源
活动
活动的相互作用(结构)
输出结果
用户
价值
处理流程设计属于详细设计
工作流管理系统
工作流管理系统(WorkFlow Management System,WFMS)通过软件定义、创建工作流并管理其执行。它运行在一个或多个工作流引擎上,这些引擎解释对过程的定义与工作流的参与者相互作用,并根据需要调用其他IT工具或应用。
WFMS将业务流程中工作如何组织与协调的规则抽象出来,在WFMS的协助下,开发人员遵从一定的编程接口和约定,就可以开发出更具灵活性的事务处理系统,用户无需重新开发即可更改工作流程,以适应业务的变更。
WFMS的基本功能体现在以下几个方面
(1)对工作流进行建模。即定义工作流,包括具体的活动和规则等。
(2)工作流执行。遵循工作流模型来创建和执行实际的工作流即通过WFMS可以执行多个工作项。
(3)业务过程的管理和分析。监控和管理执行中的业务(工作流),例如,进度完成情况和数据所处状态、工作分配与均衡情况等。
工作流参考模型(Workflow Reference Model,WRM)包含6个基本模块
工作流执行服务
工作流执行服务是WFMS的核心模块,它的功能包括创建和管理流程定义,创建、管理和执行流程实例。
工作流引擎
工作流引擎是为流程实例提供运行环境,并解释执行流程实例的软件模块,即负责流程处理的软件模块。
流程定义工具
流程定义工具是管理流程定义的工具,它可以通过图形方式把复杂的流程定义显示出来并加以操作,流程定义工具与工作流执行服务交互,一般该模块为设计人员提供图形化的用户界面。
客户端应用
客户端应用是通过请求的方式与工作流执行服务交互的应用,也就是说,是客户端应用调用工作流执行服务。
调用应用
调用应用是被工作流执行服务调用的应用,调用应用与工作流执行服务交互。
管理监控工具
管理监控工具主要指组织机构和参与者等数据的维护管理和流程执行情况的监控,管理监控工具与工作流执行服务交互。
子主题
表示处理流程的工具
图形工具
程序流程图
IPO图
盒图
问题分析图
判定树
表格工具
判定表
语言工具
过程设计语言
程序流程图
程序流程图(Program FlowDiagram,PFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。
5种基本控制结构
顺序型
选择型
WHILE循环型(当型循环)
UNTIL循环型(直到型循环)
多分支选择型
子主题
IPO图
IPO图是由IBM公司发起并逐步完善的一种流程描述工具。系统分析阶段产生的数据流图经转换和优化后形成的系统模块结构图的过程中将产生大量的模块,分析与设计人员应为每个模块写一份说明,即可用IPO图来对每个模块进行表述
IPO图用来描述每个模块的输入、输出和数据加工
子主题
盒图
盒图(N-S图)在N-S图中也包括五种控制结构,分别是顺序型、选择型、WHILE循环型(当型循环)、UNTIL循环型(直到型循环)和多分支选择型任何一个N-S图都是这五种基本控制结构相互组合与嵌套的结果,很容易表示层次关系,有结构化的特点。N-S图避免了流程图在描述程序逻辑时的随意性与灵活性。
子主题
问题分析图
问题分析图(Problem Analysis Diagram,PAD)包含五种基本控制结构,并允许递归使用。
子主题
过程设计语言
过程设计语言(Process DesignLanguage,PDL)也称为结构化语言或伪代码(pseudo code),它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程怎么做,类似于编程语言。
子主题
判定表
对于具有多个互相联系的条件和可能产生多种结果的问题,用结构化语言描述则显得不够直观和紧凑,这时可以用以清、简明为特征的判定表(decision table)来描述。
子主题
判定树
判定树(decision tree)也是用来表示逻辑判断问题的一种常用的图形工具,它用树来表达不同条件下的不同处理流程,比语言、表格的方式更为直观。判定树的左侧(称为树根)为加工名,中间是各种条件,所有的行动都列于最右侧。
子主题
结构化设计
概念
结构化设计(Structured Design,SD)是一种面向数据流的方法,它以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。
SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段
概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系
结构化设计的概要设计就是把数据流图转换为系统结构图
详细设计的主要任务是为每个模块设计实现的细节。
详细设计用的工具就是处理流程的工具
结构化设计根据模块独立性原则和系统结构准则,将DFD转换为系统结构图(也称为模块结构图或控制结构图),用系统结构图来建立系统的物理模型,描述系统分层次的模块结构,以及模块之间的通信与控制关系。
子主题
子主题
模块结构
在SD中,功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。
模块具有四要素
输入和输出
处理功能
内部数据
程序代码
模块具有特征
1.信息隐蔽与抽象
2.模块化。在SD方法中,模块是实现功能的基本单位,它一般具有功能、逻辑和状态三个基本属性,其中功能是指该模块“做什么”逻辑是描述模块内部“怎么做”,状态是该模块使用时的环境和条件。在SD方法中,系统由多个逻辑上相对独立的块组成。
模块划分时需要遵循原则
(1)模块的大小要适中。
(2)模块的扇入和扇出要合理。
(3)深度和宽度适当。
耦合
耦合表示模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非耦合则表示模块之间无任何联系,是完全独立的。
耦合类别
无直接耦台
指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何消息。
eg:把一推不相关的代码都组合在一个类里
数据耦合
指两个模块之间有调用关系,传递的是简单的数据值。
eg: 高级语言中的值传递
标记耦合
指两个模块之间传递的是数据结构
eg:高级语言中的复合结构的引用传递、地址传递
控制耦合
指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。因此,被调用模块应具有多个功能,哪个功能起作用受调用模块控制。
外部耦合
模块间通过软件之外的环境联结(如I/0将模块耦合到特定的设备、格式、通信协议上)时称为外部耦合。
eg:某一模块把用户信息放到redis后另外一些模块需要从redis中取用户,那么它们之间就形成了外部耦合。
公共耦合
一组模块通过一个公共数据环境相互作用。例如访问同一个全局数据结构,可以是共享的通信区、内存的公共覆盖区、远程的公共存储区等。
eg: 多线程都可能会访问同一个全局变量。当然这时候需要考虑线程安全问题
内容耦合
当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时
eg:Java中不通过方法操作另一个类的成员变量,而是直接访问,例如People.foot直接访问。
子主题
内聚
内聚表示模块内部各成分之间的联系程度,是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做目标单一的一件事情。
偶然内聚
指一个模块内的各处理元素之间没有任何联系
eg:把一推不相关的代码都组合在一个类里
逻辑内聚
指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能
eg: 完成加法运算,有多个加法运算代码块,分别处理参数为int或float或double等。这些代码块之所以聚在一起,只是它们都是为了完成加法运算而已
瞬时内聚
指把需要同时执行的动作组合在一起形成的模块。
eg: 比如分布式事务的原子性,A给B转账,A-10和B+10必须同时执行不容分割。
过程内聚
指一个模块完成多个任务,这些任务必须按指定的过程执行
eg: 利用原生JDBC操纵数据库。你需要先连接JDBC获得connection对象,然后才能创建Statement对象:最后才能执行sql语句
通信内聚
指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据
eg: 比如A、B、C三个函数,都会对同个全局变量来进行操作和更新。
顺序内聚
指一个模块中的各个处理元素都密切相关于同一功能且必须顺序(串行)执行,前一功能元素的输出就是下一功能元素的输入
eg:程序模拟车间生产的某条流水线,类似于数据流风格。
功能内聚
指模块内的所有元素共同作用完成一个功能,缺一不可
eg: 某排序算法的代码,不能缺少任意行代码,否则整个排序功能失效
子主题
系统结构图
面向对象设计
概述
面向对象的设计是面向对象分析方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。
在面向对象的设计中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。由于现实世界中的事物都可以抽象出对象的集合,所以面向对象的设计方法是一种更接近现实世界、更自然的系统设计方法。
设计软件类
类封装了信息和行为,是面向对象的重要组成部分,它是具有相同属性、方法和关系的对象集合的总称。
类可以分为三种类型
实体类
来源于领域模型中的类
一定有属性,但不一定有操作。
反映的信息需要在系统中处理,并需要进行持久化存储。持久化存储可以由实体类来实现,也可以设计专门的数据访问类来完成。
子主题
边界类
用于系统接口与系统外部进行交互
控制类
控制用例工作的类
体现应用程序的执行逻辑
面向对象设计原则
单一职责原则
设计目的单一的类。
开放-封闭原则
对扩展开放,对修改封闭。
里式替换原则
子类可以替换父类
依赖倒置原则
要依赖于抽象,不是具体实践。对接口进行编程,不要对实现编程。
接口隔离原则
使用多个专门的接口比使用单一的总接口好。
组合重用原则
尽量使用组合不是继承达到重用的目的。
迪米特原则(最少知识)
一个对象应当对其他对象有尽可能少的了解。
面向对象设计模式
创建型模式
用于创建对象
包括5种
工厂方法模式
类行为模式
Factory Method定义一个用于创建对象的接口,让子类决定将哪一个类实例化
Factory Method使一个类的实例化延迟到其子类。在此模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生产具体的产品对象,使一个类的实例化延迟到其子类,由子类来确定实例化哪个具体的产品类。
子主题
抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
优点:方便创建一系列的对象,其使用场景也是创建系列对象的情况。可用于数据持久层的设计
工厂方法关注同等级产品生产,抽象工厂关注一个产品族产品生产。宝马车系有:3系、5系、7系等。
子主题
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。系统中只有一个对象可以节约系统资源开销,如我们计算机只需要一个资源管理器。
子主题
建造者模式
将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可>以创建不同的表示。
例如,快餐店的工作餐都是主食+小食+饮料餐食的内容可以不同,但构造过程差别不大,
子主题
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
系统中存在大量相同、相似的对象,利用构造函数来创建实例,比较耗费资源。Prototype类中包括一个clone方法,Client调用其拷贝方法clone即可得到实例,不需要手工去创建实例。
子主题
结构型模式
处理类或对象的组合
包括7种
适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter模式适用于
想使用一个已经存在的类,而它的接口不符合需求。
想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(接口不一定兼容的类)协同工作。
子主题
装饰器模式
动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。是在不改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
装饰者模式通过组合的方式扩展对象的特性,这种方式允许我们在任何时候对对象的功能进行扩展甚至是运行时扩展而若我们用继承来完成对类的扩展则只能在编译阶段实现。
子主题
代理模式
Proxy Pattern 代理模式为其他对象提供一种代理以控制对这个对象的访问。
代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。如:现实世界的代理人。
子主题
外观模式
为子系统中的一组接口提供一个一致的界面,外观模式通过提供一个高层接口,隔离了外部系统与子系统间复杂的交互过程,使得复杂系统的子系统更易使用。
桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化
子主题
组合模式
将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
组合模式描述了如何将容器对象和叶子对象进行递归组合,使得用户、在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象。
子主题
享元模式
Flyweight Pattern 享元模式运用共享技术有效地支持大量细粒度的对象
享元模式使系统使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。又称为轻量级模式。
享元模式通过共享技术实现相同或相似对象的重用。
子主题
行为型模式
描述类与对象怎样交互、怎样分配职责
包括十一种
策略模式
Strategy Pattern 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。
策略模式让算法独立于使用它的客户而独立变化。如:旅游时候我们可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。选择策略的依据是费用,时间,使用工具还有每种方式的方便程度
子主题
模板方法模式
Template Pattern 模板方法定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。
子主题
观察者模式
Observer Pattern 观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新
发生改变的对象称为观察目标,被通知的对象称为观察者。一个观察目标可以对应多个观察者。
子主题
迭代器模式
Iterator Pattern 迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部表示。
子主题
责任链模式
Chain of Responsibility Pattern 责任链模式避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
子主题
命令模式
Command Pattern 命令模式将一个请求封装成一个对象,从而使得用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
命令模式将发出命令的责任和执行命令的责任分割开。请求的一方不必知道接收请求的一方的接口,也不必知道请求是怎么被接收的,以及操作是否被执行、何时被执行以及怎样被执行的。
子主题
备忘录模式
Memento Pattern 备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。
子主题
状态模式
State Pattern 状态模式对于对象内部的状态,允许其在不同的状态下,拥有不同的行为,对状态单独封装成类。
访问者模式
Visitor Pattern 访问者模式表示一个作用于某对象结构中的各元素的操作。可以在不改变各元素的类的前提下定义作用与这些元素的新操作。即对于某个对象或者一组对象,不同的访问者,产生的结果不同,执行操作也不同。
子主题
中介者模式
Mediator Pattern 中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
子主题
解释器模式
Interpreter Pattern 解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
子主题
0 条评论
下一页