软件开发流程是每个技术开发公司经常需要面对的问题,它在很大程度上决定了一个软件开发公司能不能做出好产品 ,并且是不是一种高效率的状态。下面就来简单对软件开发流程中的问题做些简单解析,方便开发者能够更加清晰开发中需要注意的事项,并找到符合自身的开发流程。
确定需要
软件开发的思想来源是丰富的。这些想法可以来自市场研究,包括潜在新客户的人口统计,现有客户,产品的销售前景,其他内部软件开发人员或创意第三方。软件产品的想法通常首先由营销人员评估经济可行性,以适应现有渠道分布,对现有产品线可能产生的影响,所需特征,并符合公司的营销目标。在营销评估阶段,评估成本和时间假设。在第一阶段早期就是否根据营销和开发人员产生的更详细信息,是否应进一步推进该项目作出决定。
工程专业的学生学习工程,很少接触金融或营销。营销学生学习营销,很少接触金融或工程。我们大多数人只在一个领域成为专家。更复杂的是,我们很少有人在劳动力中遇到跨学科的人,因此很少有人能够模仿。然而,软件产品规划对于开发成功至关重要,并且绝对需要多学科的知识。
由于软件开发可能涉及妥协或超出客户要求,软件开发项目可能会偏离较少的技术问题,如人力资源,风险管理,知识产权,预算,危机管理等。这些过程也可能导致业务开发与软件开发重叠的作用。
规划
规划是每项活动的具体需要做的事情,我们希望发现属于项目的事物。创建软件程序的一个重要任务是提取需求或需求分析。客户通常对他们想要的最终结果有一个抽象的概念,但不知道应该做什么软件。熟练且经验丰富的软件工程师此时会认识到不完整,含糊不清甚至相互矛盾的要求。经常演示实时代码可能有助于降低需求不正确的风险。
“虽然在需求阶段付出了很多努力来确保需求是完整和一致的,但很少是这种情况;在受到最小化新的或不断变化的需求影响时,将软件设计阶段作为最有影响力的阶段。具有一项挑战性的工作,因为它们影响未来或已经在开发的努力。
一旦从客户收集了一些要求,就应确定并明确说明对开发范围的情况。这通常称为范围文档。
设计
一旦建立了要求,就可以在软件设计文档中建立软件的设计。这涉及主要模块的初步或高级设计,以及部件如何配合在一起的整体图片(例如框图)。此时应该都需要语言,操作系统和硬件组件。然后创建详细或低级设计,可能将原型设计作为概念验证或确定要求。
实施,测试和记录
软件测试是软件开发过程中不可或缺的重要阶段。该过程的这一部分确保尽快识别缺陷。在一些通常称为测试驱动开发的过程中,可以在实现之前开发测试,并作为实现正确性的指导。
记录软件的内部设计为将来的维护和增强软件功能提供基础。这也可能包括编写API,无论是外部还是内部。开发团队选择的软件工程流程将确定需要多少内部文档(如果有的话)。计划驱动的模型(例如,瀑布)通常比敏捷模型产生更多的文档。
部署和维护
在对代码进行适当测试,批准发布,销售或以其他方式分发到生产环境之后,直接开始部署。这可能涉及安装,定制(例如通过将参数设置为客户的值),测试以及可能的延长评估期。
软件培训和支持非常重要,因为软件只有在正确使用时才有效。
维护和增强软件以应对新发现的故障或要求可能需要花费大量时间和精力,因为错过的要求可能迫使重新设计软件。
原文地址:http://blog.51cto.com/13843834/2145272