3.5 开发人员技术结构
宏观上讲,软件开发机构基本可分为二种角色,管理角色和技术角色。不同角色各有其不同的发展方向,如图7所示。
不论是走技术路线还是管理路线,不存在那种角色地位更高的问题。高级架构设计师与部门经理具有同等的地位与待遇。项目管理者联盟 项目管理者联盟 4. 软件开发的阶段划分及目标club.mypm.net 软件开发进行阶段划分主要有以下三方面优点:项目管理者联盟 1) 有利于软件质量控制;项目管理者联盟 2) 便于项目进度控制与管理;项目管理者联盟 3) 有利于项目成本费用控制;项目管理者联盟 4.1 软件开发的阶段划分项目管理者联盟 虽然软件开发与工程设计有其相似之处,但由于其所处的领域不同,发展历史与人文环境也有一定的差别,完全照搬工程设计的管理模式也存在一些弊端。下面就国外流行的软件开发模式与工程设计理论及原始的软件开发做以简单比较,见图8。

原始的软件开发模式很是简单,有些项目连需求分析都不完整,软件测试只是相当于模块集成一级的测试,没有规范的软件测试。软件质量取决于编程者个人的技术水平,质量无法保证,也很难控制。在满足用户需求方面取决于编程者个人的理解,软件交付后经常发生大面积的修改。项目似乎完成得很快,交付后大面积的修改经常导致延误工期,修改后的软件缺乏必要的测试手段,往往导致极大的售后服务支持成本。造成项目表面赢利、实际亏损的局面。项目管理者联盟 软件工程理论指导下的软件开发管理模式也存在一定的问题,那就是有些环节的可操作性较差,主要表现在需求分析到总体设计这个环节。需求分析是文档性的描述,一般是软件开发人员对用户需求的一种理解,这种文字描述一般很难精确可视地展现未来软件的情况,而用户也很难说清楚自己的需求,这就使得用户很难鉴别需求分析的精确性。往往导致软件交付后的大量修改。有一篇“Client / Server软件开发常犯错误”的文章说得好,“用户不知自己需要什么样的系统,但知道不要什么样的系统”。项目管理者联盟 为避免软件开发中需求分析到总体设计这个环节的歧异性问题,目前,国际流行的软件开发模式中增加了FS+UI(功能规范和用户界面)这个环节,这个环节不但解决了用户在需求分析理解上的困难,同时也解决了软件开发过程各种角色人员的并行工作问题,便于软件开发工期的缩短,有利软件开发质量与成本的控制 [ FS+UI(功能规范和用户界面)见后面章节 ]。PgMp.mypm.net 4.2 软件开发各阶段目标项目经理博客 以下就软件开发阶段划分的各阶段的任务与目标做以简单描述,这是软件公司进行质量控制的基础。项目管理者联盟 1) 可行性分析 www.mypm.net 可行性分析是软件项目立项的必要阶段,对于项目型软件开发,可行性分析一般由用户自行完成,软件公司基本在技术上给予必要的支持。对于产品型软件开发,可行性分析是非常重要的一环,产品采用的技术、市场定位与销售策略等直接关系着产品的生存与发展。转自项目管理者联盟 可行性分析基本包括如下几个方面的内容,
A. 项目定义:项目定义主要是对产品定位有一个大致的描述,钩画出该软件产品的运行环境、产品功能、用户特征以及制约因数进行全面的描述,以便下一步工作的展开。项目管理者联盟 B. 技术分析: 此处的技术主要包括软件的开发环境与运行环境所涉及的各方面技术,在此应对这些技术的发展状况,成熟情况及未来的技术走势应有细致的阐述。 项目管理培训 C. 市场分析: 包括国内外行业发展现状、市场格局、发展趋势,在市场容量统计数据的基础上,推测我们产品可能的市场占有率及销售情况。项目管理者联盟 D. 产品策略: 产品策略包括产品的技术策略与产品的市场策略。转自项目管理者联盟 E. 投资与回报分析:项目投资总额、项目成本核算、项目收益、投资回报等。PgMp.mypm.net F. 已有资源分析:包括资金资源、人力资源、技术资源等的分析。项目管理者联盟 G. 其它应考虑的因素项目管理者联盟 2) 需求分析项目管理者联盟 需求分析是软件项目正式实施开始的第一个阶段,需求分析应该遵循可行性分析确定的基调,包括技术路线、产品基本功能、产品运行环境及市场定位。需求分析主要应完成对用户应用流程的描述,即完成商业逻辑分析。并根据商业逻辑的需要确定软件的功能列表及描述。club.mypm.net 3) FS+UI项目管理者联盟 A. 总体描述,包括应用平台及应用限制,...项目管理者联盟 B. 功能列表bbs.mypm.net C. 用户界面项目管理者联盟 FS+UI的合格与否取决于能否完成以下二方面的工作。项目管理者联盟 ① 完成用户手册的编写!bbs.mypm.net ② 准备测试计划、测试用例及确定验收标准!www.mypm.net FS+UI是产品管理部门与软件开发部门的接口,对于项目型开发是软件开发商与用户责任划分的重要依据,FS+UI不同于需求分析,它提供给用户的是一个清晰可见的用户界面与完整的功能说明,方便用户的理解与确认。软件开发据此进行下一步工作就有了坚实的基础,避免软件交付后的大量修改工作,有利于软件质量与进度的控制。同时,便于软件开发并行工作的展开。转自项目管理者联盟 FS+UI是软件总体设计及软件α测试的基础。pmp.mypm.net 4) 总体设计项目管理者联盟 总体设计的依据是FS+UI文档,其目的是根据FS+UI要求,依据具体采用的开发工具与技术平台确定软件实现的对象关系与数据库结构。并非项目组每个成员均参加总体设计,一般来讲,一般中小项目总体设计为一到二个人,中大型项目一般为一个总体设计小组,由项目总设计师负责将项目进行分解为可操作的大小,交由不同设计小组完成相关功能的总体设计,总设计师负责协调各子项之间的协调关系,从而完成大型的总体设计。项目管理者联盟 总体设计设计深度情况直接影响下一步的详细设计。过细的总体设计也是不必要的,少量的人员进行过细的设计必然影响整个项目的设计周期,而过粗的总体设计当然也不利于详细设计设计任务的分配与设计展开。www.mypm.net 总体设计是软件详细设计及软件集成测试的基础。training.mypm.net 5) 详细设计club.mypm.net 详细设计是总体设计的继续,主要目的是完成总体设计完成的对象内部的商业逻辑的实现设计,在总体设计完成后可以将不同的设计对象交由不同的设计人员来完成。原则上讲,在开始软件编码之前应完成所有的设计细节,避免在编码中进行设计工作。pmp.mypm.net 详细设计是编码及软件模块测试的基础。项目管理者联盟 6) 编码项目经理圈子 编码是软件详细设计的一种再现,编码中最重要的是要遵从相关开发工具的设计规范及数据库设计规范,另外,养成一个良好的编程习惯是一个软件公司和软件编程人员最基本的职业素质。项目管理者联盟 对于软件应用可靠性要求严格的案例,所有软件模块必须通过模块测试,对一般应用软件中的重要模块也应进行模块测试。项目管理者联盟 7) 集成pmp.mypm.net 集成是软件开发中重要的一环,集成测试的依据是软件的总体设计。如果缺乏前期的模块测试,必然会导致集成时间的加长,同时也会加重后期的α测试及问题处理的工作量。项目管理培训 8) α测试 α测试是在软件集成结束后软件开发进入的下一个环节,它标志着软件开发从设计级段进入软件测试阶段。一般情况下,软件开发从设计进入测试是通过CMO来完成这一过程。项目管理者联盟 为完成α测试,测试部门一般包括如下几个方面的工作。项目管理者联盟 ① 编制测试计划项目管理者联盟 ② 编制测试用例项目管理者联盟
|