当前位置:文档之家› 工程软件开发之团队开发规范FB

工程软件开发之团队开发规范FB

水利水电工程XXXXX辅助决策支持系统团队开发规范XXXXX设计有限公司二XXX年十二月文档信息:文档变更历史:文档名称:审核结果:目录1团队组成 (1)1.1产品管理 (1)1.2项目管理 (2)1.3开发 (4)1.4测试 (5)1.5角色共享 (6)1.6开发小组 (7)1.7专家小组 (7)2开发流程 (8)2.1达成共识 (9)2.2完成项目计划 (9)2.3完成功能 (9)2.4稳定与发布 (10)3代码管理 (11)3.1编码规范 (11)3.2版本管理 (11)3.2.1 概述 (11)3.2.2 代码管理 (11)4附录:系统开发编码规范 (13)4.1类型级单位的命名 (13)4.1.1 类 (13)4.1.2 枚举和结构 (14)4.1.3 委派类型 (15)4.1.4 接口 (15)4.1.5 模块 (15)4.2方法和属性的命名 (15)4.2.1 方法 (15)4.2.2 属性 (16)4.2.3 事件 (16)4.3变量和常数 (16)4.4前缀 (18)4.4.1 对象 (18)4.4.2 变量/常量的范围 (19)4.5标签 (20)4.6名字空间 (20)4.7格式化 (21)4.7.1 块 (21)4.7.2 缩进 (21)4.7.3 流 (21)4.8注释 (22)4.8.1 注释规范 (22)4.8.2 类(包括Form等)、模块、组件、控件 (23)4.8.3 方法、函数、事件与属性 (24)4.9完整性 (24)4.10安全性 (24)1团队组成我们的整个软件开发团队由4种角色组成,分别为:•产品管理(Product Management)•项目管理(Program Management)•开发人员(Development)•测试人员(Test)各角色在团队的地位相当,各司其职。

各个角色的具体目标、职能以及责任在以下的小节中进行详述。

1.1产品管理(1)目标满足客户需求。

产品管理的目标就是满足客户需求。

一个成功的项目必须要能够满足客户和用户的要求。

即使项目达到了预算和时间的目标,只要未能满足客户需求,那这就是一个失败的项目。

首先必须认清和理解客户。

有时,使用方和投资方的目标需求并不完全相同,因此就需要清晰地区别和分析所有的需求。

(2)职能•市场▪推动市场和公关,以对目标客户发生效用▪突出产品与其他竞争对手的区别性,以利于竞争▪分发解决方案,以便用户能够容易地获得▪为用户提供支持,以使其无论在购买还是使用过程中都留下正面的印象•业务价值▪定义并维护项目的业务正确性▪定义并衡量业务价值的实现和评价•发展客户▪推动项目和解决方案的远景目标▪负责客户期望值和沟通•产品计划▪收集、分析客户和业务需求,并区分其优先级▪执行市场调查、市场开拓和竞争对手分析▪确定业务和成功的标准▪识别多目标的发布计划1.2项目管理(1)目标在项目的约束条件下完成解决方案。

整个团队的一个主要目标就是在项目的约束条件下完成项目。

项目的约束条件包括预算和进度等。

大部分项目会根据时间和资金的使用来衡量项目的结果。

为了实现这个目标,项目管理负责并推动进度表、功能集和预算资金。

他必须保证能够在正确的时间发布正确的项目或产品,保证正确理解了项目投资方的期望,并自始至终贯穿于项目执行过程中。

(2)职能•项目管理▪跟踪和管理预算资金▪管理控制进度表▪推动风险管理流程▪加强团队沟通和协调▪跟踪进度和报告项目状态▪管理资源分配•解决方案构建▪推动整体项目设计▪负责功能规范▪负责解决方案范围和重要决定•流程控制▪推动流程质量控制▪定义并推荐可改进处•管理服务▪实现项目的管理流程并提供支持▪提供管理服务以保证高效的团队运作1.3开发(1)目标按照功能规范说明、《软件开发需求分析报告》和《总体结构设计》的要求进行开发。

功能规范说明详细描述了整个团队将要提供给客户的交付物。

对整个团队来说,应该尽可能精确地按照功能规范说明来实现整个项目,因为功能规范说明可以看成是整个团队和客户之间所达成的共识。

开发人员必须按照客户需求和功能规范说明来构建整个解决方案。

同时,开发人员还需要为整个团队提供技术方面的咨询,这样在设计和技术选择时可以尽量减少开发风险。

开发人员提供较低层次的功能设计,并预估完成设计所需的时间。

(2)职能•技术咨询▪为团队提供技术咨询服务▪评估并验证所用技术▪积极参与功能规范说明的创建和审核▪定义开发标准•实现架构和设计▪提供针对解决方案的应用程序、数据和技术细节,以便将企业架构映射到解决方案架构的实现上▪负责并实现解决方案的逻辑和物理设计•应用程序开发▪根据设计规范编写代码以实现功能▪在开发过程中进行代码审核,并共享知识和经验▪在测试人员的帮助下,根据测试计划执行单元测试•架构开发▪为自动安装开发脚本▪开发安装文档1.4测试(1)目标在确认所有的产品质量问题都得到妥善处理后,批准产品发布。

所有的软件产品在发布时都存在着缺陷。

最重要的是,在发布前,必须清楚地认识和鉴别出这些问题,可以以问题的形式给出解决方法,或者是给出如何绕开该问题的文档记录。

宁愿对于已知的问题,提供了文档或解决方法,也不要存在一些未知的问题。

因为这些未知的问题,可能会带来不可预知的后果。

(2)职能•计划测试▪开发测试方法和计划▪参与设置质量标准▪开发测试说明•测试▪开发并维护自动测试案例、工具和脚本▪执行测试,以确定产品开发过程的状态▪负责定义构造流程•测试报告▪为团队提供与产品质量相关的数据▪跟踪所有缺陷,并保证在发布前得到妥善处理1.5角色共享尽管团队组成包含了4种角色,但并不意味着一个团队至少需要4个成员,也不意味着一个人只能承担一种角色,重要的是这4种角色必须在一个团队中体现。

一般情况下,团队成员常常共享角色。

在一些较小的团队中,不同的角色只能进行兼任。

角色共享有两条重要原则:一是开发组成员不能共享角色。

开发人员是项目的构建者,他们不应该从他们的主任务中分身。

如果对开发组成员要求额外的角色,往往会使得他们无法按时完成进度要求。

二是不要试图组合具有一定利益冲突的角色。

比如,产品管理和项目管理的利益具有冲突点,所以他们的角色不能组合。

产品管理注重满足客户需求,而项目管理主要关心在时间和预算的限度内完成项目。

如果这两个角色组合在一起,那么在需求发生变更时,可能会发生一些情况,诸如没有足够地考虑客户满意度而忽略该变更,或者是没考虑对项目的冲击盲目地接受变更。

让不同的团队成员担任这样的角色有助于确保每个方面得到相当的考虑和重视程度。

同样,这也适用于组合开发人员和测试人员。

1.6开发小组开发小组成员组成1.7专家小组专家小组负责系统开发过程中重要阶段的评审、导截流技术问题的解答和指导等。

主要目标是保证系统的理论先进性、更好的满足客户需求和保障开发质量。

2开发流程在开发过程中,采用多里程碑式的过程模型,如图1 所示。

而其中每一个循环均包含四个里程碑。

图1 多里程碑模型这四个里程碑组成的循环放大后如图2所示,称为“过程模型”。

图2 过程模型2.1达成共识•基本完成需求调研和分析(产品管理负责)•确定大方向和长中短期目标•所有角色都参与讨论并真正认同结论•产生的文档▪常见用户情景:覆盖80%以上功能▪前景:言简意赅地说明大方向,并有激励团队的作用2.2完成项目计划•编写详细的功能规范(项目管理)•在编程前想清楚所有功能流程,并引导用户明确需求•所有角色都参与审阅功能规范•制订开发计划和进度表(开发团队)•制订测试计划和进度表(测试团队)•分配资源(人力和预算)•形成项目综合计划和综合进度表2.3完成功能•开发人员分别完成自己的功能•进行版本合理的控制•对每一项可测试的功能进行测试,无需等待•通过测试用例,对功能进行完整和重复的检验•记录所有程序问题•实现解决缺陷的自动流程•按照综合进度表不断检查进度2.4稳定与发布•测试组全面地测试功能,包括性能和稳定性•开发组全力配合解决缺陷•监测质量情况•预测发布日期•专家会诊机制▪决定缺陷的优先度▪决定哪些缺陷可以在下个里程碑或版本中解决▪决定由谁解决某个缺陷3代码管理3.1编码规范请参看附录,系统开发编码规范。

3.2版本管理3.2.1概述版本控制有如下好处:•可以获得连续的受版本控制的项目,并保存不同版本的区别以作比较•能获得版本控制工具中保存的任何版本•能够把出错或误操作的最新版的项目恢复到正确的历史版本•获得历史版本的详细信息在开发过程中,核心程序员对版本进行控制、对系统源代码进行集中管理,并做好程序的备份和保密工作。

3.2.2代码管理核心程序员根据系统结构设计和详细设计,对系统实现的功能进行分解,将实现各功能的小模块分配给项目组的开发人员,并事先设计好各模块的接口。

开发人员根据接口要求进行编码。

编码完成后进行单元测试。

单元测试由开发人员完成。

单元测试后开发人员将本部分模块代码上交给核心程序员,核心程序员负责加入模块后的系统测试。

系统的全部代码由核心程序员管理,其它开发人员负责配合进行各模块的开发。

4附录:系统开发编码规范在开发中保持良好的编码规范是十分重要的。

程序开发人员应该严格遵循系统开发编码规范进行编码。

4.1类型级单位的命名4.1.1类在为类(class)命名前首先要知道它是什么,如果通过类名的提供的线索,你还是想不起这个类是什么的话,那么你的设计就还做的不够好。

超过三个词组成的混合名是容易造成系统各个实体间的混淆。

对于派生类的命名应该避免带其父类名,一个类的名字只与它自身有关,和它的父类叫什么无关。

1 类命名以Class声明的类,都必须以名词或名词短语命名,使用大写字母作为词的分隔,其他的字母均使用小写,名字的首字母使用大写不要使用下划线( _ )。

如:Class Indicator当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾,如:Class ColorSetExceptionClass CauseExceptionAttribute当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如:Class ScreenClassClass SystemClass当类只用于作为其他类的基类,根据情况,以Base结尾:MustInherit Class IndicatorBase如果定义的类是一个窗体,那么名字的前面或后面必须加Frm。

在本系统编码中,对于前处理和处理器模块使用的窗体,在名字的后面加后缀Frm,在后处理模块中使用的窗体在名字的前面加前缀Frm。

如果是Web窗体,必须加后缀Page:Class PrintFrm : Inherits Form ‘* Windows窗体Class StartPage : Inherits Page ‘* Web窗体2 类库命名目前命名空间正在越来越广泛的被采用,以避免不同厂商和团体类库间的类名冲突。

相关主题