团队作业2-《需求规格说明书》

这个作业属于那个课程广工2023软件工程课程
这个作业要求在哪里团队作业2-《需求规格说明书》
这个作业的目标设计并完成团队需求规格说明书

一、需求规格说明书

1. 引言

目标:简单支持高并发的服务器框架
高并发是分布式系统架构设计中必须考虑的因素之一,通常是指通过设计保证系统能够同时并行处理很多请求
高并发一方面可以提高资源利用率,加快系统响应速度,但是同时也会带来安全性,分布式事务、死锁等问题

2. 系统功能需求概述

2.1. 日志模块

  1. 支持 流式日志风格格式化风格,支持日志格式自定义,日志级别,多日志分离等
  2. 支持时间,线程id,线程名称,日志级别,日志名称,文件名,行号等内容的自由配置

2.2. 配置模块

  1. 采用约定由于配置的思想。定义即可使用。不需要单独去解析。支持变更通知功能。
  2. 使用YAML文件做为配置内容。支持级别格式的数据类型,支持STL容器,支持自定义类型的支持

2.3. 线程模块

  1. 线程模块,封装pthread库里面的一些常用功能,可以方便开发中对线程日常使用

2.4. 协程模块

  1. 协程:用户态的线程,相当于线程中的线程,更轻量级
  2. hook可以把复杂的异步调用,封装成同步操作。降低业务逻辑的编写复杂度。

2.5. 协程调度模块

  1. 协程调度器:管理协程的调度,内部实现为一个线程池,支持协程在多线程中切换,也可以指定协程在固定的线程中执行
  2. 一个N-M的协程调度模型,N个线程,M个协程。重复利用每一个线程

2.6. I/O协程调度模块

  1. 继承与协程调度器,封装epoll(Linux),并支持定时器功能(使用epoll实现定时器)
  2. 支持Socket读写时间的添加,删除,取消功能。
  3. 支持一次性定时器,循环定时器,条件定时器等功能

2.7. Hook模块

  1. hook 系统底层和socket相关的APIsocket io相关的API以及sleep系列的API
  2. hook的开启控制是线程粒度的,可以自由选择
  3. 通过hook模块,可以使一些不具异步功能的API,展现出异步的性能。如(mysql)

2.8. Socket模块

  1. 封装Socket类,提供socket API功能,统一封装地址类,将IPv4,IPv6,Unix地址统一起来
  2. 提供域名,IP解析功能

2.9. ByteArray序列化模块

  1. ByteArray二进制序列化模块,提供对二进制数据的常用操作
  2. 读写入基础类型 int8_t、int16_t、int32_t、int64_t 等,支持std::string的读写支持,支持字节序转化,支持序列化到文件,以及从文件反序列化等功能

2.10. TcpServer模块

  1. 基于Socket类,封装一个通用的TcpServer的服务器类:提供简单的API,使用便捷,可以快速绑定一个或多个地址,启动服务,监听端口,accept连接,处理socket连接等功能

2.11. Stream模块

  1. 封装流式的统一接口:将文件、socket封装成统一的接口
  2. 使用的时候,采用统一的风格操作
  3. 基于统一的风格,可以提供更灵活的扩展

2.12. HTTP模块

  1. 采用Ragel(有限状态机),实现HTTP/1.1的简单协议uri的解析
  2. 基于 SocketStream 实现 HttpConnection(HTTP的客户端) 和HttpSession(HTTP服务器端的链接)
  3. 基于 TcpServer 实现 HttpServer 。提供完整的HTTP的客户端API请求功能,HTTP基础API服务器功能

2.13. Servlet模块

  1. 仿照java的servlet,实现一套Servlet接口:ServletDispatch、FunctionServlet、NotFoundServlet
  2. 支持uri的精准匹配,模糊匹配等功能
  3. 和HTTP模块,一起提供HTTP服务器功能

3. 面向用户分析

💕有请求的地方就有并发💕

4. 预计支持请求并发量

10000

5. 技术需求

  1. C++
  2. CMake
  3. Git
  4. Linux
  5. 网络编程
  6. Ctest 、Catch2

6. 真实性、可用性、价值性 需求

真实性:可以真实地解决现实生产环境下的并发访问问题
价值性:可以提高服务的响应速度和处理能力,提高用户的满意度,从而提升的竞争力
可用性:设计上充分考虑了可用性和可靠性,可以在遇到故障时快速恢复服务

7. 团队项目的GitHub地址

👉👉 Distributed_server_framework

开发流程UML
在这里插入图片描述

二、团队计划

👉👉 项目技术文档管理

1. 项目时间安排表

1.1 原有时间安排表

第 5 周1.团队组队、团队博客
2.团队介绍、成员展示、角色分配、选题确定
3.制定团队计划安排,团队贡献分的规定
第6周1.需求规格说明书
2.原型设计,队员估计任务难度并学习必要的技术
3.编码规范完成、平台环境搭建完成、初步架构搭建
第7周1.原型改进(给目标用户展现原型,并进一步理解需求)
2.架构设计,WBS, 团队成员估计各自任务所需时间
3.测试计划
第8、9周1. 团队项目Alpha任务分配计划
2. 连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交
第10周1.用户反馈+测试计划改进
2. 团队Alpha阶段个人总结
3. 团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理
第11周1. 团队项目Alpha博客:事后分析

1.2 校正后时间安排表

第 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博客:事后分析

2. 完成情况

详情看文档进度:👉👉 项目技术文档管理

  1. 已经完成 确立版本管理方式、开发环境配置
  2. 开启了日志模块开发

3. 团队分工

任务成员
开发(具体任务在文档给出)邱棋浩、宫旭、李伟东、江周勉、李昊旃、赵光明、钟海超
测试邱棋浩、江周勉、赵光明
文档编写邱棋浩、宫旭、李伟东、江周勉、李昊旃、赵光明、钟海超
文档管理邱棋浩
博客李昊旃、钟海超、邱棋浩、李伟东

4. Issues截图

1
2

三、个人感想

姓名感想
邱棋浩今天吃麻辣烫
宫旭心中有目标,胸中有任务,一齐向前冲
李伟东不希望因为害怕就堵住了我前进的路
江周勉勤奋是你生命的密码,能译出你一部壮丽的史诗
李昊旃车到山前必有路,船到桥头自然直
赵光明我们都是参天大树,都能摘星揽月
钟海超世上无难事,只要肯攀登
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mmi-工程-rd-产品需求规格说明书模板-v1.0是用于描述产品需求的规范文件。它可以帮助团队清晰地了解和沟通产品的功能需求、设计要求和性能指标等信息。 该模板的主要部分包括以下几个方面: 1. 产品概述:介绍产品的背景、目标和整体架构等,以便团队了解产品的整体情况。 2. 功能需求:详细描述产品的各项功能需求,包括用户界面、数据处理、数据存储等方面的要求。可以使用流程图、用例图等方式进行展示,以便团队清晰地理解功能需求。 3. 性能需求:定义产品的性能指标和要求,包括响应时间、吞吐量、安全性等方面的需求。这些指标将在产品的设计、开发和测试过程中进行验证。 4. 用户需求:描述产品的目标用户群体和他们的需求,以便团队在产品设计和开发过程中能够更好地满足用户的期望。 5. 设计限制:列举产品开发中需要遵守的限制和约束条件,例如技术限制、成本限制等,以确保产品的可行性和可实施性。 6. 接口需求:定义产品与其他系统或组件之间的接口要求,包括数据格式、通讯协议等,以便团队在开发过程中能够与其他系统进行合理的集成。 通过使用mmi-工程-rd-产品需求规格说明书模板-v1.0,团队可以更好地理解和沟通产品的需求,确保产品开发过程中团队成员的一致理解,并为产品的设计、开发、测试和上线提供明确的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值