当前位置:编程学习 > C#/ASP.NET >>

懒惰化、标准化、自动化——>工具化

答案:

懒惰化、标准化、自动化——工具化

——利用合适的工具构建流水线软件过程
Eric Liu at 2005年5月

       Eric是一家小公司的开发部经理,同样也是一名普通的开发人员。这是一家提供网站服务的公司,理所当然的,Eric这个部分的主要工作是基于网站应用的开发,就如目前主流应用的推介的做法,所有的应用是分层设计的,理所当然的有数据访问层、业务逻辑层和表现层。Eric所带的几个开发人员也没有任何与众不同之处:A君比较熟悉数据库和业务逻辑层的编写,但是对于Web表现层的了解太太有限;B君对于javascriptHTMLCSS等等有比较多的了解,但是对于组件层的开发还略显生疏;C君非常熟悉业务,但是对于具体实现技术的了解有限;D君。。。。

       这个一个普通得不能够再普通的团队,不论在技术还是在协作上都没有太多的出彩之处。而就是这样一个组建不久的团队,Eric的任务是带领他们在三个月之内完整整个应用网站的开发,并且保证完工的东西能够适应未来发展的变化。

       我想在大多数人看来,如果保证软件架构的向前扩展性和兼容性,这是一个软件架构师应用考虑的问题,而不应该把他降解到普通开发人员的身上,道理是正确的,可是可行性是不高的,在国内的软件开发中,谁都明白很多时候软件过程的各个角色重叠和冲突的可能性是很大的,很少有团队能够不打折扣的分离出这些岗位。比方来说,应该将系统架构师和系统分析员这两个角色分离,让架构师专注于技术和业务的可实现性规划,而系统分析员在架构师工作的基础上,将技术和业务转化成面面俱全的应用。现实的说,没有多少公司可以在一个项目中同时建立这两个角色。

       对于Eric而言,一切困挠无法幸免,在小型开发团队中,角色的相对模糊和对于结对协作的高要求是同时出现的,这个也就是矛盾本身。如果说RUP或者其他软件过程最大的贡献是分离和定义角色,并且指明了各个角色的职责和如何互动,这个一切的基础是在于相对稳定的目标上的角色清晰化。那么XP编程恰恰相反,他强调变化,并且拥抱变化,业务导向(Business Oriented)的开发方式同样决定了无法严格界定岗位。

       正是因为如此,Eric的团队必须解决几个问题:

n         如何高效的编写出应用需要的代码?

n         如何保证不同开发人员的代码具有统一的规范性和阅读性?

n         如何在业务变动的情况下快速适应变化

n         如何保证代码质量?

n         是否需要版本控制?

n         如何进行错误跟踪和回馈

n         。。。。

一切正如本文题目所言的:懒惰化、标准化、自动化,方才可能构建出流水线的软件过程,这就是Eric这个团队所要解决的问题,答案是简约有效的——工具化,让工具替你完成一切可以完成的工作。

因为Eric的开发团队采用了ASP.NET作为网站应用的构建技术,因此下面提到的一些工具有些来自开源社区,有些是共享软件,当然也有一些商业软件。这里不是要求你使用所有的工具,也不是说必须使用那个工具,只是一一展示利用各种工具能够让你省却你曾经以为不可能缩减的工作。我不想去熬述软件开发过程的各个环节,毕竟那样的课题不是这点文字可以解决的,我想讨论的是一个标准的网站应用开发的各个环节你可能使用的工具。而一个网站开发过程不外乎需求——数据库设计——建模——实现——测试——部署这样粗线条的东西。

Visio(for Enterprise Architect 2003)

       有很多种理由去推荐这个工具,如果你从事VS.NET开发,这是最好的数据库工具,也是最容易使用的数据库建模工具,或许你已经习惯了Power Designer或者ERWin这样的数据库建模工具,会觉得Visio太多简单。可有些时候反过来想“simpleness is beautiful”,如果你是一个数据库建模的初学者,那么请相信我的建议,如果你是一个资深的建模人员,也请认真考虑你们手头的工具是否太过复杂,特别是应用在团队中的沟通时。除了支持主流的数据库如OracleSQL ServerAccess,你完全可以通过安装自己的数据库驱动来实现Visio对于其的支持,当然了,作为Office家族的一员,Visio的另外一大优势就是你可以通过宏或者VBA自动化你的IDE

       我这里推荐的是Vs.NET自带的Visio版本,相对于Office系列,总体有一个版本号的延迟,如VS.NET 2003自带的是Office XP版本的VisioOffice 2003Visio版本集成在了Visual Studio 2005 Beta版中,相对于专业版,企业版提供了强大的脚本生成功能。

CodeSmith

.NET之下,如果说CodeSmith是最好的代码生成工具一点也不为过,而在Eric的团队中,也对CodeSmith的威力推崇到极致。如果你做过基于数据库应用的开发,相信会对那些重复的数据库操作语句头疼不已,太多的属性字段,太多的更新、太多的插入,太多太多。。。。

我相信你不会陌生下面这样的代码

这是一个最普通的数据库操作封装,如果你在应对频繁的数据库操作,类似这样的代码将是无比琐碎。其实如果仔细想想,这样的代码是否在不同的类中都会出现,固定化的属性访问,一成不变的数据库操作,相信你写过这样的代码,更加相信你不愿意写这样的代码。这个工具理所当然的成为了懒惰人的工具。基于模板和ASP.NET语法的特性一定会让大多.NET开发人员喜欢。

上一个:不用API实现查找某文件夹下所有文件
下一个:Oracle数据库的安全策略分析(一)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,