返回顶部

一缕半夏微光

温柔半两,从容一生

导航

《见微知著:从软件实践到软件工程》阅读笔记②

今天阅读的是《见微知著:从软件实践到软件工程》的第二章及第三章。

一、从这里入手——观察实践,分析软件需求

 需求分析可以从以下几方面来考虑:

(1)从宏观上把握系统——利用功能图和系统UseCase图,从大的方面把握系统“要做什么”;

(2) 从微观上确立概念——利用ER图、类图、数据字典等方式建立系统的概念模型:

(3)从流程上明确需求——利用DFD图、对象交互图、IPO图等,勾画软件的数据流、控制流、对象(模块、子系统)之间的相互关系。

把握了这三个方面,系统的需求、系统的模型就基本清楚了。

软件开发,特别是大型复杂系统开发中,没有经验的开发者经常出现的一个普遍问题是:欠缺“前后一贯,左顾右盼”的思考习惯!即要特别注意,前面对该问题是否有过考虑和定义?后面的思考与前面是否一致?如不一致,是前面考虑欠缺,还是后面考虑不周?要仔细权衡;另外,还要注意与左右相关系统与人员的关联,是否得到了妥善的“顾盼”。

分析、定义的具体方式可以是ER图、数据表、数据字典等。

ER(Entity-Relationship)图为实体关系图,描述系统涉及的实体概念及其之间的关系。现在很多场合下已经将其延伸到所有概念及其之间关系的分析。因此,有时也称这一阶段工作为概念建模,所作图为概念数据模型图(CDM,Conceptual Data Model)。

把所有定义的概念、数据、数据项收集起来,并按照字典的方式组织,如以字母、拼音或者章节排序,就形成了数据字典。

宏观上明确了系统Use Case,微观上提炼定义了系统概念数据,系统究竟做什么则可以用数据流图(Data Flow Diagram,DFD),输入/输出图(Input Process Output,IPO)来描述。DFD图的特点是,从数据流动的视角,观察软件系统应该具有的处理数据的过程,是系统的一种数据动态模型,而ER图则是一种数据静态模型,两者相互映照,从动态、静态两个方面观察系统的数据处理功能,但这只是数据层面的观察,并不能代表软件控制流等系统的行为模型。

IPO是Input-Process-Output的缩写,IPO图(表)的特点是:可以清楚地表明每个处理与输入/输出数据流的关系,和数据流图DFD相配合,更加准确地分析、定义软件的数据流处理功能。如果系统分析中形成了IPO图(表),在软件测试中也特别有用,测试员根据IPO图(表)就可以设计测试用例,判定每个处理是否实现了预订的功能。

二、从这里深化——深入实践,建立UML模型

软件系统是一个复杂事物,需要从多个不同的视角建立不同的模型进行分析思考。

观察我们周围的客观世界,实际上,世界就是面向对象(物件)的,是由一个个物件(这里用“物件”更准确)构成的。面向对象(物件)的方法,简单地说,就是把软件要处理的客观世界中的各种物件,提炼出来,就是软件要处理的对象;软件中的对象其实就是对象的属性和行为。找出对象应该具有的属性,以及处理行为的方法(或曰操作、服务、过程),就是面向对象的建模。

面向对象可视化建模流行的标准语言就是 UML(Unified Modelling Language),UML为面向对象系统的分析、设计提供了一整套规约的可视化图标表示,实践中展现出一系列最佳工程特征,在大规模复杂系统建模、软件架构层次设计中已经被证明十分有效,而成为业界的标准。使用UML,建模可以使我们专注于软件的模型和结构,而不是程序语言和实现技术;当模型建立之后,模型可以被PowerDesigner,Eclipse,Raional Rose这样的UML工具转化成指定的程序语言代码,大大提高了软件开发的质量与效率。UML发展中产生了许多版本,各种工具在实现UML时,具体图符会略有不同,但基本上是类似的。

对象之间存在着各种关系,提炼出对象类后,还要分析对象类之间的各种关系。常见的关系类型如下。

(1)继承(Inhertance):父、子类之间、对象与对象类之间存在着继承关系,即子类继承父类,对象继承类,或曰:子类共性的抽象形成父类。

(2)关联(Association):关联关系广泛存在于各个对象类之间。

(3)聚合(Aggregation):聚合是类(或者类包Package)之间的“部分全局”组成关系。

(4)依赖(Dependency):依赖是指一个类要依靠其他类来实现自己的目标。

ER图是考察对象与对象关系的很好的参照。实体基本上对应对象,实体间的关系也基本上就是对象类之间的关系。但从实体对象到对象类的提炼,需要把对象中共同的属性和行为抽象提炼出来,构成类中的属性和行为。

由于软件所涉及的对象及对象间的关系是固有的、静态不变的,所以称对象及对象关系模型为静态模型;而处理对象的方法及方法间的交互是对象之间的动态行为关联,称为动态模型。

框图是流程的单调描述。

序列图可以描述相应的行为属于哪个对象,对象行为之间如何交互。

软件需求规格说明书(Software Requirements Specification)

数据模型主要以ERD(系统实体关系图)、DFD(系统数据流图)、数据词典三方面明确系统需求。

posted on 2021-10-24 20:47  一缕半夏微光  阅读(32)  评论(0编辑  收藏  举报