题目北京爱酷T恤部落B2C电子商务网站改版
学号G200618075
2008年3月3日
目录
网络应用
客户(以下简称甲方)希望创建一个基于WEB2.0模式的B2C电子商务网站,用以开展网上直销个性化T恤的工作。该网站目标客户是追求个性的时尚青年群体。甲方首先找到北京某外包公司(以下简称乙方)负责该网站的开发工作,经过一个多月的开发乙方为甲方制作出网站的雏形,之后甲方提出了众多改进意见和要求,乙方又经过两个多月的开发但仍未能满足甲方的要求,甲方希望乙方继续改进完善网站的功能和界面,而乙方认为已经履行了合同规定中的所有功能,不愿再作额外的改动,双方均不愿做出让步,导致网站开发工作陷入僵局。乙方又迫切希望网站能够尽快上线,因此乙方希望另外寻找一个开发团队接手这个项目进行网站的二期开发工作。
从乙方接手(以下简称丙方)北京爱酷T恤部落B2C电子商务网站(www.iiqoo.com)已完成的一期工程,并在一期的基础上,根据客户提出的需求对网站进行改版以及功能模块的加强和扩充工作,并使网站能够按期上线。
4.1软件成本估算
甲方在简单说明要求后,就希望丙方能够给出一个网站开发的大致费用,给丙方造成了困扰。和甲方进行多次沟通后,甲方同意待丙方了解了程序一期完成的情况及罗列出详尽的需求后再行商议开发费用。事实证明,这样做法是正确的,贸然给甲方报价不仅损害了甲方的利益也是对已方的不负责任,为了给丙方一个合理的报价,丙方开展了如下具体的工作。
4.1.1掌握项目一期工程的细节
4.1.2需求分析
甲方提供了一份需求说明文档,罗列了需要改进和扩充的功能点。在对网站一期实现的功能有了一个比较全面的了解后,丙方对甲方罗列的功能点逐一与甲方进行了沟通,以明确需求。
4.1.3工作量估算
丙方采用了自顶向下逐步求精的方法来计算程序开发的工作量。根据甲方罗列的功能点,丙方对各个功能点进行详细的分解,细化到控件级别,根据以往的经验量化开发的工作量,并根据功能点的难易程度安排开发的先后顺序,并使用MiccrosoftProject2003对工作量进行进度上的管理,如图1所示。
图1
4.2可行性研究
4.3风险管理
考虑到项目的周期短、任务重,而家在外地的开发人员需要提前回家过年,因此考虑在项目中期根据项目进度执行情况确定是否增加开发人员的配比。
5.1RAD开发方法学
5.1.1敏捷开发
敏捷一词有轻便、机敏、迅捷、灵活、活力、高效等含义。2001年,17位软件开发方法学家齐聚一堂,将各自的开发方法进行了汇总,并共同定义了术语敏捷(Agile)。会议最终定制了敏捷软件开发宣言(ManifestoforAgileSoftwareDevelopment),并确立了一系列敏捷开发方法的价值观念和实用原则。敏捷开发方法汇集了众多的开发方法,其中包括极限编程XP、自适应软件开发ASD、水晶方法族CrystalMethods、动态系统开发方法DSDM、特征驱动的开发FDD以及SCRUM方法等等。
ASDM方法的四个价值观如下:
ASDM方法的指导原则如下:
1.在快速不断地交付用户可运行软件的过程中,将用户的满意放在第一位。
2.以积极的态度对待需求的变化,不管该变化出现在开发早期还是后期。敏捷过程紧密围绕变化展开,并利用变化来实现客户的竞争优势。
3.以几周到几个月为周期,尽快地、不断地交付可运行的软件供用户使用。
4.在项目过程中,业务人员和开发人员最好能一起工作。
5.以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任。
6.在项目组中,最有用、最有效的信息沟通手段是面对面的交谈。
7.项目进度度量的首要依据是可运行的软件。
8.敏捷过程调度重视可持续开发。项目发起者、开发者和用户应始终保持步调一致。
10.尽可能减少不必要的工作,实现简单化。
11.最好的框架结构、需求和设计产生于有自我组织能力的项目组。
12.项目组要定期对其敏捷过程进行反思,提出改进意见,并进行相应的调整。
此外,敏捷方法实施中一般采用面向对象的技术或其他接口定义良好的开发技术。另外它还强调在开发中要有足够的工具,如配置管理工具、建模工具等的支持。
在项目开发过程中我们吸收敏捷开发中的部分易学易用的方法结合传统软件工程的方法学,取得了一定的实效。
5.1.2利用控件技术提高程序的复用性
在程序的设计阶段就考虑程序的复用性,将一些需要在多处应用的功能做成控件,使之只要实现一次即可。
5.1.3使用统一的编码规范、风格,做好注释工作。
使用统一的编码规范可以使程序清晰,便于维护,并方便后序人员做二次开发。
5.2软件配置管理
软件配置是由在软件工程过程中产生的所有信息项构成的,它可以看作该软件的具体形态(软件配置项)在某一时刻的影像。软件配置管理,简称SCM(SoftwareConfigurationManagement),它有多种定义,在WayneBaich的《SCMCoordinatinforTeamProductivity》一文中,对软件配置管理进行了定义:"协调软件开发使得混乱减到最小的技术叫做软件配置管理,它是一种标识、组织和控制修改的技术,目的是使错误达到最小并最有效地提高生产效率。"
软件配置管理贯串整个软件生命周期并应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是使标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。
原始的开发工作是从早期的手工作坊式的个人软件开发的基础上发展的,无法适应现代大型项目的开发。手工开发的局限性体现在:独立开发、手工控制共享内容、原始的备份方式和无序的开发流程等。
软件配置管理的目标是标识变更、控制变更、确保变更和报告变更。它要完成以下几个任务:标识、版本管理、变更控制、配置审计和配置报告。
针对软件开发中的诸多问题,用人工的方法管理软件开发已不能满足需求,因此很多优秀的软件配置管理工具应运而生,使用这些工具我们能够轻松有效地管理我们的软件项目。这些常用的工具有RationalClearCase、CCC/Harvest、MerantPVCS、MicrosoftVisualSourceSave(简称VSS)、CVS等。使用这些工具的人员一般涉及开发人员、版本控制人员和项目经理等。以上这些工具各有不同的特点,分别适用于不同规模的软件开发项目。Rational公司推出的软件配置管理工具ClearCase主要用于Windows和Unix开发环境,它提供了全面的配置管理功能——包括版本控制、工作空间管理、建立管理和过程控制;MicrosoftVisualSourceSafe具有简单易用、方便高效、与Windows操作系统及微软开发工具调度集成等优点;CVS,全称为ConcurrentVersionsSystem,即并行版本系统,它也是目前一种主流的软件配置管理工具,其服务器版本支持Linux,SunSolaris,VMS等系统平台。
丙方在项目中使用VisualSourceSafe2005做为项目的版本控制工具,如图2所示。
5.3异地协同开发
丙方使用VSS进行多人之间的协同开发工作,但由于甲方将界面部分外包给异地的美工人员负责,且负责界面设计的美工人员由于自身的原因,未能及时提供全部的界面,因此丙方与美工协商由丙方定期(每3天)发布一个版本,美工人员在发布的服务器上对界面进行改进,待美工完成界面风格样式的改进后再通知丙方,丙方再利用文件及文件夹比对工具BeyondCompare(如图3所示)获取美工改动的文件,再利用文件比对工具CompareIt!(如图4所示)将变动的地方融入到项目的最新版本中。
图2
图3
图4
5.4进度规划管理
在项目中,丙方使了MicrosoftProject进行进度的规划管理工作,如图1所示。
6.1前期工作准备较充分
丙方在确定承接该项目前,做了大量的先期调研工作,首先是对项目一期的程序进行了系统全面的分析,并在此基础上结合甲方提出的需求,逐一对各个需求点进行了沟通,确保准确无误地理解客户的意图;其次对开发工作量的估算细化到控件级别,确保能如期完成项目;然后对项目进行中可能遇到的问题进行了风险识别、风险监控,并适时根据项目进度增加开发人员,以确保项目的顺利实施
6.2选择了恰当的开发工具、开发技术及开发平台
使用了VisualStudio2005+SqlServer2005快速开发工具(如图5、图6所示),加快了开发和部署的速度;同时采用SunSonic,能够根据数据库结构的变化快速生成数据访问层的代码;使用版本控制工具VSS使团队成员能协同开发;使用文件及文件夹比较工具BeyondCompare和CompareIt!对美工更改后的样式文件进行比对工作,并将所做的修改及时地融入到最新的程序代码中去。
图5
图6
6.3定期迭代发布小版本,及时获取客户反馈,降低风险
每个星期发布一个小版本,将已完成的功能模块展示给客户,并及时听取客户的反馈,避免出现大的偏差,根据客户的反馈做出及时的修正,用户提出的反馈意见往往会带来新的需求,对于这类需求,丙方首先会考虑该需求的可行性,若需求合理则将该需求放在最后或者适当的时机予以实现,以避免影响原有的项目开发进度,同时对于一些会打乱原来架构设计的需求,及时有效地和甲方进行沟通,提出折衷的方案,以获得甲方的谅解,避免项目验收时出现与甲方期望相距甚远的情况。
7.1使用新技术带来的不可预知的风险
7.2未深层挖掘客户的需求以及后期引入新需求带来的风险
在程序的开发过程中,丙方每星期会迭代发布一个新的版本,让甲方了解项目的进展并对丙方的程序给出修改意见,但此时客户往往会夹带提出一些新的需求,其中的一部分新需求是全新的,而另一部分虽然在客户的需求列表中没有给出,但是丙方的需求分析人员若能够从客户的角度出发,是可以发掘这些潜在需求的。在开发过程中再由甲方提出这些需求,无疑加大了程序开发的难度,同时也给项目进度的控制带来了困难,给程序的按时交付带来了很大的压力。这部分深层次客户需求挖掘工作的改进与提高是丙方今后需要努力的要点。
8.1.net平台下快速开发框架的选择
.net平台下快速开发框架如今已经像java一样百花争艳,目前在国内比较流行的有以下几种开发框架:
1.EnterpriseLibrary
企业库是微软公司企业库模式与最佳实践的一个实版本。它包含了很多应用程序块。它是一系列帮助开发人员解决一般企业开发所遇到的问题的可重用可拓展组件集合。目前最新的版本是4.0,最新加入了IoC容器。
2.Castle
Castle是.Net系统级框架,它是将一些成熟开源应用进行无缝整合而成的一套完善的应用系统框架,这其中包括了ActiveRecord、DynamicProxy、MonoRail及MicroKernel/Windsor。MicroKernel/Windsor是Castle的底层核心实现,它采用IoC容器对系统进行运行期动态设置,主要包括Facilities、Components、Services三大部分。
3.Spring.NET
Spring.NET是由Spring框架移植而来的,Spring框架是Java著名的应用系统框架,它已成为替代轻量级企业应用的开发标准框架了。Spring.NET包括——Spring.Corecore:就是一个对象工厂(ObjectFactory),它通过配置中的对象定义来创建对象,它的目的是消除对象的new操作。在配置文件中,除了定义对象的一些属性外,还能定义对象之间的相互关系,这就使得对象之间的耦合延迟到了运行时。如果针对接口或抽象类进行编程,则还可以通过具体对象的不同实现来定制系统的行为。
Spring.AOP:这是按AOP联盟的接口定义来实现的,AOP即面向截面编程,其核心是通过给对象创建一个动态代理对象来接管对象的操作,这样就能对操作进行前置和后置处理了。
Spring.Data:这是一个由第三方实现的整合到Spring内的数据访问组件,目前已包括了NHibernate的实现部分。
Spring.NET还显得不够成熟,一些功能因为平台的局限性而导致了移植上的困难,与Castle相比差了一些。
4.Nhibernate
Nhibernate是.NET持久层框架,它由Java上的Hibernate移植而来。作为一种o/rmapping框架,它具有以下一些特点:完善的数据映射及关联操作;可扩展的持久机制;强大的数据加载功能;面向对象的数据查询语言HQL;缓存机制;多数据库支持。
Nhibernate的强大之处在于开发者几乎不用去了解任何数据存储和查询的细节问题,而能更专注地通过面向对象设计来构建系统。其HQL查询语言完全是针对对象及其属性来设计的,与SQL语法保持一致,降低了学习的曲线。
当然,Nhibernate还有一些不足之处,如报表数据。另外在性能上,Nhibernate通过反射来实现数据行到对象之间的转换以及一些操作,都会造成性能上的一些损失。
5.iBatis.NET
作为另一种.Net持久层框架,iBatis.NET同样是由Java上的iBatis移植而来的o/rmapping框架,它包括DataMapping和DataAccess两部分——
DataMapping:ORM的实现部分,对象映射通过映射文件来定义,支持one-to-one、one-to-many等对象关系映射。与Nhibernate显著不同的是,ibatis.net不会自动生成SQL语句,它通过预先定义好的SQL映射来执行数据操作,对于想自由操作SQL或使用复杂表达式的人来说,这是个不错的选择。
DataAccess:数据存取框架实现,通过在配置文件中定义DAO接口及其实现,就可以方便使用DaoManager进行数据操作了,这也是一个在运行时决定具体实现的标准应用。
6.NBear
NBear是一个基于.Net2.0,由国人领导的开放源码的软件开发框架类库。NBear的设计目标是尽最大努力减少开发人员的工作量,最大地提高开发效率,同时兼顾性能及可伸缩性。Bear的核心包括一个泛型的、强类型的数据持久化接口、一组接口式的Entity定义组件、高性能XML/JSON序列化支持、服务工厂、分布式服务队列和Web组件,因此:
1.NBear最适合开发各类基于ASP.NET2.0,对性能要求较高的Web程序。JSON序列化和XML序列化的结合使用将可以使服务端和客户端的数据交互变得更简单高效;NBear.Web组件提供了很多加速Web开发的组件,将使您基于标准ASP.NET方式的开发效率大大提高;同时,简单易用、性能突出的泛型持久化支持,则将使您能够将更多注意力集中到业务开发上,同时也不会有传统ORM持久化框架的性能问题和繁琐配置问题(NBear几乎不需要配置,性能则可与DAAB相当)。
2.高性能的XML和JSON序列化支持和灵活高效的持久化支持,也使得NBear能为开发各种类型的基于远程数据交换(WebService、Remoting等等)的分布式应用程序提供便利.
3.内置的基于IoC容器和分布式服务队列的服务工厂能够使您的程序拥有良好的可伸缩性,可以完全透明地将一个普通构架的程序设置为一个分布式程序,甚至不需要修改消费端或服务实现端的任何代码,基于服务工厂的系统天然就是SOA构架,这就使得您的系统可以极小的成本和其他SOA构架进行整合。
7.Nettier
Nettier是一款基于CodeSmith代码生成器的框架,目前在国内有一定的使用群体,但中文文档匮乏。
8.动软代码生成器
一款由国人李天平开发的代码生成器,支付多种数据库平台,能生成基于PetShop的七层结构,及简单的三层结构,由于文档及示例齐全,在国内有很广泛的使用群体。
9.SubSonic
SubSonic是一个类似Rails的开源.Net项目,你可以把它看作是一把瑞士军刀,它可以用来构建WebSite和通过ORM方式来访问数据。SubSonic是一个非常活跃的项目,在CodePlex已经持续排名前10了,和一些微软支付的项目并列在一起,如AJAXControlToolkit、EnterpriseLibrary和IronPython。该项目的作者RobConery已被微软招安,用于专职开发SubSonic。该框架的英文文档详尽,且有丰富的视频演示教程。
最后丙方按期交付了项目,获得了甲方的好评。能保质保量按期交付项目得益于以下几点:
从对项目一期代码的全面研读、分析,到客户需求功能逐点逐一沟通,再到工作量较为精确的计算,都从丙方现有资源的实际情况出发,做出了较为科学合理的统筹安排,为项目开发工作的下一步切实开展奠定了基础。
2.中期工作严格按照项目进度实施。
3.后期以一种平和、友善、冷静的心态直面客户
在项目的后期,项目的主体功能已经完成,剩下一些繁琐、零碎的工作,此时项目的开发人员的压力较之前减轻很多,此时甲方往往提出一些新的构想,丙方的开发人员往往情绪上非常容易激动,会全盘否定客户的想法,丙方的沟通人员克制了这种情绪,摆正了心态以一种平和、友善、冷静的心态与客户进行有效的沟通,为项目的顺利交付赢得了最后的胜利。