项目总结代码之前的工作

代码之前的工作比较多,也比较广,需要的不仅仅是开发技能,还包括行业知识,分析能力,设计能力。以及更深远的商业预见能力,预见系统之上的商业前景,是否值得我们开发这么一个系统,以及系统的大方向,服务的客户群,需要达到的目标,盈利的点。

  一旦上面的商业目标确定之后,就需要行业专家以及架构师的介入。这两者会配合工作,行业专家的主要职责是构建满足商业目标的业务模型,将商业目标分解为很多小的业务模型,梳理其中的业务流程。

  架构师的主要职责是建立业务模型对应的软、硬件系统模型,验证业务模型的可行性,确定业务流程可以用系统来表达。其中哪些可以用系统实现,哪些需要人工辅助来实现,又或者哪些可能不合理,需要修改业务模型或者流程。

  同时架构师还需要根据现有人员的知识结构进行技术选型。包括:使用那种平台?哪种语言?什么工具?模块如何划分?如何分层?层或者是模块之间如何交互?交互的标准是什么?需要那些基础类库?这些前期的工作,可以由架构师团队来做,或者是在架构师的指导下由高级程序员完成。

  这时候开发人员也不是没有事情可做,应该在高级程序员的带领下,熟悉架构师确定的技术平台,以及语言特性。或者是进行一些技术的探索,对后面肯定会用到的技术难点进行一些积累,事先解决一些可能遇到的技术问题,做一些技术积累。也可以叫做热身。

  架构师将系统划分为很多的子系统,做一些横向的划分。确定子系统之间的交互格式。

  之后架构师会将架构的结果,技术选型方案交给CTO或者是高层去确定一下,确定使用哪种技术。CTO和高层根据成本来最终决定使用哪种技术方案。不过一般架构师给出的技术方案都会被通过,因为也是根据公司目前的技术掌握情况制定的方案,所以通过的可能性还是很大的。

  待技术方案确定之后,架构师会将包括:系统架构图,划分好的子系统,确定好的子系统交互方式,基础类库这些东西交给不同的项目组。由项目组的leader带领项目组的高级程序员对于分配的模块进行分析,提出自己的异议。一般来说没有太大的异议,主要是因为拿到的模块已经分析的比较透彻了。一般就是一些理解上面的异议,也就是概念问题,理解概念有助于加快开发的进度,和进行开发进度的估算。

  估算进度之后,上报项目经理开发进度,项目经理根据上报情况,衡量一些其他因素,经过几次的反复,最终确定一个开发的进度安排。

  leader会根据人员和任务的情况,将任务分解为小任务,分配到合适的开发者手中。然后大家开始做详细设计,一边理解业务和模型,一边进行详细设计。整理用例,写用例的实现,也就是详细设计。leader会和高级程序员审核设计是否合理,以及用到技术是否合理。等这些都确定之后,形成文档之后,才进行开发。

  当然了,如果应用TDD的话。就需要先写一些测试用例,还要进行测试用例的设计。

  今天说到这里,不知道大家有什么意见,欢迎大家一起讨论。

原文地址:https://www.cnblogs.com/Leo_wl/p/1801860.html