[V1-Team] WEDO创意论坛技术规格说明书
WEDO 创意论坛技术规格说明书
0x0 文档版本
| 版本号 | 说明 |
|---|---|
| v1.0 | 初步确定技术路线 |
附Github仓库:WEDO
0x1 技术说明
1. 前端框架
在主流的前端框架中,我们调研了Vue、BootStrap、AnguarJS、ReactJS等框架。每个框架都有各自的优点,但是考虑到小组成员的前端开发经验较少,最终选择了比较容易上手的BootStrap框架。BootStrap框架拥有很多封装好的UI组件,能够快速地搭建出优质的前端页面。
2. 后端框架
在选择编程语言的时候,抛开适合写服务器和引擎的C++以及适合高并发场景下的Go,我们讨论并分析了Java、Python、PHP三种语言,分别对应Django、SSM(Spring+SpringMVC+MyBatis)和PHP框架。
我们小组的开发部门有成员有使用Spring开发的经验。但是因为SSM的学习成本相对较高,需要从Servlet开始,并且一开始上手使用Hibernate或者MyBtis比较麻烦,于是排除了Java。
根据对PHP的调研,世界上超过80%的网站的搭建都使用到了PHP,基本上大部分论坛以及电商的网站功能,都能使用PHP7实现;另一方面看,PHP7的性能提升了很多,适合于API的开发。同时由于组里开发人员对Python后端开发以及在Django框架下的开发不熟悉,我们小组决定使用PHP(世界上最好的语言)作为我们小组后端的编程语言。
有关PHP的开发框架,经过对laravel和ThinkPHP两框架的调研后。我们初步确定最后使用Laravel框架。其主要原因是在Lavarel中内置了大量的API供开发者使用,在实际应用中更加贴近面向对象的开发方式。而且Laravel框架拥有大量的中文文档作为参考:Laravel中文社区。另外,从网络安全的角度来看,Laravel更胜一筹。
0x2 服务器平台搭建
我们准备使用LNMP(Linux + Ngnix + MySQL + PHP)的环境。相较于其他服务器(如Apache),Nginx具有以下两个优点:
- 反向代理,能够实现请求的分发,以及对于用户的后台不可见性。
- 能够实现负载均衡。这有助于后期对于大流量用户情况的适应。
但是对于论坛前期的预期运行情况,还不需要考虑服务器压力和性能对于系统的影响,并且最开始只有一台可供使用的服务器。
对于数据库的选择,我们选择比较常用的MySQL。
考虑到服务器上并不需要桌面环境,所以开发环境预计使用CentOS 6.x | 7.x版本。
0x3 项目技术设计
项目功能抽象
项目的具体功能已在项目功能设计书中描述,以下为项目功能的初步抽象图:

前端界面设计
项目具体的前端界面设计已在界面设计计划书中进行描述。
后端实现设计
路由路径设计
项目后端的路由分发路径如下图所示:

数据信息存储
所有的数据存储至后端的MySQL数据库中。数据在数据库的组织方式如下图所示:

各数据的详细类型及规定如下表所示:
| 数据表名 | 属性名 | 属性类型 | 是否为主属性 |
|---|---|---|---|
| User | uid | int(8) | Yes |
| user_name | varchar(32) | ||
| password | varchar(256) | ||
| user_kind | int(8) | ||
| user_regTime | timestamp | ||
| user_email | varchar(32) | ||
| user_info | varchar(128) | ||
| Project | pid | int(8) | Yes |
| project_name | varchar(32) | ||
| project_kind | int(8) | ||
| project_createTime | timestamp | ||
| project_progress | int(4) | ||
| project_info | varchar(512) | ||
| Workgroup | gid | int(8) | Yes |
| group_name | varchar(32) | ||
| group_regTime | timestamp | ||
| group_kind | int(8) | ||
| Comment | cid | int(8) | Yes |
| pid | int(8) | ||
| uid | int(8) | ||
| comment_time | timestamp | ||
| comment_info | varchar(256) | ||
| comment_thumbs_up | int(8) | ||
| Reply | rid | int(8) | Yes |
| cid | int(8) | ||
| uid | int(8) | ||
| reply_time | timestamp | ||
| reply_info | varchar(256) | ||
| reply_thumbs_up | int(8) | ||
| ProjectOwner | pid | int(8) | Yes |
| uid | int(8) | ||
| ProjectDeveloper | pid | int(8) | Yes |
| gid | int(8) | ||
| WorkgroupMember | gid | int(8) | Yes |
| uid | int(8) | Yes | |
| UserLabel | uid | int(8) | Yes |
| user_label | int(8) | Yes | |
| WorkgroupLabel | gid | int(8) | Yes |
| group_label | int(8) | Yes |
异常处理
目前,系统中预期中的各个部分异常如下图所示:

[V1-Team] WEDO创意论坛技术规格说明书的更多相关文章
- [V1-Team] WEDO创意论坛功能规格说明书
项目功能规格说明书 版本说明 版本 内容 时间 V1.0 描述总体目标,用户使用场景,界面原型.功能设计及验收 2019.3.28 附Github仓库:WEDO 正文 1.目标 规范指导整个项目设计与 ...
- (Alpha)Let's-技术文档(技术规格说明书)
技术规格说明书 抽象 首先,对抽象原则的理解,“抽象”这一概念本身就很抽象.抽象体现的是一种概括能力.我们生活中遇到的很多客体,其在某些方面具备有一些相似甚至相同的性质,以这些特点而非事物本身来认识鉴 ...
- 【Alpha】技术规格说明书
由于第1周已经写过技术规格说明书(设计文档),本周更新了上一版内容. Github地址:https://github.com/buaase/Phylab-Web/blob/master/docs/Ba ...
- [软件工程基础]PhyLab 技术规格说明书
由于暂不对后端有所改变,因此该部分技术规格说明书复用 Default 的技术规格说明书. 由于现阶段对于 Laravel 框架不熟悉,以及对于是否使用已有的轮子或者造轮子实现预想的功能还不清晰,因此暂 ...
- 【近取 key】技术规格说明书
项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 技术规格说明书 我在这个课程的目标是 进一步提升工程化开发能力,积累团队协作经验,熟悉全栈开发流程 ...
- 【BUAA软工】技术规格说明书
项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:技术规格说明书 技术规格说明书 宏观技术 后端 WEB服务器 WEB服务器选取的是Springboot,作为当下Java语言最主流的WE ...
- [no_code]OCR表格处理——技术规格说明书
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 技术规格说明书 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作业在哪个具体方面 ...
- Team++_炸弹人软件需求说明书
目标是什么,目标不包括什么? 目标是制造一款受青年人(大学生或中学生)喜爱的手机益智闯关游戏,可以用来打发时间或放松心情. 用户和典型场景是什么? 用户:学生 典型场景:在宿舍无聊时.在睡觉之前或在课 ...
- 团队作业Week6:规格说明书编写
(1)请分析你们团队项目的典型用户和场景,并写一个团队博客发布你们团队项目的功能规格说明书. (2)再写一个博客团队博客发布你们项目的设计文档(技术规格说明书). 截止时间:2015-11-03
随机推荐
- 手打的table
突然觉得,如果我不上传源码和写篇博客,对不起花在这个破网页2个小时的时间,完全手打,浏览器调效果. 源码如下: a.html: <!DOCTYPE html PUBLIC "-//W3 ...
- 彻底清除Window7下的360注册表
当流氓360遇到强迫症,将注定有一场厮杀... 今天装了个虚拟机,其中win7系统是在网上随便下载了一个,是非纯净版的,自带了360在内的好多软件,其他软件都轻松删掉,但查看注册表时发现竟然有360残 ...
- css总结2:Flex 布局教程:Flex 语法(转)
Flex 布局教程:语法篇 网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些 ...
- 编写高质量代码改善C#程序的157个建议——建议32:总是优先考虑泛型
建议32:总是优先考虑泛型 泛型的优点是多方面的,无论泛型类还是泛型方法都同时具备可重用性.类型安全性和高效率等特性,这是非泛型和非泛型方法无法具备的. 以可重用性为例: class MyList { ...
- C#设计模式系列:适配器模式(Adapter Pattern)
一.引言 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用.但是新环境要求的接口是这些现存对象所不满足的.如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同 ...
- SQL server T-SQL存储过程
简介 存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与应用程序中的函数过程类似,存储过 ...
- 一、SpringBoot是什么?
SpringBoot是什么? 我管她是什么,好用就行了啊!!!但是无奈我的简历上写了“精通SpringBoot”...那总得大体说得上SpringBoot是个啥东西吧! Spring相信大家都用过,那 ...
- 【bzoj4811】[Ynoi2017]由乃的OJ 树链剖分/LCT+贪心
Description 给你一个有n个点的树,每个点的包括一个位运算opt和一个权值x,位运算有&,l,^三种,分别用1,2,3表示. 每次询问包含三个数x,y,z,初始选定一个数v.然后v依 ...
- java学习笔记之对象序列化
1.简述 java对象序列化就是将对象编程二进制数据流的一种方法,从而实现对对象的传输和存储 2.作用 java是门面向对象编程语言,即一切皆对象,但是java对象只能存在于jvm中,一旦jvm停掉那 ...
- Windows下Python第三方.whl的安装
1.改成.zip 2.解压 3.然后把解压出来的文件放到C:\Python27\Lib\site-packages下即可.