概述
我们的客户是一家咨询管理公司,总部位于美国,主要为一些公司或者组织机构提供咨询服务和能够促进生产力发展的软件解决方案。
客户想要开发一个综合业务管理系统,能够将可定制的在线学习、调查、考试和检查等内容系统地结合起来,可用来授课、调查信息或者对人员进行培训等。用户可以自己设计一个内容包(Package),内容包中可定制试卷(Exam)、调查问卷(Survey)、检查表(Inspection)、课程(Course)等不同的内容,然后通过系统创建任务(Assignment)并指派给不同组别的人去完成。此外,用户还可以为人员定制培训计划(Training Plan),通过培训的人可获得相应的技能等级。被指派任务的人可以通过通知邮件中的链接或者直接登录Web系统去完成相应的任务,然后,系统将自动对结果进行评分并作分析,最后生成报表供咨询顾问进行统计分析。
需求
- 系统可创建用户角色,一个用户可获得一个或者多个角色,用户只可访问其角色所配置的模块集合;
- 系统可对用户进行分组管理,分组可按组织或者区域中的等级进行划分,也可以按照职位的高低进行划分;
- 用户可以自己设计内容包(Package)的信息,也可以从咨询公司在线购买或者从其它类型的文件中导入。系统支持显示/播放一些常见格式的多媒体文件,如图像、声音和视频文件;
- 系统通过邮件或提示信息来通知/提示用户。在系统内部,用户可以通过设定的提示信息来获取消息,在系统外部,用户可以通过邮件来获取相应的信息;
- 为了方便用户设计内容包的信息,系统设计了不同的模版供用户使用,且内容包中设计的内容及样式与完成任务的界面完全一致;
- 系统支持设计可视化的图形链接任务(Diagram)并指派人去完成;
- 系统支持在完成任务的过程中插入审核流程,即指派任务 — 被指派任务者完成任务 — 发送给指定的人审核 — 请完成任务者修改 — 结论统一,将任务标记为完成;
- 用户可以通过Windows应用程序或者Web服务来完成相应的任务(Assignment);
- 系统可以监控任务的完成情况,并通过设定自动发送定时邮件,提醒用户及时完成任务;
- 系统设置多个应用程序编程接口(API),支持从其余的数据管理系统导入数据并使用;
- 系统能够对完成任务的结果进行分析,并产生分析报表。
系统截图
动态统计图表(Dashboard):
内容包(Organize Package):
培训计划(Organize Training Plan):
绘制任务图形(Draw the Diagram):
计划表(Schedule):
分析报告(Analysis Report):
系统设置(Option Setting):
解决方案
涉及的技术
- .NET Framework 4.5
- IIS6/IIS7/IIS8
- WCF 4.0
- Dev Express Controls 15.1.5
- Microsoft SQL Server 2008 R2
- Visual Studio 2013
- ASP.NET
- Updater Application Block
系统架构
诺怀参与了整个项目的需求分析、设计、开发、测试和维护几个阶段。根据客户的需求,系统需具备各种良好的特性,如良好的用户体验、迅捷的响应速度、强大的性能、丰富多样的分析能力、实时的跟踪监控能力等。此外,用户还能够通过登录Web应用程序或者电子邮件中的链接浏览系统指派的任务。
Web应用程序
实际上,该系统的Web部分可以被认为是富互联网应用,因此,DHTML & AJAX 被用来实现主要的功能以使系统获得更好的可拓展性和可维护性。我们使用的DevExpress控件不仅为系统提供了一致且令人愉悦的用户界面,而且提供了强大的软件功能,提升了开发的质量。此外,由于采用了ASP.NET AJAX开发框架,使得该系统有了更加丰富的用户体验。
Windows应用程序
对于Windows应用程序,为了使系统拥有良好的可扩展性和合理的体系结构,我们采用智能客户端工厂(Smart Client Software Factory)去构建系统的整个架构。为了克服Windows应用程序部署困难的难题,我们专门采用了ClickOnce技术来部署程序,ClickOnce技术的使用,使得部署Windows应用程序与Web程序一样简单。
Web服务
Web服务是在WSE3.0上建设的,后来我们成功地将它迁移到WCF,从而增强了系统的安全性和稳定性。此外,我们压缩了所有的数据来提升了服务器与客户机之间的传输能力。
开发过程中遇到的困难
困难一:该软件已经被推向市场,因此,每一次版本的发布都要求质量高,性能好,稳定性好,并且容易维护。
改善措施:我们谨慎地处理系统的每一个变化,尤其是对那些风险较高的变更。首先,我们会做一个原型来消除不确定的内在因素,然后再撰写详细的设计文档,文档的内容包括系统中每一个涉及模块的变更需求、详细的设计界面以及数据结构和数据逻辑的变更。设计文档经过项目内部开发人员和测试人员的反复审核与修改之后,会发送给客户进行审核。只有当客户审核并确认通过了开发文档之后,我们才会着手去实现。在实现的过程中,我们会不断地重构系统并相互检查代码,以保证软件开发的质量。每一期开发任务结束之后,我们都会与客户商定安排一次全面的回归测试,防止新功能对系统相邻模块的正常工作造成影响,以保证新版本软件的质量。此外,我们还得益于软件智能客户端的架构,它为我们的系统提供了高度的灵活性和可伸缩性。我们的开发人员都熟悉面向对象的开发理念并充分运用面向对象的设计模式。我们的代码干净、可读性强、高内聚低耦合,保证了系统的可维护性。
困难二:由于系统已经持续开发9年多的时间,随着时间的推移,新的功能和逻辑不断地被添加,系统变得越来越复杂,此外,开发人员一般都只专注于自己对系统的更改,而不了解别人添加的功能,长时间之后,开发人员和测试人员都不能够准确地说出部分模块的工作机制,有时候不得不通过查看代码来进行确认,这样就使系统维护变得困难。
改善措施:项目内部会定期召开“新功能展示”会议,将系统发生的新的变更展示给大家。通常情况下,该会议由测试人员主持,测试人员将项目中所有的开发人员召集到一起,将系统变更之前及变更之后的图片展示给大家看,开发人员可通过提问或者集体讨论的方式加深对系统的认识。此外,项目内部还会整理一些系统逻辑相关的文档,以便查阅。
困难三:所有需求都是客户从最终用户那里收集到得,因此,开发团队只能够从客户那里知道需要实现哪些功能,而不能清楚地知道实现新功能的目的,这样,开发团队就不能够从最终用户的角度提出一些优化设计的意见或者建议。
改善措施:为了弥补这个缺失,在需求确定之后,我们让开发人员负责撰写开发文档,测试人员编写测试用例,然后测试人员和开发人员共同审核,如此,每个人都能够从最终用户的角度去理解需求,提出改进建议。此外,我们还会在每日的站立会议中讨论实现需求过程中遇到的问题,如果有问题需要客户确认,我们的开发人员会通过调研提出一些可能的解决方案供客户参考。客户经过一番思考之后,如果认为我们的方案可行,就会将我们的建议放到以后的需求变更列表中。
客户收益:
- 最新版本的系统实现了客户的所有需求,包括新增加的功能和修复的系统漏洞,强大的功能和优秀的性能让产品在市场上获得了广泛的好评;
- 需求说明书的内容是诺怀的开发人员与客户共同商讨并确定的,因此,客户不用担心开发出的产品与需求不一致;
- 由于该项目是由经验丰富的开发人员基于成熟的框架开发,因此该系统拥有良好的可拓展性和可维护性,客户可以在任何一个迭代添加新的功能;
- 诺怀建立了严格的开发流程规范,出色的质量控制流程和进度控制流程,保证新版本能够及时地发布与部署,从而不会影响客户的业务;
- 基于成熟的系统架构,我们对系统进行了重构和完善,系统被赋予了高可扩展性,可支持未来业务逻辑扩展;
- 诺怀获得了客户完全的信任,现在,客户只需要集中精力进行营销,不用担心软件开发和团队管理。