北京工业大学软件学院
工程硕士研究生工程实践报告
题 目 轻量级项目管理解决方案的设计与实施
学 号 G200618075
姓 名 毛凌志
指导教师 张 建
2008年3月3日
北京工业大学软件学院
工程硕士研究生工程实践报告成绩评定书
工程实践报告题目:轻量级项目管理解决方案的设计与实施
指导教师意见:(包括选题、具体工作、技术分析、存在的问题以及市场实际应用情况等方面)
成 绩:
指导教师(签字): 200 年 月 日 |
注:成绩以优、良、中、及格、不及格计。
目 录
6.1基于RBAC的角色权限认证模型在ASP.NET平台下的实现方式 - 7 -
6.2采用面向方面编程(Aspect Oriented Programming)技术实现的日志审计功能 - 7 -
1.项目背景
在以往的项目开发过程中,会产生大量的文档,如客户沟通文档、数据库设计文档、整改意见、进度规划文档、BUG跟踪文档等等,这些文档以纸质的形式流转,不便于维护和管理,同时项目开发成员、客户及领导之间并不能进行有效的沟通,因此希望构建一个统一的基于WEB的项目管理平台,来辅助整个项目的运作,建立起项目团队成员、客户、领导之间沟通的桥梁,使之能够进行快速、有效的沟通,从而提高项目开发的效率,以保障工程项目的如期交付。
2.项目内容
轻量级项目管理解决方案(如图1所示)是一个为企事业单位的IT部门服务的IT项目管理系统,旨在帮助中小开发团队将项目开发过程中的任务分配、进度管理、Bug跟踪、客户反馈、知识库管理等环节集中到该平台下来进行,为项目的高效开发、如期交付提供保障。
图1
3.项目中所担当的角色
系统架构师、项目经理、技术总监。
4.项目中的职责
负责整个项目的架构设计、技术难点攻关、项目进度管理工作。
5.项目中具体完成的内容
5.1技术方面
5.1.1使用Miscorosoft Visual SourceSafe 2005进行软件配置管理
软件配置管理的目标是标识变更、控制变更、确保变更和报告变更。它要完成以下几个任务:标识、版本管理、变更控制、配置审计和配置报告。
针对软件开发中的诸多问题,用人工的方法管理软件开发已不能满足需求,因此很多优秀的软件配置管理工具应运而生,使用这些工具我们能够轻松有效地管理我们的软件项目。这些常用的工具有Rational ClearCase、CCC/Harvest、Merant PVCS、Microsoft Visual SourceSave(简称VSS)、CVS等。使用这些工具的人员一般涉及开发人员、版本控制人员和项目经理等。以上这些工具各有不同的特点,分别适用于不同规模的软件开发项目。Rational公司推出的软件配置管理工具ClearCase主要用于Windows和Unix开发环境,它提供了全面的配置管理功能——包括版本控制、工作空间管理、建立管理和过程控制;Microsoft Visual SourceSafe具有简单易用、方便高效、与Windows操作系统及微软开发工具调度集成等优点,在朗志轻量级项目管理解决方案中使用了VSS作为软件配置管理的工具,如图2所示。
图2
5.1.2使用Sybase PowerDesigner12.5进行数据库建模
Sybase PowerDesigner 是一个"一站式"的企业级建模及设计解决方案,它能帮助企业快速高效地进行企业应用系统构建及再工程(Re-engineer)。 IT专业人员可以利用它来有效开发各种解决方案,从定义业务需求到分析和设计,以至集成所有现代 RDBMS 和Java 、.NET、PowerBuilder 和 Web Services的开发等。PowerDesigner是结合了下列几种标准建模技术的一款独具特色的建模工具集:业务流程建模、通过 UML 进行的应用程序建模以及市场占有率第一的数据建模,这些建模技术都是由功能强大的元数据管理解决方案提供支持的。在朗志轻量级项目管理解决方案中使用PowerDesigner进行数据库建模,如图3所示。
图3
5.1.3使用CodeSmith4.0创建仿动软代码生成器的代码生成模板,用以快速生成适合项目的基础业务框架。
一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本,与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构,可以生成包括简单的强类型集合和完整应用程序在内的任何东西生成的代码能够根据性质用途定制。在本项目中使用CodeSmith生成了仿动软件代码生成器的基础业务框架代码,如图4所示。
图4
5.1.4实现了基于RBAC的角色权限认证模型(提供了组的功能),并将功能权限细化到函数级别,支持角色的继承。
RBAC(Role-Based Access Control)是近年来在信息安全领域访问控制方面的研究热点和重点。它和DAC、MAC并称为三大访问控制策略。
RBAC研究最初的学术论文是1992年美国NIST的研究人员David Ferraiolo和Richard Kuhn发表的《Role-Based Access Control》。国内最早的相关学术论文是1994年华中理工大学马建平的硕士学位论文《一种无干扰的访问控制模型》。在RBAC的研究历程中,1996年美国George Mansion Univ.Ravi S.Sandhu教授在IEEE computer上发表了一篇学术论文《Role-Based Access Control》。在该文中Sandhu教授正式提出了RBAC96模型家族,它为RBAC的进一步深入研究奠定了基础。此后国内外研究者在RBAC96模型家族的基础上提出了很多扩展模型。
目前国外RBAC研究机构主要是美国NIST和George Mansion Univ.LIST实验室(Prof.Ravi.Sandhu)。NIST主要是进行RBAC及其相关模型的标准化工作,LIST侧重于RBAC、RBDM及其扩展模型的创建、形式化描述,评价分析,以及在web中的应用等。国内主要是中国科学院软件研究所和华中科技大学计算机科学与工程系,他们正在对RBAC模型扩展和应用方面进行深入的研究。
迄今,RBAC研究已应用于PMI、CORBA、CSCW等体系架构中,并在电子商务、大型信息系统中也得到广泛应用。它是目前应用最广、效果良好的访问控制策略与模型。
图4是朗志轻量级项目管理解决方案中用户的角色授予界面,图5是用户的组授予界面。
图5
图6
5.1.5采用面向方面编程(AOP)技术实现的日志审计功能
面向方面编程(AOP)是施乐公司帕洛阿尔托研究中心(Xerox PARC)在上世纪90年代发明的一种编程范式。由于软件系统越来越复杂,大型的企业级应用越来越需要人们将核心业务与公共业务分离。AOP技术正是通过编写横切关注点的代码,即"方面",分离出通用的服务,以形成统一的功能架构。它能够将应用程序中的商业逻辑和对其提供支持的通用服务进行分离,使得开发人员从重复解决通用服务的劳动中解脱出来,而仅专注于企业的核心商业逻辑。
如图7是朗志轻量级项目管理解决方案中应用AOP技术实现的日志审记页面。
图7
5.1.6解决项目成员在开发中遇到的技术问题
5.2管理方面
5.2.1规划项目的进度,确保项目进度的如期实施。
5.2.2统筹安排人员工作,协调各方面的资源
Microsoft® Office Project 2003 是项目管理程序,帮助单位协调商业计划、项目以及资源,从而获得更好的商业业绩。通过使用其灵活的报告和分析功能,您可以利用可操作的信息来优化资源、安排工作优先顺序并协调您的项目与总体商业目标。
在进行项目进行规划及进度跟踪、资源协调的过程中使用了Microsoft Project 2003,有效的提高了管理的水平,如图8所示。
图8
6.项目中所完成的内容的技术难点
6.1基于RBAC的角色权限认证模型在ASP.NET平台下的实现方式
在朗志轻量级项目管理解决方案中,为了让不同角色的用户登录系统后拥有不同的访问及操作权限,引入了RBAC角色权限认证模型。根据.Net平台的语言特性,在控制页面级的访问权限时,使用了ASP.NET中的HttpModule在页面接受用户请求前拦截用户的请求。根据用户Cookie中存放的角色集合信息从数据库中获取该角色集合允许访问的页面集合,并判断当前访问的页面是否存在于用户允许访问的页面集合中。若存在,则允许用户浏览该页面,否则中断用户的请求,并将用户引导到其它页面。在控制函数级的访问权限时,使用.Net平台下的Custom Attribute为每个函数提供一个GUID字符串做为该函数的唯一标识,当用户欲执行该功能函数时,利用AOP技术在用户执行该功能函数前进行拦截,根据用户Cookie中存放的角色集合信息从数据库中获取该角色集合允许访问的操作集合,然后判断其中是否包括当前功能函数的GUID值,若包含,允许用户继续执行该函数功能,否则将用户引导到错误页面,提示相应的错误信息(如无此操作权限,请与管理员联系)。
6.2采用面向方面编程(Aspect Oriented Programming)技术实现的日志审计功能
以往在进行系统设计的时候通常采用OOP(Object Oriented Programming面向对象编程)技术把系统按对象进行划分,然后用命名空间和类的方法来组织系统,从而实现核心业务的模块化。虽然这种方法取得了巨大的成功,优势很明显,但是也存在以下两点不足:
-
代码交织(Code Tangling )。指一个软件系统中的核心模块可能需要同时与多种非核心需求交互,如此多的需求会导致最终的代码混乱。
-
代码分散(Code scattering)。指由于非核心关注的模块贯穿于整个核心模块,使得相关的实现也遍布于其中。
面向方面编程(AOP)是施乐公司帕洛阿尔托研究中心(Xerox PARC)在上世纪90年代发明的一种编程范式。由于软件系统越来越复杂,大型的企业级应用越来越需要人们将核心业务与公共业务分离。AOP技术正是通过编写横切关注点的代码,即"方面",分离出通用的服务,以形成统一的功能架构。它能够将应用程序中的商业逻辑和对其提供支持的通用服务进行分离,使得开发人员从重复解决通用服务的劳动中解脱出来,而仅专注于企业的核心商业逻辑。
OOP使用继承、封闭、多态等特性建立一种自上而下的对象层次结构来模拟现实社会。但是当对这些对象层次引入公共的行为时,OOP就显得无能为力了。也就是说OOP只适合自上而下的关系,并不适合自左向右的横切关系。
AOP作为一种全新的编程思想,可将日志审记这个非功能性需求抽象成为单独模块,然后通过连接将此单独模块作用于相关的业务核心模块,从而大大提高了案例模块的重要性和程序的安全性。
采用基于AOP的日志审记功能,结构清晰,易于维护。由于日志管理代码被模块化为独立的单元,作为切面应用到相应的连接点中;当日志审记策略需要修改时,只需变动日志审记功能代码,而无需改动核心业务模块;此外,当添加类或类中添加新的方法时,编程人员不必考虑新的安全问题,也不必为加入横切行为而了解它们,而只需改动aspect中的连接点标识,日志审记策略将自动应用于它们,即这种独立的管理策略具有更好的重要性。这种对新代码自动应用aspect的特性也是AOP的主要优势之一。另一方面,由于日志审记功能与核心业务模块分离,减少了由于代码纠缠而引起错误的可能性,由此也大大提高了程序质量。
7.所完成的内容与所学课程之间的关系
在此次的项目中运用到了大量书本上的知识,尤其是软件工程的知识。
在项目的设计阶段运用在数据库原理课程中学到的知识,运用Sybase PowerDesigner 12.5工具对数据库进行建模,极大地提高了数据库设计的效率且使数据库建模设计工作能站在一个更高的高度上看待问题。
在项目前期运用Microsoft Project 2003对项目进行进度规划、并使用自顶向下的方法估算软件开发的成本,为项目整体进度的把握及项目顺利的执行提供了有效的监控手段。同时学习了软件工程中的风险管理,对软件项目实施过程中的风险进行风险识别、风险监控。
在项目的开发过程中,运用软件工程学到的软件配置管理(Software Configuration Mangement,SCM)中的相关知识,应用Microsoft Visual SourceSafe 2005进行版本控制,使变化更正确且更容易被适应,在必须变化时减少所需要花费的工作量。
8.收获与体会
在此次的项目实践中,使我认识到软件工程、软件过程管理、数据库建模等课程的重要性,原先在课程学习时只停留在书本中列的条条框框中,并没有真正体会其实际的应用。在自己主持完成一个项目时,才感受到软件工程、软件过程管理、数据库建模等课程对实际项目开发的指导作用是如此的巨大。它们更像是一种方法论,指导你该如何进行下一步、该如何展开工作,每每在项目实施过程中遇到困难时,我就会翻起书本中的有关章节,看看目前对应于书本上的哪个阶段、哪个环节,为什么为出现这样的问题,最后都会发现或许是前期的工作没有做的完备,又或是遗漏了哪个环节。总之这使我受益匪浅。
同时我也认识到,有好的理论还不够,还需要好的工具做为辅助才能使项目更加顺利、更加正规化。如在数据库建模过程中运用Sybase PowerDesigner12.5进行数据库建模,不但可以按要求生成数据库设计文档,同时在设计时能把握全局,站在一定高度上看问题,避免以前直接在数据库中创建表的操作。又如在进行项目进度管理及工作量估算时,运用了Project工具,通过制定计划,定制里程碑,由Microsoft Project2004生成清晰的甘特图,使项目管理人员及项目的开发人员对当前项目的进展情况一目了然,为项目的如期交付提供了强有力的保障。又如在软件配置管理中运用Miscrosoft Visual SourceSafe 2005进行项目版本的控制,使得原先手工控制共享内容、原始的备份方式和无序的开发流程等问题得以解决。而每天一次的对VSS代码的备份,也是降低项目风险所必要的工作环节。还有各种辅助工具,如同步工具DirCompare及文件和文件夹比较工具Beyond Compare、Compare It!等辅助工具的使用,使我了解到使用各种小型的辅助工具,对于提高软件开发效率往往具有重要意义。
通过这半年的工程实践使我学习到很多优秀的软件开发管理方法和很多软件开发的实用技术。同时我也认识到要使一个项目很好的运作并达到的预期效果是一门很大的学问,其中不光涉及到工程领域的专业知识,还要有团队沟通、人际关系处理等众多的技能,它更像是一门艺术,使我认识到自己的不足:欠缺在实际项目中将书本中的知识活学活用、融会贯通的能力,对项目中遇到的各类问题(包括技术上的问题以及团队成员之间沟通等问题)的处理方式方法还有待改进与提高,让我看清了自己今后努力的目标及方向。这半年中的工作和学习,为我以后的学习和工作提供了宝贵的经验。在此非常感谢我的指导教师张建和企业导师王伟的耐心指导。