1.背景1.1项目背景软件系统名称:食物检验分析系统提出者:某企业开发者:某软件开发公司1.2编写目的现在的社会虽然经济发展了,科技提高了,但是伴随着一系列的问题也相继出现了,比如人们的造假技术,假的东西越来越多,人们最关心的就是健康了,食品是人类生活必不可少的食物来源。
近年来,世界上发生的诸多危及人身健康的畜禽及其产品的安全事故,如疯牛病、猪口蹄疫、禽流感等,不仅危害畜禽生产,而且还感染了人,甚至致人死亡。
因此,食品的安全卫士已成为世界性的重大课题。
英国发生的疯牛病、猪瘟和比利时发生的二恶英污染事件,不仅造成其生产的动物性食品被禁止上市并大量销毁,而且导致世界各国禁止其动物性食品的进口,估计其经济损失高达13亿元。
从国际上的教训看,食品安全问题的发生不仅使其在经济上受到损失,还可以影响到消费者对政府的信任,威胁社会和国家安全。
比利时的二恶无污染事件不仅使卫生部部长和农业部长下台,也使执政达40年之久的社会党政府倒台。
1999年马来西亚流行猪病毒引起人日本脑炎,使258人发病,100人死亡,90万头猪被销毁。
食品安全成为现在国人最担忧的问题,一种有效的帮人们鉴别出有害化学物品的和分析食物成分的软件和机器势必成为国人们现在的迫切需要。
因此,当今消费者不仅要求食品美味可口,还要求卫生、安全、技术等方面来促使食品向着更安全更卫生的方向发展,必须对加工流程提出更高的标准和要求。
而且现代化城市发展进程要求各检验部门机构等企事业单位要加强工作效率,按时完成指标任务,尽量做到检验,核实,审查无缝隙连接,为客户提供最详细的检验报告,故而一个可以自动生成食品检验报告并且可以通过企业网实现全平台共享数据的食品检验软件可以大大帮助这些企业减少不必要的劳动力,加强工作效率。
1.3需求分析功能需求非功能需求2.架构分析架构设计是将需求内容转换成设计模型的雏形以及用户体验模型,其目的是建立整个系统初步的解决方案,为详细活动打下基础。
2.1体系结构的选择决定采取分布式的还是集中式的体系架构,将是一个影响系统性能、可缩放性、可靠性、易用性及此应用所能支持的客户端类型的重要决策问题。
根据此前的需求得知,系统是为某食品检验单位设计的,考虑到后期的系统推广应用的可能性,采取分布式体系架构更适应今后的变化。
在J2EE开发中,搭配良好的框架可以降低开发人员解决复杂问题的难度,而如何将框架整合起来,以使每一层都向另外的层次以松散的方式来提供接口,同时让组合的三个架构在每一层都以一种松散的方式彼此沟通,从而与底层的技术透明无关,这就是架构分析的目的和要求。
所以我们把Structs、Hibernate和Spring组合起来的目标就是希望能实现系统的“低耦合、高内聚”。
也就是要求系统易于维护、易于适应变更、可重用性的特点。
根据前期对需求的分析,决定采用基于SSH框架来构建此分布式的信息管理系统。
SSH多层的构架模式,从上到下依次为视图层、控制器层、模型层、持久化层和数据库层,如下图所示:2.2框架讲解:视图层:职责是提供控制器,将页面的请求委派给其它层进行处理,为显示提供业务数据模型。
控制层:职责是按预定的业务逻辑处理视图层提交的请求。
(1)处理业务逻辑和业务校验(2)事务处理(3)管理业务层对象之间的依赖关系(4)向表示层提供具体业务服务的实现类模型层:职责是将模型的状态转交视图层,以提供页面给浏览器。
数据持久层:职责是建立持久化类及其属性与数据库中表及其字段的对应关系。
提供简化SQL语句的机制。
实现基本的数据操作(增、删、改、查)数据库层:数据库的建立与管理。
2.3规则(约束)(1)系统各层次及层次内部子层次之间不得跨层调佣(2)由bean传递模型状态。
(3)需要在表示层绑定到列表的数据采用基于关系的数据集传递。
(4)对于每一个数据库表(Table)都有一个DB Entity class与之对应,由Hibernate完成映射。
(5)有些跨数据库或跨表的操作(如复杂的联合查询)也需要由Hibernate来提供支持。
(6)表示层和控制层禁止出现任何SQL语句。
2.4 SHH框架介绍(1)SpringSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。
Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。
Spring的架构基础是基于使用JavaBean 属性的Inversion of Control容器。
然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。
Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。
Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。
Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。
Spring 提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。
这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。
Spring还提供了可以和IoC 容器集成的强大而灵活的MVC Web框架。
(2)STRUCTSStruts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet 和JSP技术来实现的。
由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。
Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
(3)HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC 的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
2.5 数据持久层架构分析在数据持久层,我们使用Hibernate来进行处理,通过下面我们来看看如何通过Hibernate来满足系统的质量属性需求。
Hibernate体系结构概要图:从这个图可以看出,Hibernate通过配置文件和映射文件来实现与数据库的交互及实现对象关系映射(Object Relational Mapping,简称ORM),通过这种机制,将java程序中的对象自动持久化到关系数据库中,对持久化对象的改动都会反映到数据库中。
其中配置文件主要用来配置好数据库连接的各种参数以及定义数据映射文件,通常以hibernate.cfg.xml或者hibernate.properties形式出现;XML Mapping配置文件是数据库中表的数据映射文件,通常以*.hbm.xml形式出现。
Hibernate满足的质量属性需求如下表:(1) 性能Hibernate本质上是包装了JDBC来进行数据操作的,由于Hibernate在调用JDBC上面是优化了JDBC调用,并且尽可能的使用最优化的,最高效的JDBC调用,所以性能令人满意,同时应用程序需要在关联关系间进行导航的时候,由Hibernate 获取关联对象,Hibernate提供的对持久化数据的缓存机制也对系统的性能的提高起了很大的作用。
(2) 安全性Hibernate提供的悲观锁/乐观锁机制,能够在多个用户进行并发操作时保持数据库中数据的一致性与完整性,避免了对数据库中数据的破坏。
(3) 易用性用户在对食品信息进行操作时都得到Hibernate的支持。
2.6业务逻辑架构设计业务逻辑层作为该系统的关键部分,对系统的灵活性实现起着决定性的作用。
在本系统的业务逻辑层架构层中,采取了MVC模式,下面简单介绍一下MVC模式的好处:(1) 实现了客户端表示层和业务逻辑层的完全分离(2) 高效可靠的事务处理(3) 具有良好的易用性,安全性MVC模式访问流程:MVC模式在本系统中应用:当客户利用网页浏览器,发出HTTP请求时,这通常会牵涉到送出表单数据,例如用户名和密码。
Servlet收到这样的数据并解析数据。
Servlet扮演控制器的角色,处理你的请求,通常会向模型(一般是数据库)发出请求。
处理结果往往以JavaBean的形式打包。
视图就是JSP,而JSP唯一的工作就是产生页面,表现模型的视图以及进一步动作所需要的所有控件。
当页面返回浏览器作为视图显示出来,用户提出的进一步请求,也会以同样的方式处理。
由于JSP继承了J2EE良好的易用性和安全性,从而为实现系统的关键质量属性奠定了基础。
在MVC模式中,视图不再是经典意义上的模型的观察者。
当模型发生改变时,视图的确间接的从控制器收到了相当于通知的东西,控制器可以把bean送给视图,以使得视图取得模型的状态。
所以,视图在HTTP响应返回到浏览器时只需要一个状态信息的更新。
只有当页面被创建和返回时,创建视图并结合模型状态才有意义。
这使得提升系统的系能成为可能。
只有当相应的操作被执行,系统才会去获取关联对象,并且视图不会直接模型向注册去接受状态信息,使得系统的安全性得到大大提高。
业务逻辑层的框架:2.7业务逻辑层架构分析:该业务逻辑层的架构是前面MVC模式的一种变形,他继承了MVC 模式的优点,同时,具体到我们的架构中,它又实现了表示层与业务层的完全分离。
在业务逻辑层我们使用Spring框架作为容器,以便实现业务层与表示层和数据层的松耦合。
该业务逻辑层架构具备良好的易用性、安全性和性能。
2.8整体框架3.可行性分析3.1经济可行性3.1.1投资成本本系统开发由一个项目总监和一个测试人员一个高级软件工程师,化学研究人员小组3人,营养师一人共7人组成的团队,开发周期为45天,化学研究小组和营养师不是本公司费用开销范围之内由项目提出者出资,公司投入的三个人,直接付7万的工资及各种福利待遇。
在项目安装以及调试阶段,用户培训,员工出差等费用需要2.5万元,在项目维护阶段预计需要投入2万,项目累计需要11.5万元资金。
3.1.2预期收益假设投入本系统,效率可以提高50%,以现有的工作人员20人计算,可减少10人,每人每月平均工资按2500元计算,每年节约人员工资5×12×0.25=15万元/年。