软件工程三部曲

经常在反复的做一件事情,但是没有停下来总结的习惯,而只是处于一个当局者的位置忘了自己的初衷,所以经常停下来想想当初做这件事情的想法,可能会更能理顺我们的思路。从开始接触软件工程巨理论的知识,到云山雾罩的画UML设计图,再到设计模式的深入学习,接着是三层架构的理解,最后是运用这些学到的东西将机房收费系统重构完成,一直在懵懵懂懂中体会着。我想把我的软件工程分为三部曲:雾里看花、衣带渐宽终不悔,为伊消得人憔悴、山重水复疑无路,柳暗花明又一村。

雾里看花

软件工程:初识软件工程,翻翻原来的笔记,稍稍总结了一下这个阶段的知识点。软件工程主要是知道软件设计人员如何高效的设计软件。中国有位领导人说过:科学技术发展是第一生产力,而我认为软件工程的指导才是第一生产力。软件工程就是让软件开发人员如何多快好省的,如何高效低碳节能的开发出软件。软件工程学科包含为完成软件需求、设计、构建、测试和维护所需的知识、方法和工具。软件工程帮助软件组织协调团队、运用有限的资源,遵守一定的规范,在正确的指导思想下,完成的软件项目和既定的目标。这是一张软件工程概述图:





UML:起初的学习阶段就是学习了uml语言的基础:基本概念,模型元素,体系结构。用UML对系统结构家魔技师:类,关系,图,类图,对象图,接口,实例等。用UML对系统行为建模技术:用例图,序列图,协作图,活动图,状态图等。熟悉了rose工具提供的不同试图和配置用户界面,针对问题需求描述建立rose的用例视图,序列图以及协作图等九种图。

设计模式:程序设计师思维具体化的一种方式,是思考如何解决问题的过程,设计模式是在解决问题的过程中,一些良好思路的经验继承。《大话设计模式》这本书共讲了23个设计模式,前几章主要讲解了面向对象的意义、好处以及几个重要的设计原则;中间几章讲解了一些重要的设计模式,最后一章是对设计模式的全面总结。最后的附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。通过有趣的小故事的讲解,巧妙合理的将生活中的道理融入到设计模式中。

下面是我对设计模式的分类:


不知道刚刚开始学习设计模式的时候是不是有这种感觉:好像有些设计模式都是一样的。比如说,你看第一个简单工厂模式和外观模式,都是有一个类下边挂了几个小类,然后又另一个类通过调用这个类而是用这个小类。起初看这些确实没有什么意思,我也充满了很多疑问,埋怨编书的让我“浪费”这么多不该浪费的时间。但是想想,设计模式已经是一个很成熟的东西,所以就想着先用用再说。

MVC:有人说“MVC不是一种设计模式,而是一种架构模式”。但是我理解mvc也是一种设计模式,它只不过是应用在了架构上,从学习设计模式到学习mvc看似是两个不相干的学科,但是对于在应用他们的好处方面是一样的。至于他们的好处部分,接下来接着说。

衣带渐宽终不悔,为伊消得人憔悴

重构——蜕变

机房收费系统的重构是一次蜕变。从面向过程到面向对象的转变,从界面和数据库直接打交道到几层架构的设计,从没有设计模式的概念到能将几种设计模式应用到其中,从代码实现的时候想一出是一出到用UML图的设计。

先说说对面向对象的理解,对于面向对象的理解主要是对于类的理解。打个比方来说,对于“人类”这个东西,我是这么理解的:这个类包括一些特征,有静态的属性(也就是一些值),也有动态的方法(一些行为,能干什么!)每个人都有身高、年龄、体重这样的属性,也有行走,思考,劳动的方法。人之所以区别于其他的东西,是因为他具有这些属性和方法。“人类”只是一个抽象概念,而所有具有这样的属性和方法的个体就叫做人。类在程序中我理解为是一种数据类型。《大话设计模式》上的第一个例子“活字印刷”就非常形象的介绍了面向对象的概念。当然面向对象好处就是通过封装、继承、多态把程序的耦合性降低。

UML图的设计:

如果说第一阶段是属于局部范围的应用,那么到第二阶段,则是全局的利用UML了。在这个阶段,开始初窥UML的奥妙,不仅可以借助于UML的用例图、时序图来完成和人的沟通,而且在此基础上,可以使用UML的类图、时序图来知道程序员进行开发。

接下来就是对于设计模式的运用,对于设计模式的运用,当然首先要考虑某一个设计模式适于应用在什么地方,用上了设计模式会带来什么样的好处。带着这两个问题,才有利于真正的理解设计模式。到底什么是设计模式,我简单的把它理解为编程的时候的一种“公式”。现在回过头来看看这些设计模式,就是他们只不过是多了一个中间层,多了一段距离,“距离产生美”吗。现在再想想三层架构,开始的时候我们是界面和数据库直接打交道,但是现在是多了一个中间层“业务逻辑层”。业务逻辑层就是将界面和数据库分开了,避免了两者之间直接打交道。说到了他们的共性,但是为什么要把他们分成23种设计模式,而且还有不同的命名呢?原因就是在对于具体问题的处理上是不一样的。中间层的使用也带来了很大的好处,比如代码的重用、提高了代码的灵活性、解耦等等。说到设计模式,就不禁要说设计模式的原则了:开闭原则,里氏原则,依赖倒置原则,接口原则等等。

山重水复疑无路,柳暗花明又一村

整合这一套的设计过程,总结出了一下几个方面

一、UML图的设计可以说是对于想象力的培养

让您在一切都还没有的时候,生动地想象出系统将来的样子。一个伟大的设计师,必是具有超凡想像力的人。UML是渡河的筏,对于已在河对岸的人,自然不需要;对于未渡而想渡的人,却是非常需要的东西。

二、设计模式和mvc本是相通的

无非是为了增加一个中间层从而达到解耦的目的。做到设计模式的活学活用,我认为还要做到以解决问题为中心,将设计模式融合使用,避免为了设计而模式。当然这是建立在对各种设计模式了如指掌的情况下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值