软件工程同UML和RUP的关系

回顾暑期到现在的两个月的时间里,我们学习了软件工程,设计模式和UML。在UML课程里也接触了RUP思想!到今天我感觉才对软件工程思想有了些较清晰的认识,同时我感觉软件工程是我们从结构化程序设计到面向对象程序设计转变的一个过渡,而后续的这几门课则把我们彻底的拉到了面向对象编程的世界!

软件工程在没有形成理论的时候,并不是无据可依的,看看我们现实世界大的项目,无一不在使用着工程化的思想!初识软件工程里,我曾经总结说,它教与我的第一个思想就是自顶向下逐步求精!而今我更加确信这一思想的正确性!我们解决问题的思考过程是先抽象后具体,从笼统到细节去做的,这就强调了我们不大可能将事情一步认识到位,解决到!

那么在软件工程或其他的项目中(比如说建造高楼大厦),我们是怎么做的呢?我们是要先做一个蓝图模型,在根据它所传递的意图来完成我们的目标!

那这个蓝图我们用什么工具来实现呢?

我还记得,在刚学完软件工程时,米老师就让我们对暑期所完成的机房收费系统补充文档!这个时期的文档中所用到的示意图,都可以叫做我们对这个系统某项功能的一个蓝图,只不过我们这时所画的是面向过程的模型,而且这个模型的画法我们并没有接受过专业的指导(当然现在看来也没有必要接受专业的指导训练),以至于大家分不清什么是流程图,什么是程序流程图,什么是系统流程图,也搞不清楚究竟每一种图如何来画,使用什么样的线条来来表达一个意图,使用什么形状的框图来表达一个实体等等!我们只是根据软件工程里所介绍的一点点模糊的概念和在网上的一些零碎的知识加上自己的一些想象来完成各个阶段所需要的图(蓝图)。

而我们在学习软件工程时之所以感觉到乱,也正是我说软件工程是我们从面向过程编程到面向对象编程转变的一个过渡的原因!现在回想,我们发现,软件工程课程里是先介绍了面向过程编程思想在软件工程思想里的应用,再讲的面向对象编程思想在软件工程里的应用!这样我们即学习了软件工程的主要目的及具体的步骤,还对我们熟悉的面向过程编程和较生疏的面向对象编程有了个对比与了解!所以暑期的这门课我感觉它不只是让我们接触了一门工程学,更是我们编程方式转型的一个标志!如果我们将来在面向对象编程及由此思想演化而来的新的编程思想里有所建树的话,我们真的应该感谢米老师和米老师提供的这份听起来比较乱的软件工程课程。

现在回答我之前问的那个问题“用什么工具来画这个指导我们施工的蓝图呢”。既然我们现在所使用的是面向对象思想编程,自然我们就要用面向对象的蓝图构造工具了。当下的工业标准是UML

既然UML是一种标准,我又问什么称其为工具呢?

UML是一种建模语言,即是语言它就包括语法和语义!其语法就是一套大家共同来遵守的准则,防止一个人用UML写出的模型不能被除他以外的人明白的事情发生!而语义则是在语法的基础上我们得出的UML所表的事情意图(就像说句英文话“I love China!”,我们遵从了主谓宾的语法后,我们便可了解其语义是“我爱中国”,懂这套语法语义的人都不会将其理解为“我恨中国”。也就是UML要完成的目的就是我们在描述完一个系统后,无论是什么人,只要他懂这套语法及语义,他就能掌握所表达系统全貌)

那你说我们所用的汉语,英语是不是工具呢?是!同样,我认为UML作为一种语言也是工具。但我也相信语言是交流思想用的。UML所要同我们每个人交流的思想就是使用UML建造模型的人对要编写的系统的理解!

那么为什么会有UML?我想这就要深挖UML深层的思想了!这个思想便是可视化建模!而在这个思想的指导下,不只是出现了UML,还出现了BoochOMT等。而我们所学的是UML,这就像世界上存在多种语言,我们学的是汉语一样。而后我们可以学习英语,法语等!

但可视化建模语言同我们人类的语言有一点不同,那就是人类语言多了一样口同表达的能力,可UML等可视化建模语言却只有人类的书面表达能力!这就需要我们使用像笔一样的工具来写出我们的语言!我们所接触的工具是Rose,同人类语言除了用圆珠笔表达还能用钢笔表达一样,除了Rose还有EA等来表达UML语言!

以上我分析了软件工程的自顶向下逐步求精的思想,及其实现方法和这种实现方法的深层思想——可视化建模!在这我在扩充一下,如果对这个实现你能提出一个比可视化建模更新更实用的深层思想(比如说叫多位形象化建模,反正不是人家的可视化建模就成),那情况会是如何?你出名是肯定的了,再有就是软件业要大变动一下,什么Booch啊,OMT啊,UML啊都将被其他新的建模规则所取代!当然RoseEA也将陨落!不过当下还是要先学好可视化建模思想,再图软件界的大变革吧!

 

 

软件工程是一种工程管理思想,在这种思想指导下,我们可以达到低成本,按期完成满足客户所需要的软件!但我们在刚学习完软件工程思想后,所编写的文档,只是完成了软件工程的一些步骤而已,具体要如何做到解决软件危机的目的,我们还需要软件工程的一个细化——RUP

说白了,RUP是对软件工程的一个泛化!我们还记得软件工程里讲过开发模式的概念,并且介绍了瀑布模式,迭代模式等许多模式,这使我们更觉得软件工程乱,究竟我们在软件开发的过程中使用哪种模式呢,当时的我真是一塌糊涂!现在学习了RUP,它是将软件工程进一步细化了,在这种思想里,它所使用的是迭代开发模式。我们这时就应该发现世界上不只存在一个RUP,应该还存在其他的开发过程!同UML是可视化建模的一个标准之一一样,RUP也存在兄弟类,像XP就是一个!这些过程都是为了满足软件工程的要求而细化出来的!

RUP有几种措施来实现软件工程的目的的,他们是:迭代式开发、管理需求、使用构件架构、可视化建模、检验质量、控制变更!有些我比较熟悉,有些我还不是很清楚,也许不清楚的地方在课间的例题讲解部分能够有所收获,或者是深学一下RUP课程。

      现在只是稍明白了一下软件工程同UMLRUP的关系,具体RUP的那些措施是如何完成的还需要进一步学习,再有就是UML各个图和设计模式在软件工程各阶段的应用要进一步学习!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值