开发软件应该考虑哪些方面?
软件是一项系统工程,业内有软件工程理论。软件工程也是每所学校计算机系的必修课。我们将介绍开发软件应该考虑哪些方面软件工程描述了一些概念和元素。
同时,作为企业、客户或个人,在软件开发中,除了软件工程外,还需要考虑相关的软件工程资源。这里的资源包括人、预算、费用、时间等。这些都包括在内,涉及到项目管理的范畴。
接下来我就走 从软件工程和项目管理的角度来描述软件开发需要注意的方面。
从软件工程的角度来看,软件开发包括早期需求分析、系统设计、详细设计,然后进入编码实施阶段,然后测试培训,交付在线。最后,还有一个不可忽视的阶段,即系统维护阶段。
- 需求分析阶段:通常采取面试(interview),workshop,调查表等方式由资深应用/业务顾问组成 (Application Consultant/Business Consultant),了解和确认客户的需求。初始阶段的需求分析非常重要,稍有偏差,就会有失之毫厘,谬误千里的风险。我相信大多数程序员朋友都经历过变化,尤其是在项目的后期。当你的代码一遍又一遍地测试时,你的自信几乎没有bug。这时,leader告诉你,对不起,变化来了。你所做的应该改成这样或那样 : ( 。当然,项目前期需求收集,分析阶段存在很大的不确定性,所以我强调需要有自己的应用/业务顾问来检查。当然,有些变化是不可避免的。
- 系统设计:需求分析好了,需要做Solution 这个时候,Design,Solution Architect进场(资深方案架构师)。如果你想在后期轻松实施编码,在系统设计阶段,如果有资深大牛检查后面的日子会好很多。包括系统的基本处理过程、组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和错误处理设计等。有时需要使用新技术,但也需要进行快速的新技术研究。在当今技术蓬勃发展的时代,有时客户的需求必须使用新技术,也许整个团队以前都没有接触过。此时,架构师需要进行整体检查。通常会有技术天赋的团队成员进行技术可行性研究。
- 详细设计:在系统设计阶段完成了大框架结构和技术方向。确定后,对每个模块进行详细设计。良好的详细设计文档包含模块中的所有用例(use case)逻辑处理和逻辑处理所涉及的算法。这部分文档通常需要资深程序员来写。如果写好文档,复制后面的学生会很放松。
- 编码实施:如果前面的详细设计做得很好,那么在这个阶段就相对容易了。但对程序员的基本技能仍然有很大的要求。另一点是,你自己的单元测试必须做得很好。
- 测试培训:这个阶段实际上分为两个小阶段。一个是测试,另一个是对用户的培训。测试包括集合测试、压力测试等,最后是UAT(User Acceptance Test)。如果没有问题,选择一个吉祥的日子在线。用户培训非常重要,不容忽视。它直接关系到最终用户对整个系统的接受程度。通常选择种子用户先进行功能培训,并与种子用户一起对所有用户进行整个软件的使用培训。
- 交付上线:这么多阶段都完成了,所有的测试都通过了,上线是否一帆风顺。呵呵,根据作者的经验,不一定。在网上或多或少都有一些飞蛾。新系统上线还不错。对于旧系统的升级,如果系统相当大,国内一般只能在国庆/春节进行。为什么,有7天的假期,也就是说,用户有7天的时间不使用系统,如果在这7天的过程中出现问题,也不会影响用户的操作。但如果7天不能上线,对不起,只能退休,等待下一个7天的假期。
- 维护:该庆祝了,一般软件公司上线后都有庆功会。庆祝后,别忘了软件系统的维护。首先,任何系统都不能保证没有bug。其次,对于实际应用,对于复杂的系统,每天产生的数据量巨大,需要相关的监控和相应的性能。用户使用一段时间后,会发现一些问题也会产生一些需求。因此,软件系统的维护也很重要。
说了这么多,从软件工程的角度来看,也提到了高级架构师、高级顾问、良好的详细设计等。这些都是资源,需要为之奋斗,如果不能为之奋斗,对不起,项目经理会有多难。
接下来,从软件开发项目的角度出发,从项目管理的角度出发,需要注意什么。
在项目管理方面,我使用PMP系统进行描述。作者之前通过了PMP认证,认为PMP系统在整个项目管理过程中也是有效的。PMP涉及项目范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、相关人员管理等。我将在这里描述软件开发的几个特别重要的环节。
- 时间管理:做软件开发,会有schedule,什么时候开始,什么时候结束。那么这里的进度计划就显得尤为重要。必须在规定的时间交付。
- 成本管理:无论是今天的公司、客户还是独立自然人,资源和时间都是有限的,能够投资于软件开发的资源也是有限的。如何在给定的资源中完成软件开发是项目经理的要求。很有可能我上面提到的高级顾问、高级架构师项目经理根本不能提供,或者公司不能提供。此时,我们必须找到另一种方法。
- 风险管理:对早期的风险识别,以及相应的定性、定量分析,制定应对计划,从而实现风险控制。
- 实施整体变更控制:大多数项目都会改变,软件开发也不例外。作者对此非常有经验。对变更的控制也是项目经理面临的一项具有挑战性的任务。
考虑到以上,整个软件开发基本不会有大问题。
如需进一步沟通,请留言或私信。
0