版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.net项目开发管理,2011-6-4,2020/8/2,1,Agent议程,开发过程 团队组成 开发工具 沟通 文档模板 开发规范,2020/8/2,2,软件开发过程,RUP,2020/8/2,3,软件产品开发过程.NET,Project Plans Approved 项目计划确定,Scope Complete 开发完成,Release ReadinessApproved 产品成型,DeploymentComplete 部署完成,Vision/Scope Approved 规划和范围确定,MSF,2020/8/2,4,持续改进,Time,Functionality,通过分解成小的迭代周期将大
2、项目的实施风险降低,并提高用户体验,Version 1,2020/8/2,5,开发过程应用,2020/8/2,6,团队模型,Communication,2020/8/2,7,团队建设,角色合并规则,P Possible,U Unlikely,N Not Recommended,产品经理,项目经理,开发,测试,用户体验 界面设计,配置管理,产品经理,项目经理,开发,测试,用户体验 界面设计,配置管理,2020/8/2,8,角色说明,2020/8/2,9,开发环境和工具,2020/8/2,10,Visual Studio Team System,Visual Studio Team Suite,M
3、SF 软件开发过程指导,Visual Studio Team Foundation Server,VisualStudio行业伙伴,SoftwareArchitects,SoftwareDevelopers,SoftwareTesters,VisualStudioTeamExplorer,应用建模,基础架构和部署模型,代码分析,性能调优,安全分析,Performance Testing,Manual Testing,Test Case Management,Visual Studio Professional Edition,变更管理,工作项跟踪,报表,项目站点,集成服务,项目管理,Load
4、Test Agent,Visio and UML Modeling,类模型,单元测试,代码覆盖率,2020/8/2,11,开发环境,2020/8/2,12,开发流程,业务分析,项目经理,开发,测试,使用者,需求变更,用例,非功能性需求,Bugs,任务,产品缺陷,2020/8/2,13,沟通管理,日常沟通 工作报告 工作会议 阶段沟通 Kick off 项目启动 Tollgate review 阶段回顾,2020/8/2,14,日常沟通,工作周报 总结本周工作 安排计划下周工作 工作进度评估 工作问题总结 解决方案,2020/8/2,15,日常沟通,工作会议 会议议题 参与人员、时间、地点 议程
5、 结论 实施计划,2020/8/2,16,阶段沟通,阶段沟通点,2020/8/2,17,项目Kickoff 会议关注重点,项目的目标和范围 介绍项目的背景 明确项目目标 明确项目的范围和递交件 实施方案综述 系统架构介绍 项目的组织和时间计划 项目组织结构设置及角色职责 项目实施时间计划和里程碑 项目管理综述 沟通管理 问题管理 风险管理:风险管理的方法及当前存在的风险及其缓解措施 变更管理 项目领导总结发言,2020/8/2,18,项目Kickoff 会议关注重点 (续),项目组织结构定义说明,Microsoft,SGM,PM Wu Weihua,Configuration Manager
6、Wu Weihua,2020/8/2,19,Plan &Define Tollgate Review 关注重点,项目实施情况介绍 (本阶段完成的主要成果) 需求开发结果介绍 用户需求和非功能性需求是否与当初SOW有差异?如何处理? AD & Solution 介绍,AD和SRS中非功能需求中必须提供本项目实际适用的安全设计,安全设计的要素按系统平台安全管理标准、网络安全管理标准、应用开发安全指南、账户安全管理标准界定,安全标准文档位于sisqn211IT Operation doc信息安全体系文档 Define 阶段的系统架构是否与立项时向IT管理层汇报的架构存在差异?如何处理? SRS设计文
7、档是否满足operation提出的运维支持要求? 项目时间进度及其里程碑(计划与实际比较) 针对新系统建设项目,新应用系统名称要求在plan&define tollgate之前由应用总监审核最终确定 花费的人工工时(timesheet)统计(计划与实际比较) 项目递交的文档清单及其签字情况 建立文档基线的情况(CM Baseline), 是否放入PMO VSS? Dev/SIT/QA/PRD环境准备(按照IT BOM定义) QA Certification 风险控制状况 重要的问题跟踪与解决 Best Practice & Lessons Learned (Optional) 下一步行动 (A
8、ction Items) Q&A,2020/8/2,20,Construct & Test Tollgate Review 关注重点,项目状态介绍 (本阶段完成的主要任务) 构建结果介绍(是否按照设计实施?) 测试结果介绍(其中需要对设计文档中提及的安全设计予以测试和验) 培训情况介紹包括系统管理员、运维人员、最终用户的培训 在本阶段发生过的变更及其影响分析 需求的变更 解决方案的变更 由变更可能影响的相关文档是否更新? (BRD,SRS,SDD,AD,RTM,Project Plan,Project Schedule,IT BOM) 项目时间进度及其里程碑(计划与实际比较) 截至目前,花费的
9、人工工时(timesheet)统计(计划与实际比较) 项目递交的文档清单及其签字情况 建立配置管理基线(CM Baseline), 是否放入PMO VSS? QA Certification 风险控制状况 重要的问题跟踪与解决 Best Practice & Lessons Learned(Optional) 项目新增/更新的CI是否按照要求申请加入CMDB -提交CMDB支持人员分组表 上线变更流程是否按照要求执行审批完毕?(至少提前两周提交RFC) 是否存在老系统退役的情况,需要单独提交RFC,提醒CI Owner及System Owner更新CMDB 上线计划Online Review
10、Q&A,2020/8/2,21,项目里程碑,确定目标和范围 业务需求文档:清晰地描述用户对应用系统的要求和业务流程。是由产品管理和程序管理共同完成的。 系统目标文档:是在组队角色其它成员提供信息的前提下,由产品管理角色组共同创建的。 系统设计范围文档:提供了对项目当前所要实现业务功能范围的描述,它可以由程序管理或产品管理来创建。这份文档应确定在功能说明设计开始前,需要解决的问题和征求的意见。 风险评估:是随着项目的进展过程更新的动态文档。这个文档确定了可能影响项目实施的技术和组织机构上的问题。 项目组织结构文档:定义了项目组的管理结构,并描述整个项目实施过程的基本阶段。,2020/8/2,22
11、,项目里程碑,制定项目计划 功能说明:描述了最终交付的应用系统应具有什么样的功能,包括概要设计、逻辑流程设计和详细设计,它是这个里程碑上必须提交的文档。 风险评估:是由项目组的组长们根据已知的问题不断更新的文档。 项目计划:各种角色的实施方案。根据功能说明中确定的任务,将其细分为内部里程碑。项目计划的内容中包括实现方法、依赖条件、假设、预算和费用等信息。 项目时间进度:由每种组队角色的进度安排合并而成。,2020/8/2,23,项目里程碑,范围完成/第一次使用 全功能的源代码:这些代码能够稳定地用于联调测试。 风险评估:是由项目组的组长们根据已知的问题不断更新的文档。 测试规范文档:针对代码的
12、各个方面,给出了需要完成的测试,并定义了特定领域的测试需求。 测试的案例:描述出如何测试某一方面的代码,满足测试规定的要求。 基于版本的功能说明:在项目设计核准里程碑上给出的基于版本的功能规定,这个功能说明是根据版本的变动不断被修改的,所有的更改都应该反映在功能规定中。 时间进度安排:根据风险和已知的变化,更新项目提交的时间进度安排。,2020/8/2,24,项目里程碑,系统正式发布 可执行代码 发布的注释 不同版本的源代码 培训手册、文档记录和应用系统演示辅助工具 安装的平台和工具 软件/数据的安装程序和转换迁移工具,2020/8/2,25,文档模板,过程的指引,2020/8/2,26,文档
13、与流程,确定阶段需要提交的文档 SOW 制定阶段交付物清单 通过文档控制流程,2020/8/2,27,开发规范,总体原则 基本命名风格及编码规范 命名空间及层次结构 命名规范 类成员使用规范 类型使用规范 注释规范 异常产生与处理 日志和跟踪使用 其它事项 数据库规范,2020/8/2,28,总体原则,符合.NET框架及具体开发语言(C#等)通用开发规范 包层次体系清晰,结构性强 接口,类设计灵活,可扩展性强 注释清晰,程序可读性高,2020/8/2,29,基本命名风格及编码规范,2020/8/2,30,基本命名风格,Pascal风格 这种风格大写每个单词的首字母。(如:BackColor)
14、Camel风格 这种风格除了第一个单词的首字母,其他单词都应大写首字母。(如: backColor),2020/8/2,31,编码规范(一),大小写敏感 不要出现必须要大小写敏感支持的名字 不要出现两个只用大小写区分的命名空间 不要出现两个只用大小写区分的参数 不要出现只用大小写区分的同一命名空间的类型 不要出现只用大小写区分的同一类型属性 不要出现两个只用大小写区分的方法,2020/8/2,32,编码规范(二),在所有由多单词组成的公共描述符中使用Pascal风格 在局部变量参数名或私有类属性名称上使用Camel风格,2020/8/2,33,编码规范(三),只在少于两个字母的缩写中使用大写。
15、三个以上字母的缩写都应该使用Pascal风格(如:如用HtmlButton 而非HTMLButton,但不要用System.Io来取代System.IO) 不要使用常用的命名空间的名字做类名(如:System 、Forms ) 不要使用和关键字冲突的识别符 不要使用不被广泛认可的缩写 只有绝对需要时再使用广为人知的缩写(如:UI来表示User Interface),2020/8/2,34,命名空间及层次结构,2020/8/2,35,命名空间基本原则,.Sub-Module.Function.Design 约定 - HYSOFT - HLMIS 注意事项 避免两个PUBLISED的NAMESPA
16、CES名称一样的可能 使用一个稳定的被广泛认可的技术名称作为层的名称 使用Pascal风格命名NAMESPACES的每一层,并用分隔号(.)分开。 在适当的地方使用复数命名 不要让命名空间和类都使用同样的名字,2020/8/2,36,包层次结构,2020/8/2,37,命名规范,2020/8/2,38,命名规范-类命名,使用名词或名词短语命名类 使用Pascal风格 谨慎使用缩写命名类 不要使用任何类前缀(如C) 偶尔可能会出现已I作为类名开头的情况,而这个类又不是一个接口类。这种情况下只要第二个字母是小写就可以接受(如:IdentityStore) 建议使用组合词来命名派生类。在此情况下,你
17、应该考虑使用基类名称作为派生类名称的结尾。(如:CoffeeCup),2020/8/2,39,命名规范-枚举命名,使用Pascal风格来命名枚举类型 使用Pascal风格命名枚举值 不要使用简写来命名枚举值 不要在枚举前加前缀和后缀 使用单数来命名枚举,除非它是一个BIT类属性 使用复数来命名BIT类属性,2020/8/2,40,命名规范-静态类属性命名,使用名词,名词短语或简写来命名静态类属性 使用Pascal风格来命名静态类属性,2020/8/2,41,命名规范-参数命名,使用有意义的参数名.在所有场合,参数名称和类型应该清楚地描述以决定其反映的意义 用Camel风格来命名参数 使用名称来
18、表现其作用而非表现其类型 不要使用reserved参数。在下个版本中需要更多的数据那么就使用重载 请不要使用匈牙利命名法来在名称前加前缀,2020/8/2,42,命名规范-方法属性命名,方法命名 使用动词或动词短语来命名方法 使用Pascal风格来命名方法 属性命名 使用名词或名词短语来命名属性 使用Pascal来命名属性,2020/8/2,43,命名规范-事件命名,使用事件EventHandler 来命名HANDLER(代理类型) public delegate void MouseEventHandler(object sender, MouseEventArgs e) 两个参数取名叫se
19、nder和e 使用EventArgs后缀来命名事件的参数 使用现在时态和过去时态来命名有“前”、“后”概念的事件。不要使用BeforeXxxAfterXxx,而是应该使用有意义的词。(如:一个可以取消的关闭事件可以表示为Closing 和Closed event ) 考虑使用动词来命名事件,2020/8/2,44,类成员使用规范,2020/8/2,45,类成员使用规范-属性使用,使用Pascal风格来命名属性 不要使用匈牙利命名法 建议不要使用相同的类的属性名字和类型名字 当对一个类中属性作赋值操作时发生了异常(Exception)时,一定要保证这个属性中还保留着以前保存的属性值。避免这个属性
20、的内容处于不确定状态 必须允许类的属性可以以任意的顺序赋值。属性与其他属性间应该是没有状态关系的 只读和只写的属性 :当在逻辑上要求用户不能改变类的属性时,需要使用只读属性。 禁止使用只写属性,2020/8/2,46,类成员使用规范-事件使用,使用Pascal风格来命名事件 不要使用匈牙利命名法。 应该使用“raise”(“产生”)术语来表示产生事件而不是使用“fire” 或 “trigger”。(如:当在文档中描述事件时, 应该使用“an event was raised” 而不是 “an event was fired” 或 “an event was triggered.” ) 应考虑用
21、动词来命名一个事件 事件处理程序应返回void值 应该从System.EventArgs 类中派生出事件处理数据类。 应该假设在事件处理过程中会发生任何事情(要注意异常处理)。 考虑在事件处理中使用try/finally程序块处理异常,2020/8/2,47,类成员使用规范-方法使用,使用Pascal风格来命名事件 不要使用匈牙利命名法 缺省使用非虚函数的方法 一个类中有两个同名的方法可以使用,只不过他们有不同的调用参数时,我们需要方法重载,2020/8/2,48,类成员使用规范-构造函数使用,只有当一个类中仅有静态的方法和属性时,我们才能使用私有的构造方法 在构造函数中尽量做最少的工作.多余
22、的功能应该留到后续的代码中,当客户代码调用这个功能时再做相应的工作 建议不要在“struct” (value types)中定义一个空的构造函数,2020/8/2,49,类成员使用规范-类成员变量使用,不要将类成员变量设为外界可直接访问的.应考虑提供 get 和 set 的成员存取方法来代替将成员变量设为public 避免在类成员的名字中使用缩写 不要使用匈牙利命名法。好的名字应该描述语法而不是类型,2020/8/2,50,类型使用规范,2020/8/2,51,类型使用规范-总述,类型是在运行时封装的单元. 有三种基本的类型 类 类是最基本的一种通用类型。类可以是抽象的或密封的。抽象类需要子类
23、来实现相应的方法。密封的类不允许被继承。 值类型 值类型代表一系列存储在堆栈中的二进制值。 接口类型 一个接口类型是对值的部分描述。它可以被许多对象类型所支持,2020/8/2,52,类型使用规范-类使用,尽量使用类代替其他类型。在被管理的运行环境中, 类应该是最普遍使用的类型。 基类使用场合 基类是将一组有共同功能的对象组织起来的非常有用的方法。基类可以提供一组缺省的功能,而同时又允许扩展和定制。 只有当你有一个非常明确的用户场景时,才应该在设计中加入对象的扩展和多态等功能。,2020/8/2,53,类型使用规范-基类VS接口,接口适用于下列条件下: 多个不相关的类必须支持同一个协议 类已经
24、有了基类 (for example, some are UI controls, some are Web services),而c#中是不支持多重继承的.这个时候我们需要使用接口 实际情况不适合使用聚合 对于其他的情况, 类的继承是一个更好的模式,2020/8/2,54,类型使用规范-结构使用,在如下的情况中,建议使用struct 类型来满足要求 只作为简单的类型。 类型实例的大小要在16个字节以下 类型是不可变的 值类型是更符合要求的 不要在结构类型中提供一个缺省构造函数. 运行时环境会自动加入一个构造函数将所有的值初始化为0. 这在实例化结构数组时能够大大提高效率,2020/8/2,55
25、,类型使用规范-枚举使用,应该使用枚举类型来作为强类型的参数,属性和返回值。这样程序会更有意义且很难出错。同时在参数或属性中使用枚举类型(enum) 可以让开发工具知道这个属性或参数所有的可能值,从而自动提示给程序员。这样可以提高开发的效率。 如果二进制的OR操作符会作用在枚举类型里的数值上时,一定要在此枚举类型上加上 System.Flags 属性。 不要假设枚举类型(enum)的参数会在定义的范围之内,一定要做参数校验。 如果你用了多个相关的常量(static final constants),那应该考虑用enum 类型代替他们。,2020/8/2,56,注释规范,2020/8/2,57,
26、注释规范-模块注释,在一个程序模块的开始,应用注释说明模块的名字、功能、开发者和日期和版本变更历史,/- /版权所有:版权所有(C) 2008,Microsoft /系统名称:EBOM /文件名称:BenBLL.cs /模块名称:BEN Manager /模块编号: /功能说明:BEN Manager /修改人 修改时间 修改内容 /WY 2009.12.1 新建BenBLL类,2020/8/2,58,注释规范-类的注释,在定义一个类之前,应用“/”注释说明类的功能、使用方法和特殊的属性,2020/8/2,59,注释规范-类成员方法的注释,在定义类成员方法前,应说明该过程/函数的名字、功能、输
27、入/输出和版本变更历史,2020/8/2,60,注释规范-类成员属性、常量、变量注释,在定义类成员属性前,应描述该属性,2020/8/2,61,注释规范-程序注释,在代码实现时,应对其目的和实现的功能进行说明 采用了特殊的语法需要对语法注释 为实现部分功能需要注释 不能通过上下文立即明白其功能需要注释,2020/8/2,62,异常产生与处理,2020/8/2,63,异常产生与处理(一),使用Exception作为异常类的后缀 public class FileNotFoundException : IOException 推荐使用预定义的异常类型.只有为场景定义了新的例外类型才能让使用你程序库
28、的用户能根据例外的类型做恰当的处理动作 不要直接从Exception中派生一个新类。在System* 命名空间中,可以直接继承SystemException。在其他命名空间中,从ApplicationException中继承 异常消息要支持本地化(用中文描述异常消息),并且对开发人员和用户具有较好的可读性,2020/8/2,64,异常产生与处理(二),只在例外情况下才甩出异常 不要为正常或预期之中的错误使用异常 不要在正常的控制流程中使用异常 推荐返回null来作为通常的错误返回.如文件没有找到,那么File.Open就返回一个null,但如果文件被锁住了就应该激发一个异常 类在设计时在正常流
29、程中不应抛出异常 宁愿用异常而不要使用内定的错误代码(Error Code),2020/8/2,65,日志和跟踪使用,2020/8/2,66,日志综述,当判断系统出现异常(错误的时候)或者进行关键的系统操作的时候,请使用日志把相应信息记录下来 其中需要记录的信息包括: 系统出现异常和出现运行结果错误:一般是在trycatch结构中的catch代码块中,或者在函数调用返回出现错误码不为零的时候写入。 需求中明确要求记录的操作。 对系统运行有重大影响的操作,如添加、删除用户,更改管理员权限等,2020/8/2,67,其它事项,2020/8/2,68,数组vs集合(一),特性对比。 数组是固定大小的
30、,不能伸缩 ;集合是可变长的。(System.Array.Resize支持重定义数组大小,但需要额外初始化开销) 数组要声明元素的类型,集合类的元素类型却是object。(.NET Framework 2.0支持泛型 ) 数组可读可写,不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。 数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,(对于队列和栈根本就不支持下标访问),2020/8/2,69,数组vs集合(二),基本原则 当需要有Add, Remove 或需要集合支持的方法时,就采用集合。这个包括所有与集合相关的方法。 使用集合来对内部数组进行只读包装。 在只需要高效顺序访问数据集时可考虑使用数组。 在对返回数组或字符串处理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 材料采购日常管理制度
- 采购部部门奖惩制度
- 采购集中付款制度
- 采购食品验收管理制度
- 重庆非基本药物采购制度
- 钢构公司采购制度
- 社交媒体平台个体自滤把关研究-以微信为例
- 解决问题(例8)(课件)-2025-2026学年三年级下册数学人教版
- 2026年重庆二手房购房合同(1篇)
- 2025年5月17日合肥肥西县事业单位遴选面试真题及答案解析
- 挡土墙新建及土地回填平整投标方案(技术方案)
- T-CECS120-2021套接紧定式钢导管施工及验收规程
- JGJ+196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 《创新创业基础》课件-模块四 创新成果保护与转化
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
- 新安全生产法全文-安全生产法全文
- 麦积山石窟课件
- 分数百分数应用题的复习课件
- 开复工安全检查表
评论
0/150
提交评论