易课寄在线购课系统开发笔记(一)–系统分析与设计
概述
需求背景
目前经济形势下学生就业问题突出,学历教育与企业需求的矛盾不是短期内可以解决,IT 行业 技术岗位薪资待遇较好,岗位需求一直比较旺盛,所以 IT 培训市场长期稳定需求是存在的。每年 700 多万学生,就业需要增加,每年几十万 IT 岗位需求随互联网+不断增长,当前我国 IT 产业从业人员 在 400 万到 500 万人左右,并且有 92% 的从业人员表示需要提升 IT 技能,有 42% 的参与者表示非常想参 加 IT 培训。
近几年来,IT 培训备受资本青睐。IT 培训市场规模约 870 亿元,规模最大的占比不到 2%,高度分散的市 场也意味着机会。
IT 培训在资本市场的热度,与互联网的快速发展致使市场对 IT 人才的需求不断上升密不可分, 但另一方面,或许也与教育资产证券化的热潮渐起有关。有业内人士提出,相比于职业教育的其它 一些领域,IT 培训尤其是线下 IT 培训的现金流较好,更容易证券化,此外 IT 培训机构的发展速度快, 回报空间较大。
然而线下全日制学习的形式对很多在校生和期盼转行的在职人员来讲非常不便,而且费用动辄 上万元,非常昂贵。而单纯的线上课程需要全程联网,同时盗版问题严重,对培训师的实际利益有 一定的损害。
需求分析
目标分析
建立一个以 IT 学习和交流为目的的,以技能提升和人才服务为价值的在线购课系统。Web 用户使用端包括单点登录、基于 Solr 大数据的课程搜索、购物车、下单、广告内容轮播展示等功能。后台管理端包含课程管理、订单管理、类目管理、用户管理、内容管理等功能。
功能性需求
易课寄在线购课系统共分为两个部分,一部分是面向用户的部分的前台 Web 用户使用端,包括:单点登录、基于Solr 大数据的课程搜索、购物车、下单、广告内容轮播展示、课程在线学习等功能;另外一部分是后台管理端,这部分内容包括:课程管理、订单管理、类目管理、用户管理、内容管理等功能。
前台功能
根据在线购课系统的业务需求,应该满足用户的在线购课和学习的各种需求,方便用户进行学习。前台的信息架构如图所示:
后台管理功能
后台管理系统,为管理员用户角色提供管理功能,后台管理界面信息架构如图所示:
非功能性需求
—般性性能需求
普通 Server 环境下,单页面的响应时间不超过 5 秒;
普通 Server 环境下,带有模糊查询的响应时间不超过 10 秒;
普通 Server 环境下,复杂査询及动态查询的响应时间不超过 15 秒;
实际应用中能同时满足 10000 人同时进行在线使用,每台服务器并发访问可达到 200 人。
—般性安全性需求
系统敏感信息使用 MD5 加密存储。登录时,需要根据用户名进行信息查找,返回数据库的信息后,同输入的密码加密后进行比较,一致后才可以登录成功;若用户状态处于封停状态,则用户无法登录。
系统能保证大于 24 小时连续运行,有效保障网站平均无故障时间。
系统设计
软件体系结构设计
本次开发的易课寄在线购课系统,是一个典型的 B/S 平台架构,采用 Java Web 技术来开发这个系统,采用Spring + SpringMVC + MyBatis 框架技术,采用分布式开发方式,并使用了 VMware 虚拟化技术,实现在一台计算机中模拟多台服务器运行。缓存系统采用 Redis,搜索系统采用 Apache Solr,图片服务器采用 Nginx,Web 服务器采用 Tomcat,数据库采用 MySQL,大数据分析系统采用 Apache Spark。基本体系结构分层设计如图所示:
- 客户端:用户可通过Web浏览器来访问系统,客户端的用户包括多种角色。
- 表现层:主要分为前台用户界面和后台管理界面,采用 MVC 模式,使得应用程序的逻辑和页面设计分开,所以Web设计师可以改写页面的显示效果而不受程序员的代码的影响。这种分离的思想使得代码保持简洁而且便于维护。
- 服务层:服务层是用户接口或 Web 客户端与数据库之间的逻辑层。典型情况下Web服务器位于该层,业务对象在此实例化。服务层是生成并操作接收信息的业务规则和函数的集合。它们通过业务规则(可以频繁更改)完成该任务,并由此被封装到在物理上与应用程序程序逻辑本身相独立的组件中。
- 数据持久层:用于完成业务逻辑对数据库的访问,只负责与数据库打交道,将数据库中的实体包装为对象,不做任何业务逻辑的操作,使用 MyBatis 来管理。
功能设计
下面以 Web 用户使用端的单点登录、课程搜索、购物车、课程详情、下单、广告内容轮播展示功能,Java Web 服务端的课程管理、订单管理、类目管理、用户管理、内容管理等模块介绍本系统的功能设计。
单点登录功能设计
单点登录 SSO(Single Sign On),简单来说就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,因为在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果采用传统登录方式,每个子系统都需要用户认证,会影响到用户的使用体验,各子系统也会为这种重复认证授权的逻辑而耗费大量系统资源。而单点登录能够有效避免此类问题的发生。
单点登录的流程图如图所示:
课程搜索功能设计
Apache Solr是一个开源的搜索服务器,主要基于HTTP和Apache Lucene。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。Solr 还包含有很多的企业就绪特性,比如轻松的配置和管理、多客户机语言绑定、索引复制、缓存、统计数据以及日志记录。
课程搜索的流程图如图所示:
购物车功能设计
购物车模块是一个独立的表现层工程,添加购物车不要求登录,可以指定购买商品的数量。购物车模块包含展示购物车列表页面、修改购物车商品数量、删除购物车商品等功能。
购物车模块的流程图如图所示:
课程详情功能设计
用户通过搜索或通过前端Web页面的找对相关的课程类目,可查看课程详情。
课程详情的流程图如图所示:
订单系统功能设计
用户通过课程详情页下单后,可查看订单内容。
订单系统的流程图如图所示:
内容轮播展示功能设计
用户在前端Web页面可查看管理员用户在后台设置的广告内容。
广告内容轮播展示的流程图如图所示:
课程管理功能设计
管理员在后台中可以管理系统内的课程。
课程管理的流程图如图所示:
订单管理功能设计
管理员在后台中可以管理系统内的订单。
订单管理的流程图如图所示:
类目管理功能设计
管理员在后台中可以管理系统内的课程类目。
类目管理的流程图如图所示:
用户管理功能设计
管理员在后台中可以管理系统内的用户。
用户管理的流程图如图所示: