工程软件开发之团队开发规范FB_第1页
工程软件开发之团队开发规范FB_第2页
工程软件开发之团队开发规范FB_第3页
工程软件开发之团队开发规范FB_第4页
工程软件开发之团队开发规范FB_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、水利水电工程 XXXXX 辅助决策支持系统团队开发规范XXXXX 设计有限公司二 XXX 年十二月文档信息:文档名称水利水电工程XXXXX辅助决策支持系统团队开发规范描述该文档详细定义了团队开发的角色及职责、 项目开发 流程、开发过程控制的约定、协作开发的约定、代码 版本控制、交流机制等负责人XX状态最终版文档变更历史:时间修改人早节描述2008-8-29XXX所有章节创建文档初稿2008-12-10XXX所有章节修改文档名称:团队开发规.doc审核结果:审核人意见签名档目录1团队组成 11.1 产品管理1.1.2 项目管理2.1.3 开发3.1.4 测试4.1.5 角色共享5.1.6 开发小

2、组5.1.7 专家小组6.2开发流程 72.1 达成共识1.2.2 完成项目计划8.2.3 完成功能8.2.4 稳定与发布8.3代码管理 103.1 编码规范1.03.2 版本管理1.03.2.1 概述 103.2.2 代码管理 104附录:系统开发编码规范 114.1 类型级单位的命名 类 114.1.2 枚举和结构 124.1.3 委派类型 124.1.4 接口 124.1.5 模块 134.2 方法和属性的命名 134.2.1 方法 134.2.2 属性 134.2.3 事件 134.3 变量和常数.144.4 前缀 对象 154.4.2 变量/常量的范

3、围 154.5 标签1.64.6 名字空间 174.7 格式化174.7.1 块 174.7.2 缩进 174.7.3 流 174.8 注释 注释规范 184.8.2 类(包括Form 等)、模块、组件、控件 194.8.3 方法、函数、事件与属性 194.9 完整性204.10安全性201团队组成我们的整个软件开发团队由4种角色组成,分别为: 产品管理(Product Managemen) 项目管理(Program Managemen) 开发人员(Development)*测试人员(Test)各角色在团队的地位相当,各司其职。各个角色的具体目标、职能以及责任 在以下的小节中进

4、行详述。1.1 产品管理(1)目标满足客户需求。产品管理的目标就是满足客户需求。一个成功的项目必须要能够满足客户和用户的要求。即使项目达到了预算和时间的目标,只要未能满足客户需求,那这就是一个失败的项目。首先必须认清和理解客户。有时,使用方和投资方的目标 需求并不完全相同,因此就需要清晰地区别和分析所有的需求。职能市场推动市场和公关,以对目标客户发生效用突出产品与其他竞争对手的区别性,以利于竞争分发解决方案,以便用户能够容易地获得为用户提供支持,以使其无论在购买还是使用过程中都留下正面 的印象*业务价值定义并维护项目的业务正确性定义并衡量业务价值的实现和评价发展客户推动项目和解决方案的远景目标

5、负责客户期望值和沟通产品计划收集、分析客户和业务需求,并区分其优先级执行市场调查、市场开拓和竞争对手分析确定业务和成功的标准识别多目标的发布计划1.2 项目管理(1)目标在项目的约束条件下完成解决方案。整个团队的一个主要目标就是在项目的约束条件下完成项目。项目的约束条件包括预算和进度等。大部分项目会根据时间和资金的使用来衡量项目的结果。 为了实现这个目标,项目管理负责并推动进度表、功能集和预算资金。他必须保 证能够在正确的时间发布正确的项目或产品,保证正确理解了项目投资方的期 望,并自始至终贯穿于项目执行过程中。职能项目管理跟踪和管理预算资金管理控制进度表推动风险管理流程加强团队沟通和协调跟踪

6、进度和报告项目状态 管理资源分配解决方案构建推动整体项目设计负责功能规范负责解决方案范围和重要决定*流程控制推动流程质量控制定义并推荐可改进处管理服务实现项目的管理流程并提供支持提供管理服务以保证高效的团队运作1.3 开发(1)目标按照功能规范说明、软件开发需求分析报告和总体结构设计的要求 进行开发。功能规范说明详细描述了整个团队将要提供给客户的交付物。对整个团队来说,应该尽可能精确地按照功能规范说明来实现整个项目,因为功能规范说明可以看成是整个团队和客户之间所达成的共识。 开发人员必须按照客户需求和功能 规范说明来构建整个解决方案。同时,开发人员还需要为整个团队提供技术方面 的咨询,这样在设

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

8、缺陷。最重要的是,在发布前,必须清楚 地认识和鉴别出这些问题,可以以问题的形式给出解决方法,或者是给出如何绕 开该问题的文档记录。宁愿对于已知的问题,提供了文档或解决方法,也不要存 在一些未知的问题。因为这些未知的问题,可能会带来不可预知的后果。(2)职能计划测试开发测试方法和计划参与设置质量标准开发测试说明测试开发并维护自动测试案例、工具和脚本执行测试,以确定产品开发过程的状态负责定义构造流程测试报告为团队提供与产品质量相关的数据跟踪所有缺陷,并保证在发布前得到妥善处理1.5 角色共享尽管团队组成包含了 4种角色,但并不意味着一个团队至少需要 4个成员, 也不意味着一个人只能承担一种角色,重

9、要的是这4种角色必须在一个团队中体 现。一般情况下,团队成员常常共享角色。在一些较小的团队中,不同的角色只 能进行兼任。角色共享有两条重要原则:一是开发组成员不能共享角色。开发人员是项目的构建者,他们不应该从他 们的主任务中分身。如果对开发组成员要求额外的角色, 往往会使得他们无法按 时完成进度要求。二是不要试图组合具有一定利益冲突的角色。比如,产品管理和项目管理的 利益具有冲突点,所以他们的角色不能组合。产品管理注重满足客户需求,而项 目管理主要关心在时间和预算的限度内完成项目。如果这两个角色组合在一起, 那么在需求发生变更时,可能会发生一些情况,诸如没有足够地考虑客户满意度 而忽略该变更,

10、或者是没考虑对项目的冲击盲目地接受变更。 让不同的团队成员 担任这样的角色有助于确保每个方面得到相当的考虑和重视程度。同样,这也适用于组合开发人员和测试人员。1.6 开发小组开发小组成员组成姓名性别年龄职务/职称业务专业本项目分工所在单位1.7 专家小组姓名性别年龄职务/职称业务专业本项目分工所在单位专家小组负责系统开发过程中重要阶段的评审、导截流技术问题的解答和指导等。主要目标是保证系统的理论先进性、更好的满足客户需求和保障开发质量2开发流程在开发过程中,采用多里程碑式的过程模型,如图1所示。而其中每一个循环均包含四个里程碑。这四个里程碑组成的循环放大后如图 2所示,称为过程模型图2过程模型

11、2.1 达成共识基本完成需求调研和分析(产品管理负责)确定大方向和长中短期目标所有角色都参与讨论并真正认同结论*产生的文档常见用户情景:覆盖80%以上功能前景:言简意赅地说明大方向,并有激励团队的作用2.2 完成项目计划*编写详细的功能规范(项目管理)在编程前想清楚所有功能流程,并引导用户明确需求所有角色都参与审阅功能规范制订开发计划和进度表(开发团队)制订测试计划和进度表(测试团队)分配资源(人力和预算)*形成项目综合计划和综合进度表2.3 完成功能开发人员分别完成自己的功能进行版本合理的控制*对每一项可测试的功能进行测试,无需等待*通过测试用例,对功能进行完整和重复的检验记录所有程序问题实

12、现解决缺陷的自动流程按照综合进度表不断检查进度2.4 稳定与发布测试组全面地测试功能,包括性能和稳定性开发组全力配合解决缺陷*监测质量情况预测发布日期专家会诊机制决定缺陷的优先度决定哪些缺陷可以在下个里程碑或版本中解决决定由谁解决某个缺陷3代码管理3.1 编码规范请参看附录,系统开发编码规范。3.2 版本管理321概述版本控制有如下好处:可以获得连续的受版本控制的项目,并保存不同版本的区别以作比较*能获得版本控制工具中保存的任何版本能够把出错或误操作的最新版的项目恢复到正确的历史版本获得历史版本的详细信息在开发过程中,核心程序员对版本进行控制、对系统源代码进行集中管理, 并做好程序的备份和保密

13、工作。3.2.2 代码管理核心程序员根据系统结构设计和详细设计,对系统实现的功能进行分解,将 实现各功能的小模块分配给项目组的开发人员,并事先设计好各模块的接口。开发人员根据接口要求进行编码。编码完成后进行单元测试。单元测试由开发人员 完成。单元测试后开发人员将本部分模块代码上交给核心程序员,核心程序员负责加入模块后的系统测试。系统的全部代码由核心程序员管理, 其它开发人员负责配合进行各模块的开 发。4附录:系统开发编码规范程序开发人员应该严格遵循系在开发中保持良好的编码规范是十分重要的。 统开发编码规范进行编码。4.1 类型级单位的命名4.1.1 类在为类(class)命名前首先要知道它是什

14、么,如果通过类名的提供的线索, 你还是想不起这个类是什么的话,那么你的设计就还做的不够好。超过三个词组成的混合名是容易造成系统各个实体间的混淆。对于派生类的命名应该避免带其 父类名,一个类的名字只与它自身有关,和它的父类叫什么无关。1类命名以Class声明的类,都必须以名词或名词短语命名,使用大写字母作为词的 分隔,其他的字母均使用小写,名字的首字母使用大写不要使用下划线(_)。如:Class In dicator当类是一个特性(Attribute )时,以Attribute结尾,当类是一个异常(Exception) 时,以 Exception结尾,如:Class ColorSetExcept

15、i onClass CauseExceptio nAttribute当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如:Class Scree nClassClass SystemClass当类只用于作为其他类的基类,根据情况,以Base结尾:MustI nherit Class In dicatorBase如果定义的类是一个窗体,那么名字的前面或后面必须加 Frm。在本系统编 码中,对于前处理和处理器模块使用的窗体,在名字的后面加后缀Frm,在后处理模块中使用的窗体在名字的前面加前缀Frm。如果是Web窗体,必须加后缀PageClass PrintFr

16、m : Inherits Form,* Windows 窗体Class StartPage : Inherits Page,* Web 窗体2类库命名目前命名空间正在越来越广泛的被采用, 以避免不同厂商和团体类库间的类 名冲突。当未采用命名空间的时候,为了避免类名冲突,一般的做法是在类名前 加上独特的前缀,两个字符就可以了,当然多用一些会更好。例如:Joh n Joh nso n的数据结构类库可以用Jj做为前缀,如下:class JjLin kList4.1.2 枚举和结构同样必须以名词或名词短语命名。最好体现枚举或结构的特点,如:Enum ColorButt ons”以复数结尾,表明这是一个

17、枚举Structure CustomerInfoRecord ”以 Record结尾,表明这是一个结构体4.1.3 委派类型普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能:Delegate Sub DataSeeker (ByVai SeekStri ng As Stri ng)用于事件处理的委派类型,必须以 Eve ntHa ndler结尾,如:Delegate Sub DataCha ngedEve ntHa ndler (ByVaSe nder As Object, ByVal e AsDataCha ngedEve ntArgs)4.1.4 接口与其他类型不同,接口必须要

18、由I作为前缀,并用形容词命名,突出表现实 现接口的类将具有什么能力:In terface ISortable4.1.5 模块模块不是类型,他的名称除了必须以名词命名外,必须加以后缀Module:Module SharedFu nctio nsModule上述所有规则的共同特点是,每个组成名称的词语都必须是大写开头,禁止 完全大写或小写的名称。4.2方法和属性的命名4.2.1 方法最好采用与类命名一致的规则,无论是函数还是子程序,方法都必须以动词 或动词短语命名。无需区分函数和子程序,也无需指明返回类型。Sub Ope n (ByVai Comma ndStri ng As Stri ng)Fu

19、n ction SetCopyNumber (ByVai CopyNumber As In teger)参数需要指明ByVai还是ByRef,这一点写起来会让程序变长,但非常必要。 如果没有特别情况,都使用 ByVai。参数的命名方法,参考后面 变量的命名方 法”需要重载的方法,一般不写 Overloads,根据需要编写重载方法。4.2.2 属性原则上字段(Field)是不能公开的,要访问字段的值,一般使用属性。属性 以简洁清晰的名词命名:Property Concen trati on As Si ngleProperty Customer As CustomerTypes4.2.3 事件事

20、件是特殊的属性,只能在事件处理上下文中使用。命名的原则一般是动词 或动词的分词,通过时态表明事件发生的时间:Eve nt Click As ClickEve ntHa ndlerEvent ColorCha nged As ColorCha ngedEve ntHa ngler4.3 变量和常数常数以表明常数意义的名词命名,一般不区分常数的类型:Const DefaultCo ncen trati on As Sin gle=0.01在严格要求的代码中,常数以 c_开头,如c_DefaultConeentration,但最好不要用它,它会带来输入困难。普通类型的变量,只要用有意义的名字命名即可

21、, 不可使用简称和无意义的名称诸如 A,x1等,下面给出了良好的例子:Dim In dex As In tegerDim NextMo nthExpe nditure As DecimalDim CustomerName As Stri ng不能起太长的名字,应该尽量简洁,如下面的例子:Dim VariableUsedToStoreSystemlnformation As String * 太复杂了Dim Systeml nformation As Stri ng* 正确,简单明了Dim sys Info As Stri ng*错误,过于简单特殊情况可以考虑一个字母的变量:Dim g As G

22、raphic对于控件,应该指明控件的类型,方法是直接在变量后面加以类名:Frie nd WithEve nts NextPageButton As Button * 按钮Friend WithEvents ColorChoicerPanel As Panel ”* 面版Frie nd WithEve nts CardFileOpe nDialog As FileOpe nDialog * 文件打开对 话框等等,无需规定某种类型的变量的前缀,只需把类型写在后面就行了,试对 比下列代码:btnCan cel.Text = &Ca ncelCan celButt on. Text = &Can ce

23、l显然后者更能使阅读者明白变量的类型是一个按钮4.4 前缀441 对象1标准对象 名称 前缀 例子 说明System.Array arr arrUsers 用户集合System.Boolean bln bl nDoesUserExist 用户是否存在System.Byte byt bytStreamCo ntent 字节流内容System.Char chr chrKeyPress 按键System.DateTime dte dteCreatedDateTime创建日期System.Decimal dec decYearlySaleQuota年度销售额System.Double dbl dblT

24、otalPrice 总金额Syste m.ln terger int in tMessages 消息数System.Object obj objExternalFunction 夕卜部功能System.Si ngle sng sngFini shRate 完成率System.Stri ng str strLogi nN ame 登陆名称System.Excepti on exc excRet 错误System.E num enm en mUserState用 户状态Structure stu stuEmployees 员工类型System.Data.SqlClie nt.SqlCo nn ec

25、tion cnn cnn Database数 据库连接System.Data.SqlClie nt.SqlDataReader sdr sdrUserDat 用户数据读取器 2自定义对象我们规定应该根据自定义对象的名称来确定该对象类型的前缀,例子如下对象:SysSet前缀:ss例子:ssSafety4.4.2 变量/常量的范围根据变量与常量的生存周期,我们应该定义不同的生存周期前缀以示区别,以便我们清楚该变量/常量的范围。1类、模块、组件、控件我们规定在类、模块、组件、控件范围内,变量的生存周期前缀应该添加“ m_ (Module模块)。例子如下:名称 前缀 例子 说明System.Array

26、 m_arr m_arrUsers 用户集合System.Boolea n m_bln m_bln DoesUserExist 用户是否存在System.Byte m_byt m_bytStreamCo ntent 字节流内容System.Char m_chr m_chrKeyPress按键System.DateTime m_dte m_dteCreatedDateTime创建日期System.Decimal m_dec m_decYearlySaleQuota年度销售额System.Double m_dbl m_dblTotalPrice 总金额Syste m.ln terger mnt m

27、n tMessages消 息数System.Object m_obj m_objExter nalF unction 夕卜部功能System.Si ngle m_sng m_sn gFi nishRate完成率System.Stri ng m_str m_strLog inN ame 登陆名称2过程、函数、属性、事件我们规定在过程、函数、属性、事件范围内,变量的生存周期前缀应该添加“ o_”w ner私有)。例子如下:名称 前缀 例子 说明System.Array o_arr o_arrUsers 用户集合System.Boolea n o_bln o_bln DoesUserExist 用户

28、是否存在System.Byte o_byt o_bytStreamCo nte nt 字节流内容System.Char o_chr o_chrKeyPress按键System.DateTime o_dte o_dteCreatedDateTimiJ 建日期System.Decimal o_dec o_decYearlySaleQuot奔度销售额System.Double o_dbl o_dblTotalPrice 总金额4.5 标签标签就是用于Goto跳转的代码标识,由于Goto并不推荐使用,所以标签的 使用也比较苛刻。标签必须全部大写,中间的空格用下划线_代替,而且应该以一 开头,比如:_A

29、_LABEL_EXAMPLE :如此定义标签是为了与其他代码元素充分区别。4.6 名字空间通常,一个工程使用一个名字空间,通常不需要用Namespace语句,而是在工程选项的“ Root Namespac中指定,使用根名字空间可以使代码更加整齐,容 易修改,这一点是VB十足的优点。名字空间的语法是:公司名产品名.组件名的复数女口: Namespace COM.NETNamespace COM.File.lO.Files随便起一个名字空间的名字绝对不是一个好主意,一定要遵守上述规定。4.7 格式化良好的格式化代码对我们的浏览与维护有相当的好处。4.7.1 块.NET提供了 #Region.#End Region块控制。我们应该根据代码所实现的功 能分类并以块组织起来。4.7.2 缩进每个层次直接都应该以Tab进行缩进,而不是Space空格键)。4.7.3 流每个方法、函数、属性、事件应该有且只有一个入口和一个出口。如果遇见 多层嵌套而需要直接跳出的时候,请使用局部Boolean或者Integer变量来标示用以多层跳出。如:Private Function TestForReturn() As BooleanDim o_bln Ret As Boolea n=FalseD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论