软件开发管理原则

作者:禅与计算机程序设计艺术

1.简介

软件开发管理原则(SDM)是指用来指导软件开发过程中的各种活动进行协调、规范和控制的一系列规则或准则。SDM是建立在计算机科学、管理学、经济学、社会学等多个学科之上的,是为了促进软件开发的顺利进行而制定的一些最佳实践、指导方针和一般化的行为准则。

很多企业都提倡采用ITIL作为其IT服务的标准和方法。ITIL通过管理学、法律学、经济学、工程学、计算机科学等学科所提供的方法论以及工具手段,将企业的IT服务与业务相结合,帮助客户提升效率并降低成本。这些原则中的原则已经成为许多公司运用 ITIL 方法改善其 IT 服务质量和整体运行效率的共识。

但是,如果我们把软件开发过程视为ITIL服务的实施层面上,那么,SDM正好适用于软件开发的不同阶段。SDM提供了一套可以反映软件开发领域中主要活动的管理原则,包括需求分析、设计开发、测试验证、维护支持等,并对每种活动给出相应的措施与方法。

因此,通过应用SDM,我们可以帮助软件开发团队更有效地进行工作,确保软件开发过程的可控性、可追溯性以及高质量的输出产品。

本文将详细阐述软件开发管理原则的内容及其作用。希望能够启发读者产生更多的思考。

2.核心概念和术语

2.1 目标定义

  • 目标(objective):指某一项目或组织对一个特定的输出结果、行为或影响程度,所要达到的最终目的或期望。目标在软件开发中往往与“业务目标”或者“营收目标”相关联。例如,针对某一特定功能或系统,公司需要实现其持续运行,同时满足用户的需求。

  • 功能目标:软件开发中定义的目标一般是软件的功能或性能,要求完成什么功能或达到什么水平。例如,针对销售系统的新功能需求,目标可能是增加单个订单的处理速度,缩短响应时间;针对产品推荐系统,目标可能是增加推荐的准确性、覆盖范围,优化用户体验。

  • 效益目标:一般来说,效益目标指的是指明某件事是否具有商业价值或能够带来经济利益的目标。例如,为了提升营收,公司可能会设定营收目标。为了提高竞争力,公司可能会设置竞争优势目标。软件开发中也存在效益目标,但其通常会以产品的市场份额或市场竞争力为主要衡量指标。

2.2 五级产品生命周期模型

  • 计划(Planning):计划阶段规划出某项产品的开发方向、任务列表、开发人员角色、交付日期、资源分配、进度管理计划等。计划阶段一般由产品经理负责。

  • 细化(Definition):细化阶段确定产品的功能、性能和使用场景。这一阶段涉及产品设计师参与,通常包括业务分析、需求分析、风险评估、功能设计、数据库设计、界面设计、安全设计、性能设计、兼容性设计等。

  • 开发(Development):开发阶段实际编码、调试和测试产品,包括编码、单元测试、集成测试、系统测试、用户试用等。这一阶段一般由开发人员和测试人员共同参与,并采用敏捷开发方式。

  • 测试(Testing):测试阶段负责产品的验收测试、部署测试和回归测试。该阶段需要向用户发布测试版,然后收集反馈意见,进一步完善产品。

  • 维护(Maintenance and Support):维护阶段是维持产品正常运行所需的各类活动。维护阶段通常由产品经理、开发人员、测试人员和运维人员共同参与,包括补丁更新、错误修复、故障排查、性能调优、新版本发布、性能监测等。

2.3 生命周期阶段

软件开发的生命周期可以分为以下几类:

  1. 初始阶段(Inception Phase):产品刚刚被确定,软件的开发就开始了,不过还没有进入编码阶段。
  2. 设计阶段(Elaboration Phase):该阶段涉及产品的功能、性能和使用场景的设计,也是编写产品文档的阶段。
  3. 编码阶段(Construction Phase):该阶段是软件开发人员开始编写代码的阶段,也是质量保证的关键时期。
  4. 测试阶段(Transition Phase):这个阶段涉及对软件的测试,评审,修复漏洞和缺陷。
  5. 维护阶段(Operational Phase):该阶段即使软件处于正常运行状态,仍需要不断维护和更新软件,直至其停机或终止运行。

2.4 SDM的六项原则

SDM认为,软件开发管理应遵循以下六项原则:

  1. 用户需求优先:SDM认为,用户需求是最重要的因素,任何时候都是先考虑用户需求再开发软件。因此,SDM着重强调需求分析和设计阶段的工作重点,以满足用户的真实需求。

  2. 质量保证:SDM认为,软件质量是软件产品质量的基石,为每个环节引入质量保证和质量控制的机制对于软件质量是至关重要的。因此,SDM提倡在整个生命周期中建立起质量保证机制。

  3. 可行性承诺:SDM认为,所有产品开发活动均须经过可行性承诺,才能实现开发目标,否则会造成资源浪费。可行性承诺分为静态可行性承诺和动态可行性承诺。静态可行性承诺要求项目从立项到投产前必须完成准备和工程合同签署,确保项目进展按照计划进行,满足质量控制要求;动态可行性承诺除了静态可行性承诺外,还需建立起基于项目进展情况的动态可行性审核机制,确保项目开发过程具备生命力。

  4. 技术选择:SDM认为,选择最适合当前开发状况的技术对软件开发具有重要意义,因为只有技术优势才能满足用户需求和项目约束。因此,SDM倾向于选择符合国际通用标准或行业标准的技术平台。

  5. 项目管理能力:SDM认为,项目管理能力是SDM的核心优势,它指导和支持软件开发人员在产品生命周期内积极主动地开展工作,确保产品的开发进展顺利、高质量地完成。项目管理能力包括组织管理、流程管理、沟通协作、质量保证和风险管理等。

  6. 模块化开发:SDM认为,模块化开发是软件开发的主要模式,它能够降低软件开发成本,提高软件开发效率。SDM鼓励开发小型模块,逐步构建完整的软件产品,尽量减少耦合度和依赖关系,提高可维护性和可移植性。

3.需求分析

3.1 产品范围

产品范围(Product Scope)定义了软件应该解决什么问题,在哪些方面进行改进。产品范围是软件开发中必不可少的环节,它是需求分析和设计的基础。产品范围一般由产品负责人、项目经理或其他相关人员指定,并提交给软件开发团队。产品范围的制定一般遵循以下几个原则:

  1. 整体把握:产品范围应该覆盖软件的所有功能、特性以及它们之间的关系。

  2. 分清界限:产品范围应该清楚地界定出核心业务功能,并明确定义边界。

  3. 没有限制:产品范围不能太模糊,不能太宽泛,不能违背开发目标。

  4. 有实际案例:产品范围需要具体描述业务功能或操作流程,并且需要与软件的实际情况契合。

3.2 客户需求

客户需求是与客户密切相关的,软件开发人员需要充分了解客户的真实需求,以便为他们提供符合其要求的软件产品。客户需求一般可以通过以下几种途径获取:

  1. 概念确认:顾客可能通过概念图、仿真或实体产品了解自己想要什么样的产品。

  2. 意向邀约:顾客可能会接受代表公司的意向邀约,询问公司想要什么样的产品或服务。

  3. 内部需求调研:软件开发人员可以在内部进行需求调研,询问与公司有关的需求。

  4. 外部拜访:软件开发人员也可以拜访顾客,了解顾客对公司的需求。

  5. 竞品分析:软件开发人员可以使用竞品来分析顾客的需求,找出产品的差距。

3.3 市场策略

市场策略是根据市场环境及竞争对手的产品,对产品的定位和定位策略。在这个过程中,软件开发人员应该密切关注市场的变化,比如竞争对手的产品出现新市场或机会,以及技术的革新等,并充分利用这些变化,以提升软件产品的竞争力。

  1. 清晰市场定位:软件开发人员应该清晰地阐述自己的产品定位及盈利模式,以及面临的竞争压力和机会。

  2. 提供有竞争力的市场策略:软件开发人员应该专注于提供有竞争力的产品策略,并在市场需求的驱动下提升产品的竞争力。

  3. 找到正确的目标市场:软件开发人员应该选择能满足顾客需求且有市场空间的市场。

3.4 竞品分析

竞品分析是一种比较和分析的活动,目的是发现软件产品和服务与竞争对手产品和服务之间有哪些不同,从而确定软件产品和服务应该解决的问题、如何解决问题、以及取得成功的标准。

  1. 选择正确的竞品:软件开发人员应该选择一款已经证明足够优秀的产品或服务,而不是选择一种没有竞争力的产品或服务。

  2. 了解竞品优点和缺点:软件开发人员应该研究竞品,弄清楚它的优势和弱点,以及为何这么做。

  3. 识别关键问题:软件开发人员应该识别和分析竞品间的关键差异,提出其原因及对解决这些差异有何建议。

3.5 数据分析

数据分析是一种收集、整理、分析和呈现数据的过程。数据分析旨在识别、分析、预测和理解客户及其行为的数据,并基于这些数据制定决策。数据分析一般包括统计分析、历史研究、分析师调查、访谈记录、观察记录等。

  1. 客户画像:软件开发人员可以收集数据,通过对客户的调查、访谈、问卷、日志、观察等,了解顾客的特征、心理状况、喜好、偏好等。

  2. 客户行为分析:软件开发人员可以分析顾客在使用软件时的行为习惯,并通过分析数据发现客户为什么使用软件,以及使用哪些功能,从而改进软件产品或服务。

  3. 市场趋势分析:软件开发人员可以收集数据,分析市场的发展趋势、市场份额,以及潜在的新兴市场。

3.6 产品蓝图

产品蓝图是软件开发过程中制订的详细文档,用于阐述软件产品的功能、结构、接口、性能、兼容性、安全性、设计原则、用户手册、安装指南等信息。产品蓝图能够帮助软件开发人员和用户快速了解软件的概览,以及了解软件的目标、功能和如何使用软件。产品蓝图一般包括以下几个方面:

  1. 功能介绍:产品蓝图应该清晰地描述软件的功能、特性和目标,并与客户分享。

  2. 目标受众:产品蓝图应该向目标受众介绍软件的功能、特性、性能、安装指南、用户手册、注意事项等。

  3. 兼容性说明:产品蓝图应该说明软件的兼容性范围,并说明软件可能遇到的兼容性问题。

  4. 使用教程:产品蓝图应该提供用户入门使用的教程,介绍如何使用软件、如何报告软件bugs或缺陷。

  5. 操作指南:产品蓝图应该提供详细的操作指南,并配有操作示意图。

猜你喜欢

转载自blog.csdn.net/universsky2015/article/details/133446414