开篇
我们都知道开发一个软件必须要有开发的背景和特殊的需求等等,我们就来分析我们开发该系统的项目背景和开发该项目的目的。下面我们来分析下开发药店系统的目的
及可行性研究分析,对现有平台构建该项目的风险性等进行分析,可行性方案的分析。其他方面的因素分析。
大纲
1、总论
2、项目建设的背景和必要性
3、项目的方案设计
总论
我们既然要开发药店系统,那么我们必须知道开发这个项目的意义和目的,药店系统主要解决很多的药店的信息化管理,从采购到销售到财务管理等一体化的信息化系统
解决方案。该系统包含药品采购管理,药品库存管理,药店销售管理等子模块,药店信息管理软件针对我国医药企业药品经营管理特点(尤其是中小型药店销售商)而特别设
计,符合GSP管理规范,软件界面设计简洁,美观,其人性化的软件流程,使普通用户不需培训也能很快掌握软件操作使用方法,上手极易。药店信息管理软件广泛适用于医
药批发零售企业、药店、医院药房等用于药品进销存管理, 医药财务管理等场合,是您医药企业进行信息化管理的强大工具。
本药店系统结合AgileEAS.NET敏捷开发平台的完美实践,能够做到良好的扩展性和快速开发,我在现有的基础上通过1星期的时间完成了药店的所有功能,从需求-设计-
编码-测试等过程。可以充分体现AgileEAS.NET敏捷开发平台提供的工具的强大性。
项目建设的背景和必要性
目前可能大家对AgileEAS.NET平台无论是使用还是了解都不清楚,所以特别希望通过一个实际的项目来让大家对AgileEAS.NET平台有一个感性的认识,当然也希望感
兴趣的朋友,能够通过这样的一个完整的实例能够完全的上手,或者基于现有的药店系统之上开发一个更为强大的药店系统。
开发一个药店系统的主要背景是因为AgileEAS.NET平台诞生在医疗行业,我们在医疗行业有了接近10年的行业的经验,所以希望能够通过这样的一个简易的项目,让大
家知道如何使用AgileEAS.NET平台的快捷性和易用性。
AgileEAS.NET应用开发平台,简称EAS.NET,是基于敏捷并行开发思想以及.NET构件技术而开发的一个应用系统快速开发平台,用于帮助中小型软件企业建立一条适合
快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的,AgileEAS.NET应用开发平台包含基础类库、资源管理平台、运行容器、开发辅助工具
等四大部分,资源管理平台为敏捷并行开发提供了设计、实现、测试等开发过程的并行,基于AgileEAS.NET平台的应用系统的各个业务功能子系统,在系统体系结构设计的过
程中被设计成各个原子功能模块,各个子功能模块按照业务功能组织成单独的程序集文件,各子系统开发完成后,由AgileEAS.NET资源管理平台进行统一的集成部署。
当然关于具体的使用的细节和开发教程,我将会在本系列的其他文章中详细的阐述原理和设计的思想和思路。
上图是AgileEAS.NET平台的架构简图,也许看第一眼也不甚明白,后续的文章中我们回来详细的阐述该平台的架构。
希望能够通过该系统,大家对该平台有个感性的认识,让大家知道该平台带来的便捷性,或者说是开发成本上的节约,希望能够做到3-5个小规模的团队能够快速的进行
开发。
药店系统我在开发的时候采用的就是敏捷+插件的并行开发的模式,这个如何去理解呢?其实简单的理解为一种软件工程的改进方法。我们平时听过很多的软件工程中的过程改进方法。
听的很多的软件过程开发方法,无论是RUP,敏捷开发,XP编程还是Scrum等具体的实践,无非都是为了需找一种好的开发过程方法,当然AgileEAS.NET敏捷开发平台是提出敏捷并行开发方法,通过插
件的形式来支持。
希望能够通过该说明让大家知道什么是敏捷并行方法?
敏捷并行方法可以简单的这样理解:将每个模块看作是一个插件,插件的开发类似一个敏捷开发过程中的用户故事或者用户故事中的一个细小的模块。然后将多个模块
进行并行的开发模式,最后将并行的模块通过资源管理平台来统一管理这些模块,提供模块之间的功能交互,在开发的周期上可以并行开发,所以就形成了敏捷的并行方法的
产生,也是希望能够最大限度的发挥平台的生产力。
敏捷并行方法的提出的支撑思想:
关于敏捷并行开发方法具体的描述可以从下图来说明:
通过并行开发的方法实践等,最大限度的发挥平台和开发团队的生产力。
每个单独模块的具体的开发流程如下:
上面我们就能知道AgileEAS.NET开发药店系统的项目的背景及目的。
项目的方案和设计
上面我们分析了项目的背景和必要性。本节将会如何实现药品系统及采取的解决方案来分析,对比分析可能的解决方案的优缺点及确认最后的解决方案的相关分析,并
且综合成本,时间等方面的要求来说明为什么采用其中的解决方案。
药店系统的主要功能就是为解决药店的药品管理的进销存及药店的财务流的管理,还包括一些辅助的功能,例如可能药店要包含总店和分店之间的信息传输,分店的所
有数据信息要传递到总店。这个时候,如果我们采用的是BS的解决方案,那么可能会非常的容易,不用担心分布式异地访问的需求,部署起来也会比较的方便,只要客户有浏
览器+Internet网络即可完成系统的访问,但是在用户的体验和用户习惯上会有一些弱化,同时BS的解决方案在功能的强大性和易用性方面叫CS来说较弱。包括对计算机性能
的利用时不如CS来的直接和方便。
一、先确定是采用BS还是CS的解决方案。
经过上图的对比,我们知道医疗或者跟医疗相关的业务都是比较复杂,数据的处理都是比较大的,所以我们经过性能与传输包括客户端的性能等方面的要求,我
们还是考虑采用CS的处理方式,我们在部署上,通过分布式应用服务器的形式,来避免应用程序直接与数据库交互。具体的方案图如下:
上面的图是最简易的分布式访问部署方案,还可以将很多的服务器部署在应用服务器层的前面与后方等,或者是部署在一起等,有很多的方案,还是根据具体的需
求和应用来决定。
二、确定具体的技术实现方案。
我们确定采取C/S形式的方式来构建我们的解决方案,那么我们就来分析下解决方案的实现。首先支持我们的上述结构的解决方案,必须提供如下的几点功能。
1、必须提供分布式访问支持,当然可以采用WCF,但是需要自己写相关的服务来部署和设置。
2、是使用开源的框架+WCF的形式还是采用自己比较熟悉的框架来开发。
3、使用最新的Winfrom客户端开发还是使用老技术来开发。
4、时间与其他方面的硬性要求。
综合上述的几点,我来简单的分析下,WCF内置集成了WebService与Remoting的分布式访问支持,但是与目前市面上的主流的框架或者是平台集成都需要一些
额外的工作。那么市面上有没有什么平台默认已经无缝的底层集成了WCF服务呢,或者内部已经支持了普通的C/S访问与分布式的C/S应用程序的支持呢?这样的平台是有的,
那么我知道的一个完美的解决方案是AgileEAS.NET,该平台通过配置文件即可完成普通模式与分布式模式的无缝切换。
具体是使用开源的框架或者是使用自己比较熟悉的框架呢?有些框架虽然不开源,但是可以免费的使用也不错,如果该平台提供的功能实用并且不管是个人应用
还是企业应用都免费的情况下,也是可以考虑的,当然可能我们担心会有一些底层的问题,我们遇到了无法解决,呵呵,当然有些平台有专门的开发团队来不断的完善平台的
bug与一些扩展性的功能,定期的更新和维护。AgileEAS.NET平台就有这样的一个团队和组织去完善大家说的细节和功能扩展要求。
可能大家又会说,这样的平台有过什么应用吗?有什么案例吗?能不能看看,呵呵,AgileEAS.NET平台的官网也是都挂出来了,包括官方的博客,都有平台的相
关介绍。后续会更详细的书写平台每次更新的bug及新增的功能,及版本号等等,这样会很方便的让大家放心的使用,该平台也是在HIS行业从2005年就开始使用,目前该平
台搭建的HIS系统解决方案医院有几十家,其中不乏三甲医院。
我们使用一个平台,也会关心该平台是不是永久的免费,不会刚开始免费,后续又收费吧,就像reflactor工具一样,AgileEAS.NET的宗旨是永久的免费,不管
是企业应用还是个人商业应用都是免费的。并且AgileEAS.NET平台如果您感兴趣的话,源码也是购买的,并且包括基于AgileEAS.NET之上的HIS解决方案、电子病历等。
平台的源码是不开源的,不过作者说是可以购买。或者是如果对平台做出贡献的开发者,可以索取源码,当然必须是作者认可的贡献,如果大家对平台具体的实
现方案,很感兴趣,或者很想成为一个技术顶尖人员,那么写这样的一个平台,一定是个最快提升的途径。
通过上面的分析,我们知道AgileEAS.NET是一个免费的平台,并且提供了分布式访问支持,并且该平台还提供如下的几部分功能:
我们通过上面能够看出AgileEAS.NET提供的工具和中间件支持,这样无疑能降低我们很多底层细节的开发成本,能够让我们更好的专注具体的业务实现。我们
不需要再去把底层的细节每个都去实现,可能我们还要不断的测试我们的实现的性能,安全,易用性等方面的验证。 我们使用可以的工具更能提高我们的开发速度,降低开发
的成本,提高团队的生产力。
我们确定采用AgileEAS.NET平台提供的功能与中间件支持,我们基于该平台提供的功能来开发出一个完整的药店系统。
总结
通过上面的分析和说明,我们确定本药店系统的具体设计方案,将采用AgileEAS.NET平台进行开发,并且考虑分布式应用等方面的要求,包括性能和开发的易
用性等方面的要求。
后续我们将会针对该AgileEAS.NET平台之上进行药店系统的开发。
本文转自何戈洲博客园博客,原文链接:http://www.cnblogs.com/hegezhou_hot/archive/2011/04/05/2005840.html,如需转载请自行联系原作者