APP下载

一种面向高校社团的团队协作管理系统设计

2020-02-23庄卓佩张谦黎益黄晋健

教育现代化 2020年102期
关键词:文档成员部门

庄卓佩,张谦,黎益,黄晋健

(广东第二师范学院,广东 广州)

一 引言

随着校园社团文化兴起,高校各大社团发展规模越来越壮大,各高校参与社团活动人数逐年上升,社团数量也迅速增长起来。能否在众多社团争艳中脱颖而出,形成强有力竞争,取决于社团组织有无高效团队协作能力。此外,社会上存在一批爱好协会、民间组织等团队也需要此类系统对团队进行信息化管理。

近年来,市面上的一线科技研发公司设计出许多与协作管理相关的产品,例如企业微信、钉钉talk、瀑布IM、石墨文档等产品,但是此类产品大多面向企业管理或者是专注文档协同工作,无法很好的满足像高校社团的团队的协作与管理的需求。此类产品主要面向企业用户,因此产品收费较为昂贵,而小型团队无法承担高额的企业级系统服务费用。即使存在免费试用版本,但也因功能限制过多,导致用户使用体验十分差。

对于高校社团而言,通常存在资金短缺或者购买力低等情况,应该选取适合团队本身、性价比最高的团队协助管理系统。本文设计的团队协作管理系统,面向以高校社团组织为案例的团队使用,结合当前高校协会需求进行需求分析设计,保证团队的原有管理模式不改变为前提,帮助高校社团的团队实现管理的信息化、统一化,提升团队内运营与管理能力,开发相关信息化管理功能为高校社团的团队提供便捷管理,降低团队运营难度,减少团队内信息传递的失真。

二 需求分析设计

(一)功能需求分析

系统依据社团组织的需求明确了系统用户包括团队管理员、部门负责人、团队成员,系统功能包括组织管理、资产管理、文档管理、活动管理等。

1.组织管理

组织管理主要包含对团队部门与团队成员进行信息化管理,简化团队对内部人员与部门管理工作。组织管理包括成员信息管理与部门信息管理模块。成员信息包含账号用户名、团队成员姓名、所在部门、团队职位、邮箱地址、联系电话等信息。部门信息包含部门名称、部门负责人、负责人邮箱、负责人电话等。团队管理员拥有成员管理与部门管理的所有控制权,部门负责人仅拥有对部门管理中的部门信息维护与部门人员调用的权限。

团队管理员创建成员账号时,录入成员的用户名、姓名以及联系电话。成员获取账号进入系统查看并完善个人信息。

团队管理员创建部门时,录入部门名称以及部门负责人姓名。部门负责人查看并完善部门详细信息后,为所在部门添加或剔除成员。

2.资产管理

资产管理主要负责登记团队内的所有资产信息。团队资产包括物理资产与虚拟资产以及潜在资产。团队成员均可以添加资产。资产信息包括资产描述、资产类型、所属部门、登记时间、资产状态、登记人以及资产图片。

资产被登记后,仅有资产登记人、资产归属部门的部门负责人以及团队管理员进行信息维护。

3.文档管理

文档管理负责登记各类文档资料。文档信息包括文档标题、公开范围、所属部门、文档作者、更新时间与附件。文档公开范围分为内部公开与外部公开,文档归属部门既可以指定单一部门也可以设置为全部门所有。

系统提供团队文档管理功能,用于管理团队各类文档资料。此功能模块包含登记文档、查询文档、编辑文档、删除文档、文件上传下载等的系统逻辑功能。

文档信息被团队成员登记后,团队内所有成员均可查阅文档信息,仅有文档归属部门成员以及团队管理员进行信息维护。

4.活动管理

活动管理负责记录团队开展的各项活动,活动信息包括活动主题、登记人、发起部门、开始时间、结束时间以及预测参与人数。活动管理功能包括创建活动、删除活动、活动信息查看、活动信息维护与开启活动。

系统提供团队活动管理功能,用于管理团队开展各项活动,包括日常活动、特殊活动、等活动信息。此功能模块包含文件上传、信息登记、消息通知、人员签到、签到定位等的系统逻辑功能。

活动被创建后,团队内所有成员均可查阅活动信息,仅有活动发起部门成员以及团队管理员进行信息维护与开启活动。

(二)非功能需求分析

1.安全性需求

团队协作管理系统拟部署在互联网环境,任何人都可以对站点进行访问甚至攻击,因此系统需要更高的安全措施来保证系统的可用性、机密性、完整性。

系统需要具有用户身份验证、控制访问、参数输入防注入等措施来阻止攻击者对系统的恶意攻击。在用户管理方面,各类表单需要添加csrf_token参数预防CSRF(跨站请求伪造)攻击,有效组织用户之前伪造请求。通过对接收参数进行危险字符或函数过滤,有效防止SQL注入、XSS注入等严重威胁系统安全攻击。

2.性能需求

系统尽可能满足行业制定的性能“2-5-8原则”,以用户访问页面为准的系统响应时间为2秒内,用户感觉系统响应速度极快,响应时间在2~5秒之间,用户对系统响应速度还能接受,响应时间在5~8秒之间,用户将觉得系统响应速度慢,当用户请求系统服务响应时间超过8秒将觉得系统失去响应,会选择离开Web站点或者在此访问,发起第二次请求[1];因此制定本系统各项性能指标。系统各项性能指标如表1所示。

表1 系统各项性能指标

三 团队协作管理系统设计

(一)系统架构设计与环境搭建

团队协作管理系统采用B/S架构,采用单页Web应用的实现方式,核心思路是浏览器用户加载一个单独的HTML页面之后,剩余的使用操作均无需离开此页面,因而用户不需要频繁地刷新和切换页面,页面实际上是按需部分更新的[2]。

以用户依赖浏览器为前提,系统提供各种浏览器交互的请求,从而完成整体系统的架构实现。系统框架如图1所示。

图1 团队协作管理系统框架

Python中拥有“pip”便捷式模块安装命令,开发者可使用相应命令从PyPI源中安装扩展模块,“pip install flask”可实现安装Flask与相关Flask框架依赖的自动安装。为了避免与系统环境中的Python环境配置产生影响,导致系统引入过多不必要的扩展,“virtualenv”扩展提供一种虚拟环境来隔离系统中的Python环境。开发者在命令终端中执行“pip install virtualenv”安装“virtualenv”扩展,安装完成后执行命令“virtualenv design”即创建一个名为design的虚拟环境,使用“designscriptsactivate”(Windows系统)或者“source bin/activate”(Unix与Linux系统)进入design虚拟环境。此后在虚拟环境中使用pip安装python扩展不再会影响系统环境变量中的Python环境[3]。

(二)功能模块设计

在Flask框架中,每一个路由则代表着一个函数,项目中存在大量的路由会显得十分混乱,为了提高对各功能模块与视图路由的控制,因此引入蓝图管理视图与路由关系。系统中设定蓝图前缀为“/home”,假设服务器地址“example.com”,那么用户访问“http://example.com/home/index”则路由为“/index”。各模块视图接收着不同的HTTP请求,对应的路由指向路由函数处理,因此形成了一个Web应用[3]。

(三)安全性设计

1.身份验证

系统引入Flask框架中的flask_login.LoginManager模块管理账号、存储账号信息。其中该模块下的一个子模块login_required提供身份验证功能,只需要在视图函数入口处添加“@login_manager”即可实现对该视图路由进行身份验证。

用户在登录成功后,引入子模块“user_loader”能自动添加用户会话session以及维护用户会话。引入子模块“current_user”自动维持用户身份信息。用户退出时,使用子模块“logout_user”释放用户会话。

在Flask程序初始化时,对“PERMANENT_SESSION_LIFETIME”系统参数设定用户会话session时效,当用户成功登录后,会添加用户会话session,后台服务器也开始计时,当用户有持续的通信操作时会话的有效性会不断被刷新而持续保持可用性;而当用户一段时间不用之后,后台服务程序就会将session会话从系统缓存中删除,这样当用户尝试再次访问时就会发现系统拒绝访问并且页面也会跳转到登录界面要求重新登录[4]。从而实现系统身份验证功能。

2.防恶意代码注入

为了规范化数据库连接管理,同时注重防止用户恶意测试导致SQL注入,系统引入SQLAlchemy模 块。SQLAlchemy是 提 供SQL工具包和对象关系映射(ORM)的一种工具。SQLAlchemy实现了对象关系映射的服务,提供了数据映射模式,能够方便地把类映射到数据 库。Flask-SQLAlchemy给Flask框 架 提 供了SQLAlchemy的支持,这样Flask框架中利用SQLAlchemy操作数据库就变得比较简单[5]。当系统使用该SQLAlchemy时,只需要针对不同数据表设计封装类,实现参数与表字段数据绑定,执行SQL查询时能够防止SQL注入。

针对XSS攻击注入,Flask框架采用Jinja2引擎,Jinja2是BSD许可证授权的模板引擎,包含许多功能和特性,包括替换、继承、控制流等;它的特点是灵活、快速、安全。Jinja2速度快的原因有部分是因为它的规范,即Jinja2不允许放置任意的Python代码,也不能放置Python表达式,只包含控制结构,没有业务逻辑在其中,避免了耦合[6]。当系统后端服务往前端返回数据时,会自动转义所有值,达到防XSS注入效果。

3.防跨站请求伪造

在Flask框架中,存在一个模块flask_wtf.CSRFProtect用于保护表单防止跨站请求伪造(CSRF)。如图2所示。

图2 CSRF攻击例子

在系统入口初始化时,引入flask_wtf.CSRFProtect并声明一个安全密钥(SECRET_KEY)参与csrf_token加密,在前端表单中添加一个隐形标签“<input type="hidden" value="{{ csrf_token() }}" name="csrf_token" /> ”或者添加一个表单防跨站请求伪造声明“{{ form.csrf_token }}”对表单进行保护,从而避免CSRF攻击。

(四)性能设计

为了提高系统的性能,对token、cookie等占用缓存的参数缩短其刷新时间,防止用户恶意请求多个token、cookie占用系统缓存。

Flask框 架 建 立 在Werkzeug WSGI(Web Server Gateway Interface)类库之上,该类使用的是WSGI协议负责数据传输与请求封装。系统改用uWSGI协议(网站分布式集群网络应用的解决方案)能提升系统响应性能、降低内存占用以及详细监控服务运行状态(如服务性能与瓶颈)。uWSGI如 传 统web服 务(Nginx、IIS、Apache)一样负责封装HTTP原始请求与TCP连接信息,实现了WSGI协议、uWSGI协议与HTTP等协议工作。

四 团队协作管理系统测试

(一)服务器端测试环境

操作系统为macOS 10.15.14、CPU为Intel Core i7 2.8GHz、内存为8GB、运行环境为Python 3.7.4、Web服务器使用Flask 1.1.1以及Werkzeug WSGI 1.0.0协议、数据库使用SQLite 2.6.0;客户端测试环境:操作系统为Windows10 17763版本、CPU为Intel Core i7 2.8GHz、内存为4GB、浏览器为Chrome 81.0。

(二)系统各模块功能测试

组织管理模块测试分成两个子模块,分别是人员管理模块测试与部门管理模块测试。在两个子模块中,测试系统能否按照预期结果提供组织管理成员与部门的新增、编辑、删除、查询等功能,并且能对恶意数据与非法提交做拦截。

资产管理模块测试系统能否按照预期结果提供资产管理的新增、查询、编辑、删除等功能,并且能对恶意数据与非法提交做拦截。

文档管理模块测试系统能否按照预期结果提供文档管理的新增、查询、编辑、删除等功能,并且能对恶意数据与非法提交做拦截。

活动管理模块测试系统能否按照预期结果提供活动管理的新增、查询、编辑、删除等功能,并且能对恶意数据与非法提交做拦截。

系统各模块功能测试均通过,均正常提供管理服务。

3.安全性测试

系统存储信息均为团队内敏感信息,此类信息均拥有一定的经济价值,为了保证系统信息的安全,对于系统进行安全性测试。常见的web安全威胁有SQL注入、XSS注入以及跨站请求伪造(CSRF)。

系统安全性各类攻击测试均通过,均达到预期结果。系统拥有防SQL注入、XSS注入以跨站伪造请求措施,保证了系统运行安全性。

4.性能测试

系统性能经测试均通过,均达到预期结果。系统拥有能应对短时间高并发请求,保证了系统运行的稳定性。

本次测试结果符合预期结果,各项性能全部达标。

五 结语

本文以高校组织为使用对象,设计一种团队协作管理系统,实现对团队成员、部门、资产、文档以及活动等数据进行信息化管理的目的,同时系统制定了严格的访问控制权限,团队成员可协同合作,共同管理,从而有效提升团队运营管理效率,为推动团队信息化建设与发展提供了借鉴。

猜你喜欢

文档成员部门
主编及编委会成员简介
联合监督让纪检部门不再单打独斗
主编及编委会成员简介
主编及编委会成员简介
主编及编委会成员简介
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
哪些是煤电部门的“落后产能”?
Word文档 高效分合有高招
医改成功需打破部门藩篱