17秋 软件工程 团队第四次作业 系统设计
题目:系统设计
17秋 软件工程 团队第四次作业 系统设计
1.需求规格说明书的修改与完善
修改后的需求规格说明书:Requirements-Specification。
修改问题:
- 1.将功能约束的图片转为Markdown表格;
- 2.新增管理员后台功能;
- 3.修改语法错误等。
2.团队的编码规范
其中,Java的编码规范遵守Alibaba的编码规范,C++、Python的编码规范遵守Google的编码规范。
我们使用了自动化工具,如cpplint.py等对代码格式进行检查,要求组员在提交代码时需要先通过自动化工具的检查。
此外,我们要求各个组员在对项目进行commit、RP、修改文档时,遵守关于如何更好地使用Github的一些建议中所总结的规范与建议。
并在编码时遵守以下额外约束:
- 缩进为4个空格;
- 在遇到复杂表达式时,用括号表明逻辑优先级;
- 注释要求体现:1.代码模块的作用;2.这样做的原因;3.特别需要注意的地方;
- 变量名遵守驼峰命名法,形如xmatchCodeSpecification;
- 代码逻辑分段,每一个代码段(函数方法、类等)都需要有注释;
- 对于左括号是否换行没有具体要求,但是同一文件内部的左括号需要保持统一。
有如下理由:
- 保证代码简洁明了,具有易读性,无二义性;
- 采用互联网公司成熟的编码规范使项目更加规范;
- 确保团队开发时的效率;
- 合理、适当的注释能够避免未来许多额外的交接问题。
3.Powerdesigner
数据库设计部门分为六个表和八个关系,表包含:部门管理员、部门、活动、排班表、部员(学生)。
部门管理员发布活动和通知、管理部门、生成排班表。学生参加部门、活动、获取排班信息和通知。
4.架构设计
4.1.架构定义
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计
4.2.整体描述
4.2.1 MVC设计模式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
4.2.2 框架
4.2.2.1 微服务框架: SpringBoot
SpringBoot用于编写 Restful 风格的API供APP端和WEB端统一调用,其自动配置特性适用于快速开发,属于微服务框架。
特点:
1.创建独立的spring应用。
2.嵌入Tomcat, Jetty Undertow 而且不需要部署他们。
3.提供的“starters”poms来简化Maven配置
4.尽可能自动配置spring应用。
5.提供生产指标,健壮检查和外部化配置
6.绝对没有代码生成和XML配置要求
4.2.2.2 ORM框架: Hibernate
特点:
- 对象/关系数据库映射(ORM)
它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想
- 透明持久化(persistent)
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)
- 事务Transaction(org.hibernate.Transaction)
应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。
- 它没有侵入性,即所谓的轻量级框架
- 移植性好
- 缓存机制,提供一级缓存和二级缓存
- 简洁的HQL编程
4.2.2.3 数据库:Mysql
- 免费、快速、多线程、多用户的SQL数据库服务器
- 核心程序采用完全的多线程编程
- 系统兼容性良好
- 支持JDBC,易与Hibernate集成
- 拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性
- 强大的查询功能
4.2.2.4 服务器容器:Tomcat 9
- 免费
- 性能稳定
- 技术先进,支持最新标准(SUN的专家经常和TOMCAT的开发人员在一起混)
- 占用的系统资源小,扩展性好,且支持负载平衡与邮件服务
- 跨平台
3.架构图
5.确定团队分工
5.1.象限法及WBS图
Alpha版本功能简述:
- 部员模块
- 账号管理:账户登录,修改信息以及绑定手机
- 提交入部申请,查看活动通知
- 查看排班,请假/换班以及活动签到
- 管理员模块
- 账号管理:账户登录,修改信息
- 新建/解散部门,一键排班
- 发布通知,发送短信/邮件
- 超级管理员模块
- 登录功能
- 审批活动申请以及新建部门申请
5.2.Issues分配后的截图
其中的一个issue:功能实现流程
5.3.组员及其认领工作
- 344:明确团队分工、架构设计、需求规格说明书修订、前端开发;
- 336:ER图设计、文档撰写;
- 324:需求规格说明书修订;
- 339:通过象限法确定项目优先级,制作WBS图;
- 340:UI设计;
- 209:后端架构设计、项目规范制定、需求规格说明书修订;
- 333:后端架构设计;
- 433:UI设计。
5.4.TODOList
登录与注册 1 day
- 页面编写 : 1 hour
- 部门管理员注册与绑定手机: 2 hour
- 用户登录/管理员登录: 0.5hour
- 忘记密码功能: 0.5 hour
部门管理人员基础信息 : 1 day
- 页面编写: 1.5 hour
- 新建部门与数据交互 : 2 hour
- 部门数据获取与修改 : 1 hour
- 删除/解散部门 : 0.5 hour
- 修改密码: 0.
部员基础信息: 1 day
- 页面编写 : 1 hour
- 信息完善 : 0.4 hour
- 绑定手机 : 0.5 hour
- 修改密码 : 0.2 hour
部员信息列表 1 day
- 页面实现: 1.5 hour
- 列表信息获取与显示: 1 hour
- 页面跳转:0.5 hour
部员信息详情: 1 day
- 页面编写: 1 hour
- 信息获取与显示: 0.5 hour
- 拨打手机与发送短信 : 1 hour
- 删除部员: 0.5 hour
入部申请管理: 1 day
- 页面编写: 1 hour
- 部员提交申请 : 1 hour
- 部门管理人员查看列表: 1 hour
- 部门管理人员审批: 1 hour
通知信息管理(管理员) 2 day
- 页面编写: 2 hour
- 通知信息查看及检索: 1 hour
- 发布校内通知: 1 hour
- 发布部门通知: 1hour
通知信息管理(部员) 0.5 day
- 页面编写: 1 hour
- 通知信息查看及检索: 1 hour
部门活动管理 3 day
- 页面编写: 1.5 hour
- 活动添加/发布: 1.5 hour
- 查看活动报名信息: 1 hour
- 活动相册: 3 hour
- 查看历史活动 : 0.5 hour
- 活动签到: 2.5 hour
部员活动管理 1 day
- 活动列表: 1 hour
- 活动详情: 1 hour
- 参加活动: 1 hour
- 活动签到: 1.5 hour
短信/邮件群发 1.5 day
- 页面编写: 1.5 hour
- 自定义短信模板: 1.5 hour
- 选择发送对象和发送短信: 2 hour
- 发送邮件: 1.5 hour
- 群发记录: 1 hour
排班 1.5 day
- 页面编写: 1 hour
- 查看已获取成员课表数: 2 hour
- 一键排班: 1.5 hour
- 换班: 1 hour
5.5.燃尽图
6.分工和工作量比例
- 世强:20%;
- 媛媛:15%;
- 港晨:15%;
- 陈翔:15%;
- 杰麟:10%;
- 伟航:10%;
- 诗尧:8%;
- 树民:7%。