系统分析与建模2

1、建模

建模的定义本身就和建模工作一眼非常抽象和难以理解。简单地说:建模包含两个问题,一个是怎么建?另一个,“模”是什么?

做需求的时候,首要目标不是弄清楚业务是如何一步一步完成的,而是要弄清楚有多少业务的参与者?每个参与者的目标是什么?参与者的目标就是你的抽象角度。与分析一个复杂的业务流程相比,单独分析参与者的一个个目的要简单得多。实际上,这就是用例!这也就是为什么用例会成为业务建模的方法的原因之一。

第二个问题“模是什么”,则依赖于确定了抽象角度下的场景模拟。

一旦决定了抽象角度,就确定了一个目标。一个由抽象角度确定了的目标,需要由静态的事物加上特定条件下产生的一个特定的场景来完成,即静态的事物(物)+特定的动作(参与者的驱动)=特定的场景(事物)。模就是人、事、物、规则。建模公式:

  • 问题领域=∑抽象角度
  • 抽象角度=问题领域边界之外的参与者的业务目标=业务用例
  • 业务用例=∑特定场景
  • 特定场景=静态的事物+特定的条件+特定的动作
  • 特定的事=特定的事物+特定的规则+特定的人的行为

2、用例驱动

要解决问题领域就要归纳出所有必要的抽象角度(用例),所以我们找到那些事物、规则和行为实现了所有必要的用例,那么问题领域就被解决了。

在实际的软件项目中,一个软件要实现的功能通过用例来描述,接小赖的所有分析、设计、实现、测试都由用例来驱动,即以实现用例为目标。

用例可以驱动的内容包括:

逻辑视图:以图形的方式说明关键的用例实现、子系统、包和类,它们包含在架构方面具有重要意义的行为,即建模公式中的那些人、事、物、规则是如何分类组织的。

进程视图:以图形方式说明了系统中进程的详细组织结构,其中包括类和子系统到进程和线程的映射,即建模公式中的那些人、事、物、规则事如何交互的,它们的关系如何。

部署视图:以图形方式说明了处理活动在系统中各节点的分布,包括进程和线程的物理分布,即建模公式中的那些人、事、物、规则是如何部署在物理节点上的。

3、抽象层次

抽象层次是面向对象方法中极其重要的,但是又非常难以掌握的技巧。学会站在不同的抽象层次考虑问题是建立好模型的基础。

抽象层次越高,具体信息越少,但是概括能力越强;反之,具体信息越丰富,结果越确定,但相应的概括能力越弱。从信息的表达能力上,抽象层次越高表达能力越丰富,越容易理解。

但随之而来的另一个问题是如果抽象层次太高,信息量过少的话,实施起来又会产生新的困难——信息量不足。

抽象有两种方法:自顶向下、自底向上。自顶向下的方法适用于让人们从头开始认识一个事物,自底向上的方法适用于在实践中改进和提高认识。

在软件开发过程中,主体上应当采用自顶向下的方法,用少量的概念覆盖系统需求,再逐步降低抽象层次,直到代码编写。同时应当辅以自底向上的方法,通过总结在较低抽象层次的实践经验,来改进较高层次的概念以提升软件质量。

一般的抽象层次:业务建模、概念建模、系统建模、设计实现。

与抽象层次相关的另一个问题是边界,实际上抽象层次与边界的选择总是相生相伴的。

4、对象分析方法

  • 一切都是对象
  • 对象都是独立的:对象与对象之间是天然独立的,只是在某个特定的场景下,它们的某一个特定的实例才相互联系在一起。要深入了解对象,需要分析很多个该对象的实力所参与的场景,通过归纳整理抽象出对象的一般特性。对象的独立性带来的正是对象的可抽象能力和可扩展能力。
  • 对象都具有原子性:无论什么时候,在分析过程中都应当将对象视为一个不可分割的原子,哪怕这个对象规模很大。对象总有一个边界,永远也不应该打破边界去窥探对象的内部。应当将分析过程中,得到的所有对于对象的认识,附加在对象边界上,在实现这个对象之前,不理会其内部的细节。这称为面向接口编程。
  • 对象都是可抽象的:在分析过程中,得到的任何一个对象都有特定的方面可作为抽象。对象所参与的场景越多,对象越有抽象价值。那些参与了很多场景的对象,它们是分析设计中重点以及成败关键。
  • 对象都有层次性:对象是有着抽象层次的。层次越高,其描述越粗略但适应能力越广;层次越低则描述越精确但适应能力越下降。在分析过程中,应当根据问题领域的复杂程度设定多个抽象层次,在每个层次上使用适合的抽象程度的对象描述。有助于减少分析的难度和工作量。
时间: 2024-08-10 17:09:41

系统分析与建模2的相关文章

系统分析与建模7

在UML中,关系是非常重要的语义,它抽象出对象之间的联系,让对象构成某个特定的结构. 关联关系 association 关联关系是用一条直线表示.描述不同类的对象之间的结构关系.可以使用关联关系表示一个对象了解其他对象,即一个对象“知道”另一个对象的存在.例如A对象保存了B对象的ID,因此A对象“知道”B对象的存在. 如果A和B对象互相“知道”,则使用一条直线来表示关联关系:如果A知道B,而B不知道A,则使用一条带箭头的直线,由A指向B. 依赖关系 dependency 依赖关系是用一条带箭头的

系统分析与建模1

面向对象编程的目标不是复用,而是提供了一种处理复杂性问题的方式.有了对象,我们能够通过提升抽象级别来构建更大的.更复杂的系统. 面向对象编程的困难 现实世界和对象世界的差距,即使面对简单的传统商业模式,我们仍有如下困惑: 对象是怎么被抽象出来的?现实世界和对象世界看上去差别是那么大,为什么要这么抽象而不是那么抽象?(Why) 对象世界由于其灵活性,可以任意组合,可是我们怎么知道某个组合就正好满足了现实世界的需求呢?什么样的组合是好的,什么样的组合是差的呢?(How) 抛开现实世界,对象世界是如此

PowerDesigner概述(系统分析与建模)

PowerDesigner是Sybase公司推出的一个集成了企业架构,UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具.它 不仅可以用于系统设计和开发的不同阶段(即业务分析,概念模型设计,物理模型设计以及面向对象开发阶段),而且可以满足管理,系统设计,开发等相关人员的 使用.它是业界第一个同时提供业务分析,数据库设计和应用开发的建模软件. PowerDesigner 15包含项目(Project),知识库(Repository),插件(Addins&Plug-in)以及9个模型

PowerDesigner(一)-PowerDesigner概述(系统分析与建模)(转)

PowerDesigner概述 PowerDesigner是Sybase公司推出的一个集成了企业架构,UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具.它不仅可以用于系统设计和开发的不同阶段(即业务分析,概念模型设计,物理模型设计以及面向对象开发阶段),而且可以满足管理,系统设计,开发等相关人员的使用.它是业界第一个同时提供业务分析,数据库设计和应用开发的建模软件. PowerDesigner 15包含项目(Project),知识库(Repository),插件(Addins&

.NET领域驱动设计—实践(穿过迷雾走向光明)

阅读目录 开篇介绍 1.1示例介绍 (OnlineExamination在线考试系统介绍) 1.2分析.建模 (对真实业务进行分析.模型化) 1.2.1 用例分析 (提取系统的所有功能需求) 1.3系统设计.建模 (技术化业务模型) 1.3.1 枚举类型的使用 (别让枚举类型成为数值型对象) 1.3.2 基础数据.业务数据 (显示实体和隐式过程) 1.3.3 模型在数据库中的主外键关联问题 (面向对象模型与关系模型的天然抗阻) 1.3.4 角色.类型 (区分类型与面向对象概念) 1.3.5 名词

C/S学习总结

经历了一个多月的奋战,重构的机房终于面世了.花的时间有点长了,不过从中也学到不少东西. 先说下这C/S的学习吧,C/S学习经历了软工文档.UML.C#.设计模式.VB.NET视频.三层.机房收费系统个人版.其中机房收费系统个人版是对前期学习的一个大汇总.实践了整个C/S学习过程中所学过的所有东西.对知识有了一个更加深刻的认识. 软工文档 软工文档是我们软件开发过程中必不可少的东西.使我们的软件开发都有据可依,提高开发效率.同时也提供了对软件的运行.维护的有关信息,便于管理人员.开发人员.操作人员

总会有一个是你需要的

http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑客入门新手特训.pdfhttp://www.shouce.ren/post/d/id/112298 黑客与设计-剖析设计之美的秘密(彩印).pdfhttp://www.shouce.ren/post/d/id/112297 鸟哥的LINUX私房菜:服务器架设篇 (第二版).pdfhttp://www.shouc

MATLAB解灰色模型

目前,灰色模型已经成为社会.经济.科教.技术等很多领域进行预测.决策.评估.规划.控制.系统分析和建模的重要方法之一.特别是它对时间序列短.统计数据少.信息不完全系统的建模与分析,具有独特的功效. 其实灰色模型很简单,具体的步骤我就不再一一赘述,我就灰色模型用MATLAB的解法与大家分享一下.我以一组简单的数据为例,如下: 例: 近几年,某种商品的价格如下表: 年份 2006 2007 2008 2009 2010 2011 2012 价格 71.1 72.4 72.4 72.1 71.4 72

浅谈微服务的来龙去脉

作者:王清培(Plen wang) 沪江 公共业务平台 应用架构师 转载至沪江技术学院微信公众号 背景介绍 最近一段时间公共业务平台在进行大面积的重构,对原来的技术栈进行迁移,逐渐往Java.Go.Node.js等开源.自由为主的技术体系中过度. 虽然这主要是替换技术框架,但也是我们应用系统进行重新设计.业务流程重新梳理的一个好机会,我们将利用这次机会来重构之前发现的一些问题. Martin Fowler大师<重构>一书中有说过一句话,大概意思就是,"每次对原有系统进行修改调整的时候