发布时间:2020-07-08
开发一套适合某些行业的软件系统从来不是一件容易的事情,动手开发之前首先要确定项目规模,项目周期,项目预算,项目人员等等。
不打算从项目管理的角度来看,只从开发的角度来看待其中的一些问题。也许可以划分成下面几个部分:
确定需求
软件项目需求是用来解决做什么的问题,这些需求来自用户,用户指的是使用软件的人,需求整理从粗到细,做好需求文档,需求分析,图文并茂,需求整理抓住几个要点:需求提出人是谁,要实现什么功能,需要达到的目的,做需求不是仅仅记录用户说的每一句话,而是通过与用户的沟通来理解用户真实的想法,可能用户并不是那么专业,用词也许不一定准确,需求分析的目的就是为了捕捉用户的真实思想而做的工作,可以通过原型图与用户进行逐步的深入沟通来保证需求的正确性。
梳理业务流程
有了需求之后,接下来就是归纳整理了,从需求中分析出业务模型,整理出业务流程,业务字典,明晰业务逻辑,业务分析不涉及技术问题,只需要描述出一个文档,可以让市场人员或开发人员能够根据文档描述来了解用户的业务是如何运作的,可以通过建模工具画出业务框架图或业务流程图,甚至是原型图。
规划系统模块
开发人员熟悉了用户的业务需求后就可以考虑如何进行系统开发了,要考虑的问题包括系统架构设计,开发语言选择,数据库表设计,通讯模式通讯协议。如何进行系统规划呢?这很重要,好的架构可以事半功倍,要考虑好系统的健壮性,易扩展性。系统规划包括技术层面和业务层面的规划,首先根据系统的业务需求,确定需要的技术架构是B/S,C/S架构或者是混合架构,架构设计包括网络层,业务逻辑层,接口层设计等。
网络层要完成的内容是客户端连接的管理,并发连接处理,网络容错处理等等一切与业务无关的技术问题。网络层,业务层,接口层各个分层要具有独立性,而不是揉杂在一起,这样可以达到技术上的重用,以后可以把各个分层架构重用到不同的项目中去,要做好这种隔离设计可能需要用到一些设计模式来规划好各个层间的接口了。
业务逻辑层设计,首先确定有多少业务对象,所谓对象就是业务中涉及到的人和物还有可能是一个系统。其次是规划对象接口,业务对象之间的联系和通讯就是是通过接口调用进行的,每个对象实现各自的业务逻辑。每个业务对象都是独立的个体,一个对象只处理自身的业务逻辑和数据,通过接口通讯来影响其他对象的状态。业务对象有大到小细致划分,对象之间要做到低耦合,高内聚,换句话说是对象间的依赖关系尽可能低,各个模块尽可能独立,接口调用简单,大家各扫门前雪,各干各的活,完成后需要把结果告诉别人时才去打扰别人。
接口层设计,这部分也是比较关键的,每个对象之间需要接口设计,每个层之间通讯也需要接口设计,所谓接口可以是函数,对象方法也可以是调用的web的URL。对象或者各个层间通过接口调用进行信息交换,接口设计的原则是:意思明确,这个接口是用来做什么的定义清楚;业务逻辑单一,一个接口只处理同一个业务相关的事情;可扩展,接口的参数处理要兼顾可变性,随着业务改变可能会增加或减少参数,但已经确定下来的参数意义不能改变。
各个模块具体怎么来定义接口,按什么样的方式设计才能做到松耦合,高内聚呢?可以参考一下设计模式相关内容,选择一些合适的模式,包括观察者模式、工厂模式、命令模式等等。
无论什么时候都要将模块化思维贯彻到底,将模块化思维固化在脑子里形成思考习惯是非常有益的。在合作的一些项目中,有些项目代码简直目不忍睹,令人窒息,代码逻辑一团糟,不懂设计,写出的代码就是简单语句的流水式展示,甚至使用了超多的if和else判断语句来走完一个复杂的业务流程,一个函数成百上千行代码,搞的编译器都在抱怨分支太多产生了编译错误,这样的程序结构还是一位项目头头搞的,批评别人的时候,自己还沾沾自喜的问别人,看看我写的代码是不是逻辑清楚,是不是很简单,真是奇葩。随着业务流程的增加这种流水式的编程以后将会成为项目组所有人的噩梦。
设计的模块具体要怎么呈现呢?答案是使用UML建模工具来画各种模型图,类图,序列图,流程图等等,对复杂的项目UML建模工具是必须的。
代码编写
梳理清楚业务流程,设计好系统模块之后的事情就是编码了,把软件看成是一栋楼的话,系统模块设计完成了整栋楼的图纸设计,编码就是要用材料把图纸内容变成现实。
代码怎么写,从哪里下手?首先要遵循之前的模块设计的逻辑,可以先定义模块类及其接口函数,然后是整个模块的业务逻辑实现的代码,这个就要非常细致了,要根据流程图来合理定义内部函数,从主流程到分支逐级展开,函数名要言简意赅,意义明确,最好达到望文生义的效果。
每个模块对象都实现之后,接下来是把全部的模块整合起来,这时可以定义一个系统控制模块,这个模块负责配置各个子模块间的接口调用,进行信息传递。
软件开发项目管理工具ProjectCenter提供面向工程项目和研发项目的项目管理,支持固定工期作业和非固定工期作业;支持多种资源管理:人工、非人工、材料;支持多价格和多日历管理;支持多部门、多层次的项目组织结构和项目组合管理;提供面向部门的成本管理、部门资源管理、权限管理、日历管理;支持精细的报工管理、支持任务成果管理、项目范围管理、交付物管理。
推荐阅读:
您的信息已成功提交!
我们的客服人员稍后会与您联系