软件开发
【摘要】
【正文】
基于构件的软件开发,可大大提升软件项目开发中的可重用性,提升软件性能,缩短开发时间,减小开发成本,下降程序错误数量。
2003年,我参加了公司管理信息系统的开发,担任了系统分析是和系统架构师的任务。
随着企业信息话的普及,管理信息系统在企业中已涉及到生产经营、财务、人力资源、决策支持等各个方面,与传统管理相互***融合,大大提升了企业管理的有效性和及时性,提升了企业服务客户的方便和快捷。
我在一家上市公司信息中心上班,随着企业所面临的市场环境的复杂多变、行业竞争的加重及公司规模的不断扩张,公司提出了要在一个平台上实现全部业务的要求,要作到企业资源的统一调度使用。在公司的发展中,各部门和各子公司均有不一样的信息化规划,实现了不一样的信息化管理系统,这些系统的开发没有统一的标准、没有统一的接口,系统之间没法实现信息共享,浪费了巨大的人力物力。为了从根本上解决公司所面临的问题,公司领导通过屡次 决定开发一个统一的管理信息系统平台,实现公司资源的统一调度使用。
随着公司集团化的推动,单纯的C/S架构管理信息系统已经没法知足企业的要求,所以咱们选择B/S/S架构,开发工具选择ASP.NET,用IIS6.0发布。整个系统分为三层,数据库层、应用逻辑层、用户界面层,数据库层使用ORACLE数据库,应用逻辑层负责事务处理,使用c#语言编写应用逻辑,用户界面用IE浏览器与用户交互。
咱们依据平台的主要功能,在项目开发中,若是按照传统的开发方法,每实现一个功能都要编写一样的代码。为了节省开发时间和提升维护效率,咱们把共用代码都作成组件。例如:针对oralce数据库的查询、更新、插入、删除的操做数据库操做通用组件(dataOPERATION.DLL)、用户身份认证和用户类型识别的登陆认证检查组件(LOGINCHECK.DLL)、用户操做记录的审计组件(checkOPERATION.DLL)、用户操做错误和系统出错记录及错误返回的错误处理组件(error.DLL)。在数据库链接方面,采用微软的ADO.NET技术,使用ORACLECONNECTON的oracle专用链接组件提升访问性能。
在此次开发中,咱们主要设计和实现了如下通用组件。
一、
用户管理组件
咱们开发了用户管理组件logincheck.DLL进行用户登陆认证管理。该组件主要完成两个功能:(1)用户身份认证,根据用户登陆时提供的凭据(用户名、密码、随机码)肯定用户是否有登陆系统的权限。(2)肯定用户权限,经过用户的账号肯定用户在系统中的权限,防止用户越权操做。用户在打开每一个页面时,经过COOKIE或session对用户权限进行检查,看用户是否真的拥有该页面的打开权限,防止用户经过直接的地址进入页面越权操做,保证应用程序的安全。
该组件有三个接口,每一个接口表明组件的某个属性和方法。对用户登陆请求做出相应的处理,若是是普通用户则进入业务平台,并根据用户权限对菜单进行ENABLE/DISABLE处理。若是是管理员则进入管理员界面。
二、
数据库操做组件
咱们定制了dataopration.DLL进行数据库操做的组件,用于与底层数据库交互,在组件完成如下功能:(1)用于返回用户查询的信息。(2)用于对数据库进行增删改操做。该组件具备多种接口型式,编写程序时可用DATASET、DATATABLE、DATAROW等多种形式返回结果集。并对查询结果做出判断否成功执行,若是成功则返回信息,若是不成功则调用出错处理模块显示错误信息。因为用户的查询条件及查询域是不肯定的,所以采用多种形式传入参数,如直接传入SQL语句,传入存储过程及参数,传入DATASET等多种接口形式,程序执行时,由逻辑层将调用参数传入数据操做层,由数据操做层负责与数据库通信,并返回多种形式的结果集或执行结果,并调用信息显示组件将结果显示出来。
(3)消息显示组件
因为全部的窗口显示大小和显示方式是不同的,例如显示查询条件的窗口和现实操做是否成功的窗口,所以为了同类信息的显示样式保持一致,给用户一种统一的感受,咱们设计了此组件,全部弹出的窗口均调用此组件的POPWINDOW或POPWINDOWA两个函数,这两个函数只是在大小和外观上有不一样,显示方法是同样的,调用时将页面传入函数,由此函数显示,保证了界面风格的统一。
(4)错误处理组件
咱们开发了error.DLL组件。该组件主要做用是肯定错误类集,在catch出错时,输出统一的错误信息,方便用户排错。同时将系统的物理路径隐藏,方式恶意用户经过物理路径***服务器。
(5)样式表
咱们定义了各类显示界面和控件的CSS样式表,主要做用就是在页面上统一文字样式,统一DATAGRID样式,各类菜单、按钮样式颜色,给用户一种统一的界面风格。
在本次开发中,咱们首次使用了基于构件的开发方法,但因为经验不足,在开发中也走了不上弯路:(1)咱们将全部的构件组织成文档,并加入了详细的说明,可是程序员每每只阅读说明后,就弃之不理,开发时仍然本身编写本身须要的东西,咱们获得的不使用构件的理由就是别人开发的程序读不懂或太麻烦。为解决这种问题,咱们将构件的采用超连接的方式进行组织,对构件的调用和功能进行详细说明,并将构件的源代码在文档中公开,方便程序员阅读和排错。(2)对构件的修改混乱,出现多个程序员同时修改某个构件以适应本身的应用程序的现象,出现这类现象代表构件的范围和质量还要进一步提升,咱们采用增强构件的配置管理的方法,容许程序员修改构件代码,同时要求程序员对修改后的构件代码及时归并到构件库中,对构件的归并由专门的构件管理人员进行归并,构件管理人员首先检查代码,对可以归并到通用方法的函数尽可能归并到通用方法,不能归并到通用方法的函数另外写一个方法。
在本次开发中,前期的构件开发与系统开发同时进行,多多少少影响到项目的开发进度,但相信在构件库成型后,应能大大提升公司开发项目的进度。
在项目开发完成后,相比之前的项目,软件质量明显提升,软件维护量相比之前大大减小,很是利于项目的扩展,程序员更专一于项目逻辑的实现。该软件在哦国内公司已顺利使用了3年,目前已进入相对稳定阶段。
我认为在软件系统的复杂性不断增加的状况下,基于构件的开发能有效提升软件质量,积累和固化知识财富,并能有效缩短产品开发周期,提升软件生产效率。