代码改变世界

谈谈项目的开发

2013-03-13 12:30  麦舒  阅读(5662)  评论(22编辑  收藏  举报

昨天看了一篇关于 做项目 方面的文章,也想谈谈自己做项目的经验。本人虽然从事IT行业多年,但是主要从事的工作都是技术研发方面的,比较出名的就是ALinq 了,ALinq Dynamic 是最近做的一个,感兴趣的朋友可以看看。 我做的项目不是很多,这方面的经验比较有限,因此,本文的一个目的是希望能够抛砖引玉的作用。

熟悉业务

开发项目的第一步,就是要熟悉业务了,这个是必须的,只有熟悉业务,才能够了解到客户的需求,从客户的角度去思才问题。否则,开发出来的项目,和客户想要的完全是两码事。具体来说,就是沟通。而和客户沟通,我觉得一个比较有效的手段就是流程图,界面的草图。我现在用的是本子记录,虽然记录方便,但是修改很不方便,很想知道,PAD上有没有这样的一个好用的工具,当然,一定要好用。在这个阶段,还有一个要做的,就是抽象出各个实体,并且理顺它们的关系(一对一,一对多,多对多)。最后,整理好流程图,流程图每一个步骤所对的界面图,实体关系图。先在自己的头脑里走一遍,然后交由客户确认。要确认的是,步骤有没有漏,界面上的字段少了没有。实体关系图就不必给客户了,这个不关客户的事情,也没有哪个客户看得懂。

方案制定

在熟悉完业务后,就开始制定方案了。

1、分层,还是不成层?现在一稍微有点规模的应用,都是采用多层架构了。但是,如果是微型团队,那么两三个人,追求的是短平快,并且项目规模很小,就不要分层了。 多层架构的优点在于:

  • 有比较好的扩展性。因为界面层与业务层分开了,可以很便于界面层的替换,虽然一般情况下都不会换。
  • 比较有利于分工合作。

2、界面层的选择。是采用Win界面,还是WEB界面。现在有一个倾向,就是采用JS框架来写界面层,理论上,封装的好的JS框架,在操作的便利上,开发速度上,是可以很逼近采用 Win 界面层的。但是,只能是逼近,在调试上还是很坑爹的。而且使用JS框架,对开发成员的素质要求比高。如果说,仅从开发成本上和操作的便利性来考虑,还是采用 Win 作为界面层比较适合。有朋友跟我说,用Win 不如用 WPF,它是 Win 的升级版。至于 ASP.NET 或者说 MVC 这些,个人觉得比较适合做网站,而不适合用来开发企业级的开发,因为要有很好的客户体验,必然要有大量的JavaScript,一旦夹杂了大量的JavaScript,倒不如直接用 JavaScript 框架了,这样反而更容易维护。

3、架构的设计,在完成了上面的工作,就需要制定软件的架构了。具体来说,就是说都要有哪些类,这些类的职责是什么,并且它们之间相互依赖的关系。一定要明确这些类的职责,并且要强调。不然团队的成员,需要加个方法,往往会不知道写在哪个类里,当然,要尽可能避免这种事情,虽然是难免。

4、就需要制定接口、方法了。必须想好,每个界面,都涉及到哪些类,以及方法的调用,同时在界面上标注出来。

开发讨论

1、方案的讨论。在项目开发的开始之前,必须要对方案进行讨论,讨论的目的在于,让队员理解需求,知道这个项目要做些什么,架构为什么要这么设计,检验方案是否合理以及有没有遗漏的地方。

2、开发的讨论。在这个阶段,要讨论的内容包括:界面需要调用到哪些类,哪些方法,界面的制作涉及到到哪些技术,或者第三方框架。

3、项目的分工。关于项目的分工,主要有两种,横向和竖向。模向指的是,按界面层、业务层来分工,还是按功能点来分工。如果业务的功能是比较分散的,并且没有太多的相互依赖,可以竖向分工。如果业务的依赖关系,逻辑性很强的,则横向分工。

当然,在这个阶段,还要把数据库表的设计给做好。关于数据库的选择,为什么没有单独写出来呢?其实也就那几种类数据,高负荷,不差钱的用Oracle,想省钱的用 MySQL,没几个用户,低负荷的用 Access 或者 SQLite 也行。至于 ORM,强烈推荐使用 ALinq ^_^  。

进度设定

1、排好进度。当整个项目都细化了,项目需要的时间,进度也就容易确认了。同时,如果项目落后了,也容易发现问题,最起码,可以追踪到个人。

2、设好里程碑。一旦到了里程碑,里程碑所设定的功能都必须完成。然后,拿去和客户讨论,发现问题,及早解决。千万不要等做完了再给客户看,切记!

优点与缺点

下面来谈谈这种开发模式的优点与缺点

优点:

1、稳打稳扎,步步推进。

2、对于Leader,能够掌控全局。

3、对于问题能够及时发现。

缺点:

1、沟通交流的时间要多

2、项目的分析设计时间较长,开发人员闲着,老板心里不好受 ^_^ 。

3、Leader会比较累,因为整个项目的细节都要想好。

 

以下就是我做项目的一些经验之谈,如果对大家用,还请点一下推荐,谢谢。