系统概要设计

  在完成了上一章的需求分析后,应该到达的目标是:对系统有一个整体的认识,包括每个功能实现的流程,产生的数据,技术基础等。

  基于以上的认识,就可以开始对该系统进行概要设计。

    • 首先设计系统的总体架构。
    • 然后利用顺序图描述基于该架构下各个类如何协作实现各个待开发的功能。
    • 最后整理总结出数据字典。
  • 系统总体架构设计

  在该系统中,作者采用的系统框架是Struts2,Spring4,Hibernate4和Bootstrap,根据各个框架自身的特点做出以下的系统架构设计:

  

  设计依据

    • 展示层

    1、Struts2是一个展现层的MVC框架,它解决了jsp页面代码与业务逻辑代码耦合的问题。提供了Filter的机制,对用户的请求进行拦截,然后分派到对应的Action类中进行处理,最后根据Action类的处理结果返回对应的响应页面。在该Filter的帮助下页面的代码不需要参杂任何的业务逻辑代码,而Action类中通过调用业务逻辑层提供的接口,则可以实现对请求的处理。

    2、因为作者并不擅长前端页面的开发,所以只能够采用当前网页开发中比较流行的前端框架Bootstrap,Bootstrap也提供了比较好的排版以及基本的样式效果,最后实现的整体效果也还算过得去。

    • 业务逻辑层

    Spring4提供了两个最重要的组件IoC和AOP,所以Spring最适合设计在业务逻辑层,从数据访问层获取数据,为展示层提供业务逻辑的实现,作一个承上启下的功能。

    Spring的IoC容器,简化了开发人员对类与类之间依赖关系的维护,在利用Spring进行开发的过程中,只需定义需要的接口,而对应的实例化过程则交给IoC容器来进行注入。这实际上也是一种解耦的操作,通过结合Spring和面向接口的编程思想,实际开发出来的代码十分的简洁,而且逻辑清晰明确。同时也提高了功能类的代码复用率。

    Spring的AOP,带来最大的好处就是让开发人员从繁琐的事务操作代码中解放出来,让开发人员更加专注于业务逻辑代码的实现。

    同时在Spring4和Struts2整合之后,将Action类的生成也交给了IoC容器来管理。

    • 数据访问层  

    Hibernate4是一个ORM框架,能够将实体类直接映射到数据库表,在开发中只要定义好实体类之间的关系,数据库表与表之间的关系也就确立下来了。

    同时Hibernate提供了一些基本的数据库操作,让开发人员不需要纠结于复杂的SQL。也提供了HQL,将以往面向数据库表的查询,改变为面向实体类进行的数据查询。

    • Value Object 值对象

    贯穿于各层的是值VO值对象,设计的目的,主要是考虑到业务逻辑实现过程中需要的数据结构可能与保存到数据库中的实体类不一致,所以才有了值对象的出现。例如:在User类中只需要用户名和密码,但是在实际的注册过程中,可能还需要再次输入密码,来确保用户输入的正确性,此时值对象设计的意义就出现了。 

  在该系统架构中,基本业务流程处理如下:

    1、在展示层中,利用Bootstrap框架构建相应的Jsp页面,实现用户与系统之间的交互界面。

    2、利用Jsp页面传送用户的操作请求request和接受系统返回的响应response。在系统接收到jsp页面中传来的操作请求后,Struts2根据Struts.xml配置文件,将不同的请求分派到对应的Action中进行处理,并且根据Action处理后返回的字符串,返回对应的Jsp响应页面。

    3、在Action中,通过业务逻辑接口调用业务逻辑层的业务功能实现。

    4、在业务逻辑层中,Spring的IOC容器负责向展现层提供实体对象(Model)、值对象(Vo)以及对应的业务逻辑处理实体,同时为Hibernate提供SessionFactory、可声明的事务管理。

    5、在数据访问层,Hibernate利用*.hbm.xml文件实现实体对象与数据库表之间的映射,利用session和HQL语句实现与数据库之间的交互。同时通过数据访问控制接口向业务逻辑层提供数据操作功能,并返回相应的操作结果。

  利用上述的系统架构进行开发,可以发现在展现层中,实现了视图(view),控制器(controller),模型(model)的彻底分离,同时展现层,业务逻辑层,数据访问控制层三层之间通过接口进行连接,这样就实现了三层的分离,很大程度上的降低了系统各个功能模块之间的耦合度。只要能提供接口的实现,各层发生怎么样的变化都不会影响到其它层的功能实现。这样的层次结构设计,提高了系统的可复用性,以及开发的灵活性。并且因为各个模块之间的耦合度小,有利于开发团队的成员能够选择自己擅长的开发方向,进行并行开发,也可以进行独立的单元测试,大幅度地提高了开发的效率以及缩短了系统开发的周期。

  • 功能实现顺序图

  顺序图是系统动态方面的建模,主要是为了分析在业务逻辑功能实现过程中,对象创建,改变,销毁的时间,以及它们之间相互调用的关系。更重要的是通过顺序图,可以明确各个类在实现业务逻辑功能过程中的职责,在接下来的详细设计中也可以通过顺序图,对各层中的接口进行定义。

  为了达到上述的要求,顺序图的绘制过程也有需要注意的事项:

    1、画图的方向需要从左到右,从上往下。

    2、在绘制的过程中主要考虑展现功能实现正常的情况。

  登录

  

  注册

  

  添加购物车

  

  查看购物车

  

  购买

  

  查看订单

  

  检索商品

  

  商品信息管理

  

  用户管理

  

  • 数据字典

  购物车表(id(自增),用户名,商品编码,购买数量),保存会员添加到购物车中的商品信息。会员生成订单时,对应用户名的购物车表全部删除。

  

  订单表(id(自增),用户名,收货地址,联系电话,支付状态),保存用户的订单记录信息。

  

  订单_商品表(订单表id,商品编码,购买数量,商品价格),保存订单与订单中商品之间的联系。

  

  用户表(id(自增),用户名,密码),保存用户的登录信息。

  

 

  商品表(商品编码,商品名称,商品类型,商品图片,商品价格,商品概述,商品详细介绍),保存商品的描述信息。

  

posted on 2017-05-05 00:10  sillypasserby  阅读(14179)  评论(0编辑  收藏  举报

导航