这个作业属于那个课程 | 广工2023软件工程课程 |
---|---|
这个作业要求在哪里 | 团队作业3—需求改进&系统设计 |
这个作业的目标 | 需求、原型改进、系统设计、Alpha任务分配计划、测试计划 |
目录
一、需求&原型改进
1. 选题及需求修改
问题1:系统的吞吐量会变大,但响应时间会变长
修改1:重构资源调度模块
问题2:测试和查错的复杂度增大
修改2:模块接口严格定义,日志模块进一步完善
2. 完善需求规格说明书
2.1 不足之处
模块任务较重,推进速度较慢
2.2 具体改进
重新分割任务,减少不必要的开发,减轻代码量
2.3 WBS
第 5 周 | 1.团队组队、团队博客 |
2.团队介绍、成员展示、角色分配、选题确定 | |
3.制定团队计划安排,团队贡献分的规定 | |
第6周 | 1.需求规格说明书 |
2.原型设计,队员估计任务难度并学习必要的技术 | |
3.编码规范完成、平台环境搭建完成、初步架构搭建 | |
第7周 | 1.原型改进 |
2.团队成员估计各自任务所需时间 | |
3.测试计划 | |
第8、9周 | 1. 团队项目Alpha任务分配计划 |
2. 连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 | |
第10周 | 1.用户反馈+测试计划改进 |
2. 团队Alpha阶段个人总结 | |
3. 团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理 | |
第11周 | 1. 团队项目Alpha博客:事后分析 |
二、系统设计
1. 日志模块
- 支持 流式日志风格 和 格式化风格,支持日志格式自定义,日志级别,多日志分离等
- 支持时间,线程id,线程名称,日志级别,日志名称,文件名,行号等内容的自由配置
2. 配置模块
- 采用约定由于配置的思想。定义即可使用。不需要单独去解析。支持变更通知功能。
- 使用YAML文件做为配置内容。支持级别格式的数据类型,支持STL容器,支持自定义类型的支持
3. 线程模块
- 线程模块,封装pthread库里面的一些常用功能,可以方便开发中对线程日常使用
4. 协程模块
- 协程:用户态的线程,相当于线程中的线程,更轻量级
- hook可以把复杂的异步调用,封装成同步操作。降低业务逻辑的编写复杂度。
5. 协程调度模块
- 协程调度器:管理协程的调度,内部实现为一个线程池,支持协程在多线程中切换,也可以指定协程在固定的线程中执行
- 一个N-M的协程调度模型,N个线程,M个协程。重复利用每一个线程
6. I/O协程调度模块
- 继承与协程调度器,封装epoll(Linux),并支持定时器功能(使用epoll实现定时器)
- 支持Socket读写时间的添加,删除,取消功能。
- 支持一次性定时器,循环定时器,条件定时器等功能
7. Hook模块
- hook 系统底层和socket相关的API、socket io相关的API、以及sleep系列的API
- hook的开启控制是线程粒度的,可以自由选择
- 通过hook模块,可以使一些不具异步功能的API,展现出异步的性能。如(mysql)
8. Socket模块
- 封装Socket类,提供socket API功能,统一封装地址类,将IPv4,IPv6,Unix地址统一起来
- 提供域名,IP解析功能
9. ByteArray序列化模块
- ByteArray二进制序列化模块,提供对二进制数据的常用操作
- 读写入基础类型 int8_t、int16_t、int32_t、int64_t 等,支持std::string的读写支持,支持字节序转化,支持序列化到文件,以及从文件反序列化等功能
10. TcpServer模块
- 基于Socket类,封装一个通用的TcpServer的服务器类:提供简单的API,使用便捷,可以快速绑定一个或多个地址,启动服务,监听端口,accept连接,处理socket连接等功能
11. Stream模块
- 封装流式的统一接口:将文件、socket封装成统一的接口
- 使用的时候,采用统一的风格操作
- 基于统一的风格,可以提供更灵活的扩展
12. HTTP模块
- 采用Ragel(有限状态机),实现HTTP/1.1的简单协议、uri的解析
- 基于 SocketStream 实现 HttpConnection(HTTP的客户端) 和HttpSession(HTTP服务器端的链接)
- 基于 TcpServer 实现 HttpServer 。提供完整的HTTP的客户端API请求功能,HTTP基础API服务器功能
13. Servlet模块
- 仿照java的servlet,实现一套Servlet接口:ServletDispatch、FunctionServlet、NotFoundServlet
- 支持uri的精准匹配,模糊匹配等功能
- 和HTTP模块,一起提供HTTP服务器功能
三、alpha任务分配计划
四、测试计划
1. 产品是什么
分布式服务器框架
2. 测试内容
各模块独立测试
3. 测试定义与目的
此次测试为已有模块测试,测试要求广泛收集测试数据,确保测试的客观准确性,提高测试可信度,并据测试结果向开发人员反馈意见。