可行性分析报告.docx
《可行性分析报告.docx》由会员分享,可在线阅读,更多相关《可行性分析报告.docx(11页珍藏版)》请在冰豆网上搜索。
![可行性分析报告.docx](https://file1.bdocx.com/fileroot1/2023-2/7/53422251-733c-4366-bdb2-b84b2c41aaf3/53422251-733c-4366-bdb2-b84b2c41aaf31.gif)
可行性分析报告
1.背景
1.1项目背景
软件系统名称:
食物检验分析系统
提出者:
某企业
开发者:
某软件开发公司
1.2编写目的
现在的社会虽然经济发展了,科技提高了,但是伴随着一系列的问题也相继出现了,比如人们的造假技术,假的东西越来越多,人们最关心的就是健康了,食品是人类生活必不可少的食物来源。
近年来,世界上发生的诸多危及人身健康的畜禽及其产品的安全事故,如疯牛病、猪口蹄疫、禽流感等,不仅危害畜禽生产,而且还感染了人,甚至致人死亡。
因此,食品的安全卫士已成为世界性的重大课题。
英国发生的疯牛病、猪瘟和比利时发生的二恶英污染事件,不仅造成其生产的动物性食品被禁止上市并大量销毁,而且导致世界各国禁止其动物性食品的进口,估计其经济损失高达13亿元。
从国际上的教训看,食品安全问题的发生不仅使其在经济上受到损失,还可以影响到消费者对政府的信任,威胁社会和国家安全。
比利时的二恶无污染事件不仅使卫生部部长和农业部长下台,也使执政达40年之久的社会党政府倒台。
1999年马来西亚流行猪病毒引起人日本脑炎,使258人发病,100人死亡,90万头猪被销毁。
食品安全成为现在国人最担忧的问题,一种有效的帮人们鉴别出有害化学物品的和分析食物成分的软件和机器势必成为国人们现在的迫切需要。
因此,当今消费者不仅要求食品美味可口,还要求卫生、安全、技术等方面来促使食品向着更安全更卫生的方向发展,必须对加工流程提出更高的标准和要求。
而且现代化城市发展进程要求各检验部门机构等企事业单位要加强工作效率,按时完成指标任务,尽量做到检验,核实,审查无缝隙连接,为客户提供最详细的检验报告,故而一个可以自动生成食品检验报告并且可以通过企业网实现全平台共享数据的食品检验软件可以大大帮助这些企业减少不必要的劳动力,加强工作效率。
1.3需求分析
功能需求
功能
说明
职工信息管理
用户的创建、登录、删除和维护
食品信息管理
食品的编号、查询和维护
检验信息管理
检验信息的录入、查询、删除和维护
非功能需求
质量属性
说明
性能
用户访问的系统应该能在规定的时间内做出响应,如果系统由于网络或者数据库原因不能在规定时间内做出响应,那么系统应该提出警告,不能出现用户无故长时间等待的情况。
安全性
在Web数据库客户端,Web服务器和数据库服务器之间,都应该有防火墙保护,防止网络上的非法数据请求。
易用性
不同的用户应该能够以不同的形式访问不同的内容。
可用性
系统提供7*24小时的服务,且很少停机。
可测试性
系统的各部分易于单独测试,并能方便地进行整体测试。
2.架构分析
架构设计是将需求内容转换成设计模型的雏形以及用户体验模型,其目的是建立整个系统初步的解决方案,为详细活动打下基础。
2.1体系结构的选择
决定采取分布式的还是集中式的体系架构,将是一个影响系统性能、可缩放性、可靠性、易用性及此应用所能支持的客户端类型的重要决策问题。
根据此前的需求得知,系统是为某食品检验单位设计的,考虑到后期的系统推广应用的可能性,采取分布式体系架构更适应今后的变化。
在J2EE开发中,搭配良好的框架可以降低开发人员解决复杂问题的难度,而如何将框架整合起来,以使每一层都向另外的层次以松散的方式来提供接口,同时让组合的三个架构在每一层都以一种松散的方式彼此沟通,从而与底层的技术透明无关,这就是架构分析的目的和要求。
所以我们把Structs、Hibernate和Spring组合起来的目标就是希望能实现系统的“低耦合、高内聚”。
也就是要求系统易于维护、易于适应变更、可重用性的特点。
根据前期对需求的分析,决定采用基于SSH框架来构建此分布式的信息管理系统。
SSH多层的构架模式,从上到下依次为视图层、控制器层、模型层、持久化层和数据库层,如下图所示:
2.2框架讲解:
视图层:
职责是提供控制器,将页面的请求委派给其它层进行处理,为显示提供业务数据模型。
控制层:
职责是按预定的业务逻辑处理视图层提交的请求。
(1)处理业务逻辑和业务校验
(2)事务处理
(3)管理业务层对象之间的依赖关系
(4)向表示层提供具体业务服务的实现类
模型层:
职责是将模型的状态转交视图层,以提供页面给浏览器。
数据持久层:
职责是建立持久化类及其属性与数据库中表及其字段的对应关系。
提供简化SQL语句的机制。
实现基本的数据操作(增、删、改、查)
数据库层:
数据库的建立与管理。
2.3规则(约束)
(1)系统各层次及层次内部子层次之间不得跨层调佣
(2)由bean传递模型状态。
(3)需要在表示层绑定到列表的数据采用基于关系的数据集传递。
(4)对于每一个数据库表(Table)都有一个DBEntityclass与之对应,由Hibernate完成映射。
(5)有些跨数据库或跨表的操作(如复杂的联合查询)也需要由Hibernate来提供支持。
(6)表示层和控制层禁止出现任何SQL语句。
2.4SHH框架介绍
(1)Spring
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。
Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。
Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。
然而,这仅仅是完整图景中的一部分:
Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。
Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。
Spring的数据访问架构还集成了Hibernate和其他O/Rmapping解决方案。
Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。
Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。
这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。
Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。
(2)STRUCTS
Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。
Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
(3)Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
2.5数据持久层架构分析
在数据持久层,我们使用Hibernate来进行处理,通过下面
我们来看看如何通过Hibernate来满足系统的质量属性需求。
Hibernate体系结构概要图:
从这个图可以看出,Hibernate通过配置文件和映射文件来实现与数据库的交互及实现对象关系映射(ObjectRelationalMapping,简称ORM),通过这种机制,将java程序中的对象自动持久化到关系数据库中,对持久化对象的改动都会反映到数据库中。
其中配置文件主要用来配置好数据库连接的各种参数以及定义数据映射文件,通常以hibernate.cfg.xml或者hibernate.properties形式出现;XMLMapping配置文件是数据库中表的数据映射文件,通常以*.hbm.xml形式出现。
Hibernate满足的质量属性需求如下表:
目标
实现方式
所采用的方法
性能
当应用程序需要在关联关系间进行导航的时候,由Hibernate获取关联对象。
同时,Hibernate的Session在事务级别进行持久化数据的缓存操作。
抓取策略
缓存机制
安全性
并发操作时,保证数据的排他性
使用锁机制
易用性
用户在进行CRUD操作请求时,可以得到Hibernate的及时处理,迅速得到反馈
封装JDBC
(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万元/年。
按年利率5%计算,效益计算如下表。
系统收益总额为:
64.9422万元。
3.1.3成本\收益分析
改善了费用过高的缺点,在费用支出方面有一个很好的改善,用户只需花费一定的资金就可以实现自动化开发方面。
从经济上考虑,开发本系统完全可行的。
3.2技术可行性
食品检测系统的实现技术有多种,可以采用传统的客户机/服务器型的B/S型架构,即文件内容放在远程的服务器上,用户通过在其他计算机上登陆服务器。
进入网络硬盘系统。
由于受条件所限制,数据库服务器端采用大型数据库系统,这有利于缩短大批量数据的吞吐时间,使整个系统管理规范化,数据的完整性、安全性得到保障.应用服务器端采用中间件计算模式(IBMWebSphereApplicationServer),分模块层次结构,多模块分立,允许系统的分布处理,以提高系统的工作效率。
所使用的技术主要是S2SH(struts2、hibernate、spring)以及javascript、jquery、css、html,这些技术都已经开设过课程,我们也已经掌握了。
开发系统的计算机硬件已经非常普及,所以完全没有问题;现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的。
3.3社会可行性
3.3.1法律因素
全部软件购买正版;机器设置通过正当途径购得;所有软件都用正版,技术资料都由提出方保管,数据信息均可保证合法来源。
所以,在法律方面是可行的。
3.3.2用户使用可行性
开发的系统操作要非常简单,以便适合各类人群都可以很方便操作使用。
4.评价
5.结论