软件项目招标文件技术标书
(此文档为word 格式, 下载后您可任意修改编辑!)
12.4.2 供应商针对本项目技术服务类总体要求的理解
在软件开发的过程中,我们一向遵循软件产品的以下原则:
1、功能性:与一组功能及其指定的性质有关的一组属性,具体包括:
适合性:与规定任务能否提供一组功能以及这组功能的适合程度有关的软件属性
准确性:与能否得到正确或相符的结果或效果有关的软件属性
互用性:与同其他指定系统进行交互的能力有关的软件属性
依从性:使软件遵循有关的标准, 约定, 法规及类似规定的软件属性
安全性:与防止对程序及数据的非授权的故意或意外访问的能力有关的软件属性
2、可靠性:与在规定的一段时间和条件下, 软件维持其性能水平的能力有关的一组属性,具体包括:
成熟性:与由软件故障引起失效的频度有关的软件属性
容错性:与在软件故障或违反指定接口的情况下, 维持规定的性能水平的能力有关的软件属性
易恢复性:与在失效发生后, 重建其性能水平并恢复直接受影响数据的能力以及为达此目的所需的时间和能力有关的软件属性
3、易用性:与一组规定或潜在的用户为使用软件所需作的努力和对这样的使用所作的评价有关的一组属性,具体包括:
易理解性:与用户为认识逻辑概念及其应用范围所花的努力有关的软件属性
易学性:与用户为学习软件应用所花的努力有关的软件属性
易操作性:与用户为操作和运行控制所花努力有关的软件属性
4、效率:与在规定的条件下, 软件的性能水平与所使用资源量之间关系有关的一组属性,具体包括:
时间特性:与软件执行其功能时响应和处理时间以及吞吐量有关的软件属性
资源特性:与在软件执行其功能时所使用的资源数量及其使用时间有关的软件属性
5、可维护性:与进行指定的修改所需的努力有关的一组属性,具体包括:
易分析性:与为诊断缺陷或失效原因及为判定待修改的部分所需努力有关的软件属性 易改变性:与进行修改, 排除错误或适应环境变化所需努力有关的软件属性
稳定性:与修改所造成的未预料结果的风险有关的软件属性
易测试性:与确认已修改软件所需的努力有关的软件属性
6、可移植性:与软件可从某一环境转移到另一环境的能力有关的一组属性,具体包括: 适应性:与软件无需采用有别于为该软件准备的活动或手段就可能适应不同的规定环境有关的软件属性
易安装性:与在指定环境下安装软件所需努力有关的软件属性
遵循性:使软件遵循与可移植性有关的标准或约定的软件属性
易替换性:与软件在该软件环境中用来替代指定的其他软件的机会和努力有关的软件属性
基于以上原则,根据项目的不同需求,我们将会考虑采用B/S和C/S两种模式开发。
1、B/S模式
B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser ),如Netscape Navigator 或Internet Explorer,服务器安装Oracle 、Sybase 、Informix 或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。B/S模式较C/S模式:
C/S模式客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。C/S模式对客户端的操作系统一般也会有限制,可能适应于Windows 系列操作系统,而不适用于Linux 、Unix 等操作系统。
而B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA 证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统,这在最大程度上满足了项目要求。
系统采用的是目前较流行的一种Web 应用程序开源框架--Struts+Spring+Hibernate(SSH )。
集成SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web 应用程序。其中使用Struts 作为系统的整体基础架构,负责MVC 的分离,在Struts 框架的模型部分,利用Hibernate 框架对持久层提供支持,业务层用Spring 支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java 对象,然后编写基本的DAO 接口,并给出Hibernate 的DAO 实现,采用Hibernate 架构实现的DAO 类来实现Java 类与数据库之间的转换和访问,最后由Spring 完成业务逻辑。 系统的基本业务流程是: 在表示层中,首先通过JSP 页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts 根据配置文件
(struts-config.xml)将ActionServlet 接收到的Request 委派给相应的Action 处理。在业务层中,管理服务组件的Spring IoC容器负责向Action 提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于
Hibernate 的对象化映射和数据库交互,处理DAO 组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率的同时,也保证了软件产品的质量。
2、C/S模式
C/S (Client/Server,客户机/服务器)模式又称C/S结构,是20世纪80年代末逐步成长起来的一种模式,是软件系统体系结构的一种。C/S结构的关键在于功能的分布,一些功能放在前端机(即客户机)上执行,另一些功能放在后端机(即服务器)上执行。功能的分布在于减少计算机系统的各种瓶颈问题。C/S模式简单地讲就是基于企业内部网络的应用系统。与B/S(Browser/Server,浏览器/服务器)模式相比,C/S模式的应用系统最大的好处是不依赖企业外网环境,即无论企业是否能够上网,都不影响应用。
C/S结构服务器通常采用高性能的PC 、工作站或小型机,并采用大型数据库系统,如ORACLE 、SYBASE 、InfORMix 或 SQL Server。客户端需要安装专用的客户端软件。
C/S结构的优点是能充分发挥客户端PC 的处理能力,很多工作可以在客户端处理后再提交给服务器, 因此对应的优点就是客户端响应速度快。
C/S架构软件的优势与劣势:
(1)应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。 C/S模式系统的开发:
C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应 用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发 人员的掌握水平来看,C/S技术应是更成熟、更可靠的。
12.4.3 项目总体架构及技术解决方案
一、项目总体架构
(一)、SSH 框架介绍和分析
大型企业级Web 应用系统的开发通常要求有一个良好的软件架构、便于协作开发和扩展升级,而传统的开发模式不能很好地满足这些要求。
基于当前Web 应用程序开发面临的问题,项目结合目前比较流行的开源框架SSH (Spring 、Struts 、Hibernate) ,具体讨论其基本相似性及有关基本概念,提出了一种开发JavaEE Web 应用的轻量级解决方案,此系统架构可以在短期内搭建结构清晰、可复用性好、可扩展性好、维护方便的Web 应用程序。
1、框架技术
框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。JavaEE 复杂的多层结构决定了大型的JavaEE 项目需要运用框架和设计模式来控制软件质量。目前,市场上出现了一些商业的、开源的基于JavaEE 的应用框架,其中主流的框架技术有:基于MVC 模式的Struts 框架、基于IoC 模式的Spring 框架以及对象/关系映射框架Hibernate 等。
2、框架共同点
所有现代的网络开发框架几乎都遵循了模型-视图-控制(MVC)设计模式:商业逻辑和描述被分开,由一个逻辑流控制器来协调来自客户端的请求和服务器上将采取的行动。这条途径成为了网络开发的事实上的标准。每个框架的内在的机制当然是不同的,但是开发者们使用来设计和实现他们的Web 应用软件的API 是很类似的。差别还存在于每个框架提供的扩展方面, 例如标签库,JavaBean 包装器等。
所有的框架使用不同的技术来协调在Web 应用程序之内的导航, 例如XML 配制文件,java 属性文件或定制属性。所有的框架在控制器模块实现的方法方面也存在明显的不同。例如,EJB 可能实例化在每个请求中需要的类或使用Java 反射动态地调用一个适当的行为(Action )类。另外, 不同框架在各自引入的概念上也有所不同。例如, 一个框架可能定义用户请求和反应场所,而另外一个框架可能仅仅定义一个完整的流:从一个请求到多个响答和随后的再请求。
各种Java 框架在它们组织数据流的方法方面是很类似的。在请求发出后,在应用程序服务器上产生一些行动;而作为响应,一些可能包含对象集的数据总是被发送到WEB 层。然后从那些对象:可能是有setter 和getter 方法的简单类、JAVABEANS 、值对象、或者一些集合对象中提取数据。现代的Java 框架还想方设法简化开发者的开发任务,如通过使用简易的API 、数据库连接池、甚至数据库调用包等提供自动化的追踪方式来实现。一些框架或者能够钩进(hooked into )另外的JavaEE 技术中, 例如JMS(Java消息服务) 或JMX, 或把这些技术集成到一起。服务器数据持续性和日志也有可能成为框架的一部分。
3、MVC 模式
MVC 模式是一个用于将用户界面逻辑与业务逻辑分离开来的基础设计模式,它将数据处理、界面以及用户的行为控制分为:Model (模型)-View (视图)-Controller (控制器)。 Model:负责当前应用的数据获取与变更及相关的业务逻辑。可用JAVABEAN 来体现; View:负责显示信息。可以使用JSP 、VELOCITY 模板等技术;
Controller:负责收集转化用户的输入。常用一个SERVLET 来实现;
View 和Controller 都依赖于Model ,但是Model 既不依赖于View ,也不依赖于
Controller ,这是分离的主要优点之一,这样Model 可以单独的建立和测试以便于代码复用,View 和Controller 只需要Model 提供数据,它们不会知道、也不会关心数据是存储在SQL Server 还是Oracle 数据库中或者别的什么地方。
4、 WEB层框架Struts
Struts是一个在JSP Model2基础上实现的MVC 框架,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性及可重用性。Struts 框架的体系结构如下图所示:
下面就上图所示的体系结构图分析Struts 框架中的MVC 组件。
视图(view):视图部分主要由JSP 页面组成,其中没有流程逻辑、业务逻辑和模型
信息,只有标记。Struts 自身包含了一组标记库(TagLib),这也是Struts 的精华之一,灵活运用它们可以简化JSP 页面的代码,提高开发效率。
控制器(controller):Struts 中的Controller 主要是其自身提供的
ActionServlet 。ActionServlet 接收所有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action 对象。
模型(model):Struts 没有定义具体Model 层的实现,Model 层通常是和业务逻辑
紧密相关的,有持续化的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model 层的开发提供便利。
5、业务逻辑层框架Spring
Spring是一个解决了许多JavaEE 开发中常见问题并能够替代EJB 技术的强大的轻量级框架。这里所说的轻量级指的是Spring 框架本身,而不是指Spring 只能用于轻量级的应用开发。Spring 的轻盈体现在其框架本身的基础结构以及对其他应用工具的支持和装配能力。与EJB 这种庞然大物相比,Spring 可使程序研发人员把各个技术层次之间的风险降低。 Spring框架的核心是控制翻转IoC(Inversion of Control)/依赖注入DI(Dependence Injection) 机制。IoC 是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移,称为“翻转”。DI 是对IoC 更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对象或接口) 注入到组件之中。Spring 采用设值注入(使用Setter 方法实现依赖) 和构造子注入(在构造方法中实现依赖) 的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC 容器。这样,不需要编写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。Spring 框架的结构如下图所示。
Spring框架由七个定义明确的模块组成,且每个模块或组件都可以单独存在,或者与