系统分析师备考第十四章-系统设计
欢迎你来读这篇博客,这篇博客主要是关于系分考点·系统设计
的分享。
其中包括了关于我的经验和收集的知识分享。
正文
处理流程设计
业务流程建模标杆瞄准:以行业领先的标杆企业为目标,结合本企业情况分析建模。
- IDEF(一系列建模、分析和仿真方法的统称)
- DEMO(组织动态本质建模法)
- Petri网
- 业务流程建模语言:BPEL、BPML、BPMN、XPDL。
- 基于服务的BPM:基于Web服务的思想对业务流程进行建模
IDEF:
- IDEFO:业务流程(功能)建模;
- IDEF1:信息建模;
- IDEF1X:数据建模(如ER模型);
- IDEF2:仿真建模设计;
- IDEF3:过程描述获取;
- IDEF4:面向对象设计;
- IDEF5:本体论描述获取;
- IDEF6:设计原理获取;
- IDEF7:信息系统审计;
- IDEF8:用户界面建模;
- IDEF9:场景驱动信息系统设计;
- IDEF10:实施架构建模;
- DEF11:信息制品建模;
- IDEF12:组织结构建模;
- IDEF13:三模式映射设计;
- IDEF14:网络规划;
流程表示工具
- 程序流程图(Program Flow Diagram,PFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成。
- IPO图也是流程描述工具,用来描述构成软件系统的每个模块的输入、!输出和数据加工。
- N-S图容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计。
- 问题分析图(PAD)是一种支持结构化程序设计的图形工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序设计方法,从而提高程序的质量。
业务流程重组BPR
BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。BPR设计原则、系统规划和步骤。可能会考
- 基本原则
- 以流程为中心的原则
- 团队管理原则(以人为本)
- 以客户为导向的原则
- 基于BPR的系统规划
- 战略规划
- 流程规划
- 数据规划
- 功能规划
- 系统实施
- 步骤
- 项目的启动
- 拟订变革计划
- 建立项目团队
- 分析目标流程
- 重新设计目标流程
- 实施新的设计
- 持续改进
- 重新开始
业务流程管理BPM
BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。
BPM与BPR管理思想最根本的不同就在于流程管理并不要求对所有的流程进行再造。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计。
流程管理包含三个层面:规范流程、优化流程和再造流程。
软件架构设计
架构设计就是需求分配,即将满足需求的职责分配到组件上。
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量
架构设计的一个核心问题是能否达到架构级的软件复用。
架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
有五种架构风格如下:
- 数据流风格:批处理序列(个处理,顺序结构)、管道/过滤器(数据进出管道都要经过过滤器处理,分阶段的数据处理,常见于网络数据处理)
- 调用/返回风格:主程序/子程序、面向对象风格、层次结构(与上下两层关系密切)
- 独立构件风格:进程通信(构件之间是独立的,通过消息通信)、事件系统
- 虚拟机风格:解释器(有虚拟机,可以仿真硬件执行过程,实现解释执行效率较低,可跨平台)、基于规则的系统。
- 仓库风格:数据库系统、超文本系统、黑板系统(是一个解决方案的数据库知识源与黑板进行通信,用于没有确定方案的系统)。
两层C/s架构
客户端和服务器都有处理功能,相比较于传统的集中式软件架构,还是有不少优点的,但是现在已经不常用,原因有:
开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不一、软件移植困难、软件维护和升级困难、新技术不能轻易应用、安全性问题、服务器端压力大难以复用。
三层c/s架构
- 将处理功能独立出来。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。
- 其优点下面四点:
- 各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
- 允许灵活有效的选用相应的平台和硬件系统,具有良好的可升级性和开放性;
- 各层可以并行开发,各层也可以选择各自最适合的开发语言;
- 功能层有效的隔离表示层与数据层,为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理和可控制。
- 三层C/s架构设计的关键在于各层之间的通信效率要慎重考虑三层间的通信方法、通信频度和数据量否则即使分配给各层的硬件能力很强,性能也不高。
三层B/S架构
是三层C/S架构的变种,将应用服务器将客户端变为用户客户端上的浏览器变为网络上的WEB服务器又称为0客户端架构,虽然不用开发客户端,但有很多缺点,主要是数据处理能力差:
- B/s架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能
- 安全性难以控制;
- 在数据查询等响应速度上,要远远低于C/s架构
- 数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用
结构化设计
系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。
系统设计方法:结构化设计方法,面向对象设计方法,
系统设计的主要内容:.概要设计、详细设计。
概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
详细设计的基本任务::模块内详细算法设计、数据库模块内数据结构设计、的物理设计、其他设计(代码、输入/输出格式、用户界面)
、编写详细设计说明书、评审。
系统设计基本原理
- 抽象化;
- 自顶而下,逐步求精;
- 信息隐蔽
- 模块独立(高内聚,低耦合)
系统设计原则
- 保持模块的大小适中;
- 尽可能减少调用的深度;
- 多扇入,少扇出;
- 单入口,单出口;
- 模块的作用域应该在模块之内;
- 功能应该是可预测的。
系统设计基本原理:抽象、模块化、信息隐蔽、模块独立衡量模块独立程度的标准有两个:耦合性和内聚性。(喜欢考)
内聚程度从低到高如下表:
内聚分类 | 定义 | 记忆关键字 |
---|---|---|
偶然内聚 | 一个模块内的各处理元素之间没有任何联系 | 无直接关系。 |
逻辑内聚 | 模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 | 逻辑相似、参数决定。 |
时间内聚 | 把需要同时执行的动作组合在一起形成的模块。 | 同时执行。 |
过程内聚 | 一个模块完成多个任务,这些任务必须按指定的过程执行。 | 指定的过程顺序。 |
通信内聚 | 模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。 | 相同数据结构、相同输入输出。 |
顺序内聚 | 一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。 | 顺序执行、输入为输出 |
功能内聚 | 最强的内聚,模块内的所有元素共同作用完成一个功能,缺一不可。 | 共同作用、缺一不可 |
耦合程度从低到高如下表:
耦合分类 | 定义 | 记忆关键字 |
---|---|---|
无直接耦合 | 两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,不传递任何信息。 | 无直接关系。 |
数据耦合 | 两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。 | 传递数据值调用 |
标记耦合 | 两个模块之间传递的是数据结构。 | 传递数据结构。 |
控制耦合 | 一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。 | 控制变量、选择执行某一功能。 |
外部耦合 | 模块间通过软件之外的环境联合(如I/O将模块耦合到特定的设备、格式、通信协议上)时。 | 软件外部环境 |
公共耦合 | 通过一个公共数据环境相互作用的那些模块间的耦合。 | 公共数据结构 |
内容耦合 | 当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时。 | 模块内部关联 |
面向对象设计
面向对象的设计:是设计分析模型和实现相应源代码,设计问题域的解决方案,与技术相关。00D同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等
面向对象的设计原则:
- (1)单一责任原则。就一个类而言,应该仅有一个引起它变化的原因。即,:需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任
- (2)开放-封闭原则。软件实体(类、模块、函数等)应该是可以扩展的,即开放的;但是不可修改的,即封闭的。
- (3)里氏替换原则。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用
- (4)依赖倒置原则。抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
- (5)接口分离原则。不应该强迫客户依赖于它们不用的方法。接口属于客户不属于它所在的类层次结构。即:
依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。
设计模式
(必考)
架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。
设计模式:
每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动,设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的的设计和体系结构。四个基本要素:
模式名称、问题(应该在何时使用模式解决方案(设计的内容)、效果(模式应用的效果)
惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法。
人机界面设计
- 置于用户控制之下
- 减少用户的记忆负担
- 保持界面的一致性
参考资料
- 官方教材-系统分析师综合教程
启示录
富贵岂由人,时会高志须酬。
能成功于千载者,必以近察远。