软件概要设计-模板
1 引言
1.1 编写目的
本说明书目的在于明确说明系统各功能的实现方式,指导开发员进行编码。
本说明书的预期读者为:系统设计者、系统开发员。
1.2 背景
待开发软件系统的名称:物流配送管理系统
此软件系统任务提出者:客户(从事物流业)
此软件系统任务开发者:IT_MOB小组
此软件系统任务用户:需要提供配送的客户、配送点和物流总公司
1.3 基线
物流配送管理系统需求分析说明书 v1.0
1.4 特殊名词定义
客户:客户分为已达成交易的实际客户和未交易的潜在客户,本文档涉及到的所有客户都是已注册并登陆客户端的用户。
1.5 参考资料
属于本项目的其他已发表的文件。
本文件中引用的其他文献、资料以及软件开发标准。
2 总体设计
2.1 概述
2.2 系统环境描述
系统包括的范围:物流配送管理系统。
2.2.1 运行环境
2.2.1.1 软件环境
分类 |
名称 |
版本 |
语种 |
操作系统 |
Windows XP |
2000 |
简体中文 |
操作系统的附加功能 |
SP4 |
3 |
简体中文 |
数据库平台 |
oracle |
92 |
简体中文 |
应用平台 |
tomcat |
5.0 |
简体中文 |
邮件系统 |
Foxmail |
4.2.0 |
简体中文 |
客户端软件 |
MS IE |
7.0 |
简体中文 |
2.2.1.2 硬件环境
服务器 |
最低配置 |
推荐配置 |
应用和数据库服务器 |
1CPU:P4 2.0G |
1CPU:P4 2.8G |
Mem:512M |
Mem:2G |
|
HD:40G |
HD:120G |
|
|
|
|
邮件服务器 |
Webmail |
2CPU core2 2.4GB |
2.2.2 开发环境
2.2.2.1 服务器软件环境
分类 |
名称 |
版本 |
语种 |
操作系统 |
Windows server |
2003 |
简体中文 |
数据库平台 |
oracle |
92 |
简体中文 |
应用平台 |
tomcat |
5.0 |
简体中文 |
邮件系统 |
Foxmail |
4.2.0 |
简体中文 |
2.2.2.2 服务器硬件环境
服务器 |
最低配置 |
推荐配置 |
应用服务器、数据库服务器、邮件服务器、目录服务器 |
1CPU:P4 2.0G |
1CPU:P4 2.8G |
Mem:512M |
Mem:2G |
|
HD:40G |
HD:120G |
2.2.2.3 开发机器软件环境
分类 |
名称 |
版本 |
语种 |
操作系统 |
Windows XP |
2000 |
简体中文 |
数据库平台 |
oracle |
92 |
简体中文 |
应用平台 |
tomcat |
5.0 |
简体中文 |
开发平台 |
JDK |
1.5 |
英文 |
2.2.2.4 开发机器硬件环境
分类 |
最低配置 |
推荐配置 |
开发机器 |
1CPU:P4 2.0G |
1CPU:P4 2.8G |
Mem:512M |
Mem:2G |
|
HD:40G |
HD:120G |
2.3 系统总体结构设计
2.3.1 系统业务层次图
内容描述:物流管理系统是应当前物流发展趋势的产物,旨在为物流组成的各项业务提供一个完整、统一的平台,具有信息共享,资源合理分配,业务协调统一的特点。它分为前台客户端、后台总公司与分公司端共三个子系统。
图例:
功能简介(类似需求分析):
客户端:查询运费,下订单和订单进度查询;
分公司:订单管理(下订单,订单审核,订单修改,订单状态修改),订单异常处理(订单异常处理登记,订单异常处理查询),订单发货(待发订单查询,加开班次申请,交接单生成,交接单绑定,紧急订单提醒,班次查询),交接单管理(交接单生成,交接单绑定,交接单确认,交接单修改),订单收获(交接单确认,交接单修改,班次查询),货物配送(库存订单查询,订单确认),本地信息设置(中转路线选择,配送价格申报);
总公司:配送点管理(添加新配送点,审核各配送点申报的配送费方案),财务管理(统计各部门收益,制定和调整利润分配方案),信息查询(交接单查询,订单查询),线路设置(建立基本线路,管理线路,提供线路查询),运费管理(制定和修改运费方案,提供运费查询),车辆管理(维护车辆基本信息),班次管理(设置班次,为配送点提供班次查询,处理配送点加急班次申请),权限管理(权限分配,后台用户的管理)。
2.3.2 系统架构说明
说明整个系统的软硬件架构层次:
图例如下:
2.3.3 软件架构说明(选作)
书写要求:根据系统设计的功能层次逐一说明(与需求分析中的“系统功能总体说明
”部分的内容基本一致)
2.2.1.2系统架构设计说明
书写要求:根据系统的功能需求设计并说明系统开发所采用的软件开发架构。
书写样例:
Jsp & Servlet & JavaBean架构
架构结构
具体架构层次如图4.1所示。
图 4.1 Jsj架构结构
各层实现功能说明
View层是与客户的交互层,负责提交用户请求和数据,并将后台的响应结果返回给客户层。同时提供客户提交信息的javasript验证功能。
Control层负责项目中业务功能实现流程的管理工作。如:具体的业务功能由哪些类来实现,实现结果有谁来显示等等,必须由Control层来决定。同时Control层还要负责与其它两层的通信,这个过程还需要一些bean类来协助传递信息,另外Control层还要负责请求的转发与从定向。从Control层所负责的功能上不难想象的到在业务逻辑相对复杂的时候此层代码编写会略显繁重和复杂。
Model层主要是一些实现具体业务功能的类,在这里可以统一简称为Business类。也可以将架构中除了Servlet控制器之外的所有类统一叫做Javabean类。从这种命名方式上可以看出,model层在实现业务功能是具体的实现方式比较自由,但在业务逻辑比较复杂的情况下model层职能的划分会出现问题,可能会造成一定混乱和不便。设想一下如果可以更明确的将model层进一步划分使之变得更有条理,这样就会增强该层的可维护性了。
特别说明,图4.1 中的“bean”可以看作数据封装类,它以实例对象的形式作为各层之间数据通信的载体,实际上这些对象也属于业务对象,如User对象、Book对象。
Jsp & Servlet & JavaBean架构特点说明
1.架构的优点
结构简单明了,搭建时配制信息很少只有一个文件“web.xml”,该文件主要用来映射Servlet。Control层的应用一定程度上将Jsp中的Java代码分离出来,使得jsp文件的复杂程度有所降低。另外该架构涉及到的架构知识较少,很容易上手。基于Java语言的Web开发技术掌握难易顺序大致可参见图4.2所示。
图4.2 基于Java语言的Web开发技术掌握难易顺序
通过图4.2 可见Jsp+Servlet+JavaBean 这种架构技术组合难度是很低的。
2.架构的缺点
不能将Java代码完全从页面上脱离,页面中会用Js验证代码,使Jsp页面结构相对复杂,不易维护。Control层读取客户提交的信息要逐条操作,代码书写比较麻烦,Controler层要定义处理响应的分支和model层类的调用,使得Controler本身内容较多不便开发和维护。
另外Jsp+Servlet+JavaBean架构技术组合层次简单,各层的代码开发较随意自主,尤其是在JavaBean实现的Model层由于完成的业务功能多种多样,如果开发人员没有很好的遵循一定开发规范或是开发思路不清晰,那么代码开发会变得混乱。为了解决这些问题,引入一定的架构技术来调理代码开发就变得很必要了。下面一节将Struts、Spring、Hibernate三种比较流行的架构技术引进架构设计中来构建一种较为复杂却层次清晰得的开发模式。
具体架构层次如图4.3所示。
SSH架构结构图(图例1)
n 各层实现功能及开发技术说明
1.四层结构的优势
1)通过成熟的开源产品实现各层功能开发,比起自己开发能缩短开发周期,且架构所用到的开源产品均有很广泛的用户群,经受过实践的考验,质量和性能更有保障。
2)层与层之间松散偶合,增加代码重用率。
3)各层分工明确,这样也利于团队的明确分工。
2.表示层
这一层是面向用户的界面,是用户与系统之间交互的媒介。如:用户在界面发送请求,系统接收请求,进行处理,然后通过界面将结果呈现于用户。这一过程包括了用户动作、数据传递、界面显示。大家熟悉的MVC模式就是将这三者分离,减少三者耦合。我们在该层借助了Struts来实现。
2)Struts的实现的功能:
管理用户的请求,做出相应的响应。
提供一个Controller,委派调用业务逻辑和其它上层处理。
处理异常,抛给Struts Action.
为显示提供一个模型。
UI(User interface)验证。
以下部分则不该在Struts显示层的编码中经常出现。因为在表示层引入这些代码,则会带来高偶合和非常麻烦的维护代价。
直接的与数据库通信,如JDBC调用。
与你应用程序相关联的业务逻辑以及校验。
3.业务层
业务层在实际的项目开发中,每个领域都会有自己独特的业务逻辑,正因为这样,致使项目中代码高度偶合,原本有可能被重用的代码或功能,因为与具体的业务逻辑绑定在一块而导致很难被重用。因此我们将实现这些具体逻辑的代码抽取出来分为单独的一层,其目的是希望通过分层,来降低它与系统其他部分的偶合度。
现实中世界是变化的,既然该层实现的是现实中具体的业务逻辑,那该层的实现代码不可避免的会发生变更。怎样让该层适应最大的变化,做到最小的改动?通常我们在编码的时候会尽量考虑到同一业务多种实现的兼容和可扩展的能力。因此我们在该层借助了Spring,通过依赖注入、AOP应用、面向接口编程,来降低业务组件之间的偶合度,增强系统扩展性。
2)Spring实现的功能:
处理应用程序的业务逻辑和业务校验。
管理事务。
提供与其它层协同工作的接口。
管理业务层级别的对象的依赖。
在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起。
通过揭示从显示层到业务层之间的Context来得到business services。
管理程序的执行(从业务层到持久层)。
4.数据持久层
数据持久层在开发中与数据库进行数据交互必不可少,通常我们归为CRUD(添加、读取、修改、删除),这些操作占据了系统开发中大部分的时间,同时我们还需要考虑与数据库交互的性能问题,如连接池、数据缓存等等。系统内部的持续层不但需要大量调试时间,而且还经常缺少功能使之变得难以控制。针对这点我们引入ORM开源架构Hibernate。
2)Hibernate实现的功能:
查询对象的相关信息的语句。
存储,更新,删除数据库记录。
支持大部分主流数据库,并且支持Parent/Child关系,事物处理,继承和多态。
5.各层中的封装类
各层的封装类的主要功能都是一致的,就是将有一定联系的数据集合装载在其实力对象中,这样做的道路是显而易见的,通过对象来传递数据集合的效率会更高更方便。
显示层的FormBean类是用封装来自页面form提交的信息的,一般情况下这个类的私有变量是与页面form的元素一一对应的。另外FormBean封装类的对象还负责将要显示的信息传递到显示层,其作用是双向的。
业务逻辑层的ValueObject类是用来封装一定业务功能实现过程中需要的数据集合的,也就是说要封装的数据都是由业务功能的需要决定的。
持久层的PersistObject类,其实例化对象所封装的数据集是与数据库中表相对应的,即表项对应要封装的数据项。
我们根据上面封装类的说明可以看出,FormBean、ValueObject、PersistObject、三者的作用相似都是为了封装数据信息,不同的是这些对象所在的是不同架构层面,这样做的好处是数据的处理和转递比较有条理,层次清晰易于维护。封装类在架构中的情况如图4.4所示。
各层封装类的情况(图例2)
2.3.4 关键技术与算法
书写要求:
对系统中比较复杂的功能的实现方式或应用的特殊技术加以说明要求通俗直观便于客户参考。
书写样例:
查询统计(科学项目的查询和统计,科学成果的查询和统计,科学奖励的查询和统计,科技人才的查询和统计)
组合检索:组合检索由拥有搜索权限的用户在组合类别的下拉框中选择需要查询的项目,如科技项目的检索:项目类别+项目资金+项目所属公司+时间;没有选择的项,下拉框默认为空白。点击搜索,系统将对数据库的字段进行模糊搜索,搜索结果列表显示于组合搜索下面,分页显示搜索结果。
注:其它的科技成果搜索,科技奖励搜索,科技人才搜索采用统一的组合搜索形式
统计图表:各分公司统计:根据用户在科技项目申请,科技成果申请,科技奖励申请,科技人才的输入的数据,当拥有该权限的用户点击各分公司统计,系统将从数据库中读取以上的部分数据,进行统计,然后以统计图形的形式显示出来,对各分公司进行比较,方便领导制定企业决策。
某分公司统计:当拥有权限的用户点击某分公司统计,系统将从数据库中读取这对该公司的数据进行统计,显示统计图,该统计主要面向集团和分公司领导。
注:其它的科技成果搜索,科技奖励搜索,科技人才搜索采用统一的统计形式
2.2.3关键数据结构(选作)
书写要求:
简要说明本系统中的最主要的数据结构。
书写样例:
3 系统功能设计
3.1 分公司
3.1.1 订单管理
3.1.1.1 功能描述
订单的填写可以由用户通过web前台完成,也可以由收货员在配送点完成,在用户填写的情况下,需要收货员对物品的重量及体积进行审核,经过审核后确认订单完成并收取货物,最后将货物入库。如图3.1.1_1和3.1.1_2。
图3.1.1_1
图3.1.1_2
3.1.1.2 接口设计
输入操作:客户或管理员输入订单详细信息并提交。
输出效果:订单成功进入待审列表。
管理员对待审列表中的订单进行审核,填写相关审核结果。
3.1.1.3 功能流程图
3.1.2 订单发货
3.1.2.1 功能描述
配送点理货员通过查询当天该配送点的可用班次可以为仓库内货物安排发货,通过查询库存内订单的目的地以及需要中转的订单列表进行安排订单,并生成交接单,在货物装货后,将交接单与班次绑定从而完成一次发货,同时系统提供紧急货物提醒功能,如果订单即将到达收货承诺日期,则进行提醒,理货员可以根据实际情况向总部提交加开班次申请,见图3.1.2_1,3.1.2_2,3.1.2_3,3.1.2_4,3.1.2_5,3.1.2_6。
图3.1.2_1
图3.1.2_2
图3.1.2_3
图3.1.2_4
图3.1.2_5
图3.1.2_6
3.1.2.2 接口设计
输入操作:输入查询班次的条件,点击查询按钮。
输出效果:以列表形式详细列出当日班次情况。
输入操作通过界面进行。
输入操作:输入交接单生成信息,并确定生成交接单。
输出效果:生成交接单。
输入操作通过界面进行。
输入操作:选择交接单编号和订单编号,绑定操作。
输出效果:成功绑定交接单。
输入操作通过界面进行。
输入操作:输入查询条件,查询待发订单。
输出效果:以列表形式显示待发订单。
输入操作通过界面进行。
输入操作:输入查询条件,查询加急订单。
输出效果:以列表形式显示加急订单。
输入操作通过界面进行。
输入操作:输入加开班次的往返配送点等信息,申请加开班次。
输出效果:成功向总公司申请加开班次。
输入操作通过界面进行。
3.1.2.3 功能流程图
3.1.3 订单发货
3.1.3.1 功能描述
配送点的理货员通过查看到达的班次来安排收货,收货的过程中需要对本地卸货的交接单内的订单进行检查,同时将本地装货的交接单进行装货,对于订单有缺损的情况,先将订单从交接单中删除,对订单单独进行异常处理,然后标记交接单完成,最后将订单分类入库即可,见图3.1.3_1,3.1.3_2和3.1.3_3。
图3.1.3_1
图3.1.3_2
图3.1.3_3
3.1.3.2 接口设计
输入操作:输入查询抵达班次的条件,点击查询按钮。
输出效果:以列表形式详细列出抵达班次情况。
输入操作通过界面进行。
输入操作:输入查询抵达交接单条件。
输出效果:以列表形式显示抵达本配送点的交接单。
输入操作通过界面进行。
输入操作:查询异常交接单。
输出效果:列表形式显示异常交接单。
输入操作通过界面进行。
3.1.3.3 功能流程图
3.1.4 货物配送
3.1.4.1 功能描述
配送点管理员可查询库存订单,然后根据系统生成的待配送订单(依据订单优先级自动生成)组织配送人员及时准确的将货物送到收货人手中,见图3.1.4_1和3.1.4_2。
图3.1.4_1
图3.1.4_2
3.1.4.2 接口设计
输入操作:输入查询库存订单条件,查询库存。
输出效果:以列表形式显示库存订单。
输入操作通过界面进行。
输入操作:输入查询待配送订单条件,并查询。
输出效果:列表形式显示待配送订单。
输入操作通过界面进行。
3.1.4.3 功能流程图
3.1.5 订单异常处理
3.1.5.1 功能描述
订单和货物在入库、出库和运输等过程中可能会出现破损丢失等情况,配送点管理员需要对这些异常订单记录并作出相应的处理办法。见图3.1.5_1和3.1.5_2。
图3.1.5_1
图3.1.5_2
3.1.5.2 接口设计
输入操作:填写异常订单登记表信息,并提交。
输出效果:异常订单被成功记录。
输入操作通过界面进行。
输入操作:输入查询异常订单条件,并查询。
输出效果:列表形式显示异常订单。
输入操作通过界面进行。
3.1.5.3 功能流程图
3.1.6 本地信息设置
3.1.6.1 功能描述
配送点在配送货物前,需要设置统一的配送费方案,要综合考虑自身及客户的利益,然后向总公司申报,经审核批准后,方可按次配送费方案运营。
配送货物时,因条件限制,有些订单不能直达。配送点需要选择合适的中转路线,以保证订单的及时到达。
配送点同时也要设置一些用户权限,保障系统安全稳定的运行。见图3.1.6_1,3.1.6_2和3.1.6_3。
图3.1.6_1
图3.1.6_2
图3.1.6_3
3.1.6.2 接口设计
输入操作:分别填写以质量和以体积为单位收费的配送费方案。
输出效果:系统得到一待审核的配送费方案。
输入操作通过界面进行。
输入操作:将设置的配送费方案提交给总公司审核。
输出效果:待审核方案成功被提交给总公司。
输入操作通过界面进行。
输入操作:输入查询中转路线及班次,选择合适中转路线。
输出效果:列表显示可选择中转路线及班次。
输入操作通过界面进行。
3.1.6.3 功能流程图
3.1.7 财务管理
3.1.7.1 功能描述
配送点作为一个营利性的单位,需要定期对财务进行统计和汇报,以检验当前的运营制度。见图3.1.7_和3.1.7_2。
图3.1.7_1
图3.1.7_2
3.1.7.2 接口设计
输入操作:查询并选择待统计订单,计算月收益。
输出效果:得到每月收益。
输入操作通过界面进行。
输入操作:输入一时间段。
输出效果:显示该时间段内汇报的统计列表。
输入操作通过界面进行。
3.1.7.3 功能流程图
3.2 客户端
3.2.1 运费查询
3.2.1.1 功能描述
客户通过输入待配送货物的配送地、质量和体积估算需要的费用。见图3.2.1_1。
图3.2.1_1
3.2.1.2 接口设计
输入操作:输入货物收发地,货物质量和体积,进行估算。
输出效果:输出估算出的费用。
输入操作通过界面进行。
3.2.1.3 功能流程图
3.2.2 下订单
3.2.2.1 功能描述
客户决定接受此配送服务后,可以进如下订单界面,填写相关订单信息,提交后即达成交易。
见图3.2.2_1。
图3.2.2_1
3.2.2.2 接口设计
输入操作:填写点单详细信息。
输出效果:订单成功进入待审核列表中。
输入操作通过界面进行。
3.2.2.3 功能流程图
3.2.3 订单进度查询
3.2.3.1 功能描述
客户需要随时了解已下订单的状态,所以系统应当提供查询订单进度的功能。见图3.2.3_1。
图3.2.3_1
3.2.3.2 接口设计
输入操作:填写订单编号。
输出效果:显示订单进度。
输入操作通过界面进行。
3.2.3.3 功能流程图
3.3 总公司
3.3.1 线路管理
3.3.1.1 功能描述
总公司建立配送点间基本线路,管理运输线路,为配送点提供线路查询。见图3.3.1_1和3.3.1_2。
图3.3.1_1
图3.3.1-2
3.3.1.2 接口设计
输入操作:输入配送点相关信息。
输出效果:增加配送点间线路。
输入操作通过界面进行。
输入操作:查询配送点间线路。
输出效果:返回配送点间线路。
输入操作通过界面进行。
3.3.1.3 功能流程图
3.3.2 车辆管理
3.3.2.1 功能描述
往返配送点间的车辆由总公司提供,其所有权为总公司的。总公司需对其基本信息进行维护。见图3.3.2_1。
图3.3.2_1
3.3.2.2 接口设计
输入操作:输入车牌号,检索车辆信息。
输出效果:显示车辆基本信息。
输入操作通过界面进行。
3.3.2.3 功能流程图
3.3.3 班次管理
3.3.3.1 功能描述
总公司设置班次,为配送点提供班次查询,处理配送点加急班次。见图3.3.3_1和3.3.3_2。
图3.3.3_1
图3.3.3_2
3.3.3.2 接口设计
输入操作:输入起始地和目的地,查看班次信息。可以新增,删除班次。
输出效果:显示配送点间班次信息。
输入操作通过界面进行。
输入操作:点击处理,选择待加急班次。
输出效果:新增加急班次。
输入操作通过界面进行。
3.3.3.3 功能流程图
3.3.4 配送点管理
3.3.4.1 功能描述
总公司添加新配送点,审查各配送点配送费计算方案。见图3.3.4_1和3.3.4_2。
见图3.3.4_1
图3.3.4_2
3.3.4.2 接口设计
输入操作:选择配送点,点击新增。
输出效果:新增配送点。
输入操作通过界面进行。
输入操作:输入配送点,查询并审查配送费方案。
输出效果:显示配送费方案。
输入操作通过界面进行。
3.3.4.3 功能流程图
3.3.5 财务管理
3.3.5.1 功能描述
总公司制定利润分配方案,统计各部门收益。见图3.3.5_1、3.3.5_2
和3.3.5_3。
图3.3.5_1
图3.3.5_2
图3.3.5_3
3.3.5.2 接口设计
输入操作:分别输入以质量和以体积为标准的收费方案,点击修改。
输出效果:成功设置运费方案。
输入操作通过界面进行。
输入操作:分别输入总公司、收获配送点和发送配送点占运费、收发配送费的比列。
输出效果:成功设置利润分成。
输入操作通过界面进行。
输入操作:输入收益统计中涉及到的部门和时间等条件。
输出效果:返回收益统计。
输入操作通过界面进行。
3.3.5.3 功能流程图
4 尚待解决的问题
暂无…
参考:软件概要设计-模板