理智的战士从来不会赤手空拳上战场杀敌,那样的做法是用鸡蛋碰石头,结果只能是"壮志未酬身先死"。如果把建模比作敌人,那么我们知道很多热血的软件开发人士就败在这个敌人的手上。一个原因就是太过于鲁莽,在不知道建模为何物的时候就开始了战斗。
一、什么是建模?
俗话说:"横看成岭侧成峰",说得是从不同角度观察同样一座山峰,会呈现不同的景象。其实建模可以这样理解:从某个特定视角对软件系统的一次观察。
同一事物,允许从不同的角度,带着不同的目的去考察,因考察的目的不同,观察时会有意思地忽略掉一些枝节而突出我们敢兴趣的地方,即"取出求精"。软件建模同样:一个软件系统模型包含多个从不同角度对它的观察,每个观察称之为一个视图。软件模型中的一个视图代表了不同的人员(系统设计师,开发人员,项目经理,客户)对软件系统的观察。这些人员对软件系统的兴趣点不同,因为各个视图呈现的内容不同,但本质上都是描绘同一个软件系统。
软件模型之间的多个视图的关系是:"追踪"关系。也就是说,他们反映的是同一个软件系统在不同级别上的抽象。软件系统模型的不同视图,如分析视图,设计视图,实现视图,部署视图等也反映了软件系统开发周期中不同阶段。一般由一种特定的视图来描述。当阶段发生变化时,一种视图中的元素将转换为另一种视图下的对应元素。
备注:视图可以理解为软件系统开发周期中不同阶段的模型,因此我们可以认为:分析视图,设计视图,实现视图常常称为领域模型、设计模型、实现模型。
总结:
1.软件模型形象定义:软件产品相关人员对软件系统的观察。
2.软件模型视图之间相互联系,相互转化。
3.模型具有焦点,必须取出求精,突出重点。
4.软件模型由多个视图构成,每个视图表示从不同角度对软件系统的一次观察。
二、为什么要建模?
1.通过建模理解软件系统-----用户要求增多,需求变更频繁,软件修改复杂程度增加,模型作为现实的抽象,有助于不同的人员从不同的角度理解软件系统。
2.满足协同开发项目的需要-----通过建模,提供多个视图,团队对整个产品获得一致理解。
3.创建真正满足用户需要的产品----通过建模,能及时准确地捕捉,跟踪用户的需求,并评估需求变更对软件产品的影响。
4.软件开发过程可控----软件建模能够清楚展示软件系统的蓝图,从而将软件系统开发过程的不可控因素降到最低。
三、用什么建模?
软件建模需要一套标准通用的符号,就如同我们写程序都有一种编程语言一样,从事软件系统开发的人员都能认识这种符号,这样可以借助这套符号相互交流。
通用符号或者说建模语言是统一建模语言(UML,Unified Modeling Language)。UML是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统的制品进行可视化,详述,构造和文档化。
注意:UML是一套以建模的符号体系,而不是方法,也不是软件过程,但它可以在各种建模方法,各种软件过程中使用。