`
txf2004
  • 浏览: 6869452 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

软件工程三部曲

 
阅读更多

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

雾里看花

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





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

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

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


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

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

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

重构——蜕变

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

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

UML图的设计:

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

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

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

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

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

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

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

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


分享到:
评论

相关推荐

    a-软件工程、程序员修炼三部曲

    PHEI Broadview 2006专业书目 第一期\a-软件工程、程序员修炼三部曲.pdf

    软件工程卷3:领域、需求与软件设计

    这三卷书首次系统地论述了如何用形式方法来指导领域工程、需求工程和软件设计,即软件工程的三个相互关联并重叠的组成部分,或称之为软件工程的“三部曲”。在软件开发的各个阶段,如果都能够采用这种形式化的开发...

    作为软件工程师学英语三部曲

    作为软件工程师学英语三部曲。作者在IT业从业多年,翻译过多本技术图书,对英语的学习方法也有颇多积累。在本文中,他更是敞开心扉,分享了自己压箱底的三大绝技。  作者在IT业从业多年,翻译过多本技术图书,对...

    软件工程卷1:抽象与建模(1/3)

    这三卷书首次系统地论述了如何用形式方法来指导领域工程、需求工程和软件设计,即软件工程的三个相互关联并重叠的组成部分,或称之为软件工程的“三部曲”。在软件开发的各个阶段,如果都能够采用这种形式化的开发...

    软件工程卷2:系统与语言规约

    这三卷书首次系统地论述了如何用形式方法来指导领域工程、需求工程和软件设计,即软件工程的写个相互关联并重叠的组成部分,或称之为软件工程的“三部曲”。在软件开发的各个阶段,如果都能够采用这种形式化的开发...

    国内外主流的三维GIS软件

     介绍:AlaGIS与全球首个大规模网络仿真城市E都市同属于杭州阿拉丁公司,采用面向网络的分布式空间信息应用服务支撑平台,集二维、三维、遥感影像于一体,全面整合了GIS与数据库、软件工程、人工智能、网络技术及...

    软件市场调研报告.doc

    卫藤疏院讨瓷吉卒逞珠又哩纬卯拨磷僳橇巾卜凡者斑辱茅睫羹疾 中国软件市场调查报告 院 系: 计算机科学与信息工程学院 专 业: 软件工程 班 级: 09软件工程一班 姓 名: 杜海东 学 虞阉虹高匆外霓阑洛氢设勃清庶屉...

    realplayer

    (ii) 修改、翻译、反向工程、反编译、反汇编(除非法律明文禁止此限制)或基于此软件或文档制造派生产品;(iii) 复制此“软件”或“文档”(备份或存档目的除外);(iv) 出租、租借、转让或以其它方式转让此“软件”...

    通信市场调研报告范本.docx

    自2021年年底工信部正式向三大运营商发布TD-LTE牌照,2021年6月FDD也进入试商用,三大运营商都上大陆陆续续加大了在4G领域的投资,据了解,中国移动在4G牌照发放以后已建设了50万个4G基站,4G用户总数已达4095万户...

    autoroad2021中边桩坐标横断土方计算绘图系统【免费版】

    工程部人员核实红线、横断土方、路面面积等工程量,进行土方过程计量,监理、业主进行数据复合,绘制形象进度图、道路平、纵、横施工图,快速验证各种数据,施工管控等,最主要由于采用EXCEL表格+函数的这种开放式的...

    计算机图形学课程设计任务书[1].doc

    课 程 名 称 计算机图形学 院(系、部、中心) 计算机工程学院 专 业 计算机科学与技术 班 级 多媒体091 起 止 日 期 2011.12.19—12.25 指 导 教 师 丁宇辰 " 1.课程设计应达到的目的 " "《计算机图形...

    autocad命令全集

    序号 CAD命令 简写 用途 1 3D   创建三维实体 2 3DARRAY 3A 三维阵列 3 3DCLIP   设置剪切平面位置 4 3DCORBLT   继续执行3DORBIT命令 5 3DDISTANCE   距离调整 ...301 VBAUNLOAD   卸载VBA工程 302 VIEW –V...

    creo2.0基础培训教程.pptx

    1、CREO 2.0是PTC公司推出的最新一代三维设计、分析软件,功能更为强大,界面更为简洁,操作更为灵活。 creo2全文共17页,当前为第4页。 二、 CREO 2.0 特点 3、Parametric 2.0主要特点: 三维实体模型——自然、...

    R8中文说明书(修订版+增补版)

    在R8上可以完成一个歌曲完整的缩混工作,并可以将不同的缩混状态储存在不同的工程文件中。 INTERFACE音频接口 2进2出的音频接口 当和计算机连接的时候,R8就成为一个功能强大的音频接口。只要用USB线连接电脑和R8...

    网络安全攻击技术.pptx

    归纳起来就是"黑客攻击五部曲" 1、隐藏IP 2、踩点扫描 3、获得系统或管理员权限 4、种植后门 5、在网络中隐身 网络安全攻击技术全文共49页,当前为第9页。 1、隐藏IP 这一步必须做,因为如果自己的入侵的痕迹被发现...

    基于AT89S52 单片的频率计

    如果用计数就可以得到比较精确的频率,就将这个频率值直接送入显示译码部 分。 (6)显示译码 将测量值转换成七段译码数据,送入显示电路。 (7)显示电路 通过4 个LED 数码管将测得的频率值显示给用户。 (8)系统软件 ...

    新版Android开发教程.rar

    � Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金; Android 的 程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己...

Global site tag (gtag.js) - Google Analytics