团队项目技术规格说明书

技术规格说明书

一、前端框架

小程序是如今比较热门的一种移动端应用形式,跨平台且用户使用十分便利。为此咱们选择将咱们的应用开发在小程序上。小程序的前端框架咱们选择了腾讯的wepy前端框架,该框架支持 npm 包,支持 css 预处理器,并且组件美观且有完整的指导文档,便于咱们学习以及完成咱们的开发任务。php

二、后端框架

关于后端框架的选择,咱们调研了基于python 的Django,Flask 框架,以及基于php 的ThinkPHP,基于java的JSP。最终咱们选择了基于python语言的Django框架。愿意以下:css

  • Django封装较好,学习成本较低,而且功能齐全。咱们组开发后端的人员中有的同窗彻底没有相关的开发经验,选择Django有助于他们快速上手,并完成咱们的开发任务。
  • 具备较强的数据库访问组件。咱们能够方便的对数据库进行操做即便没有SQL语言的基础。
  • admin interface. Django 拥有一个完整的后台管理界面。可视化界面简化了咱们对后台数据的管理。
  • Django 目前的文档已经至关完善,也易于咱们学习。

三、前端技术

做为手机APP,页面是用户直接接触到的主要部分,也是前端的主要部分。合理的页面布局设计与页面跳转关系是确保用户体验的必要条件。前端

页面转换关系

页面的转换关系以下图,其中,矩形框表示具体页面,连线表示页面的跳转,线上文字表示触发跳转的用户动做。用户按下返回按键时,返回当前页面的上一级页面。当前页面上一级有多个页面时,由哪一个页面进入当前页面,则返回哪一个页面。java

页面布局设计

页面布局设计在功能规格说明书中有详细示意图,此处再也不重复。设计的主要原则是尽可能清晰简明的将该页面中的主要信息传达给用户。python

四、数据库结构规格

  • 数据库中须要存储用户数据、用户我的信息、帖子、申请4个实体,实体之间存在联系,实体也包含属性。联系、属性以下图所示:

五、接口规范

前端

  • 欢迎和登录页面 /index
  • 注册页面/register
  • 帖子总览页面/f
  • 帖子详情/p/<post_id>
  • 帖子收到的申请/p/<post_id>/apply
  • 个人帖子 /my/<ID>/post
  • 个人申请/my/<ID>/apply
  • 发布帖子c/post

后端

post 请求

/login
  • parameter数据库

    {
        "account":"string", // 惟一,英文字母和数字,长度不超过14,以英文开头
        "password":"string"  // 数字大小写字母,标点符号,8~14个字符
    }
  • returnnpm

    {
        "ret":"bool", //是否登陆成功
        "ID":"string" // 用户的惟一ID
    }
/register
  • parameterjson

    {
        "account":"string", // 惟一,英文字母和数字,长度不超过14,以英文开头
        "password":"string",  // 数字大小写字母,标点符号,8~14个字符
        "name":"string", //真实姓名
        "age":"int", 
        "studentID":"string",
        "sex":"string", 
        "major":"string",
        "grade":"string"
    }
  • return小程序

    {
        "ret":"bool", //是否注册成功
        "ID":"string" // 用户的惟一ID
    }
c/post
  • parameter后端

    {
          "title":"string",
          "postDetail":"string",
          "requestNum":"int",
          "ddl":"datetime", //YYYY-MM-DD
          "posterID":"string",
      }
  • return

    {
        "ret":"bool", //是否发布成功
        "postID":"string" // 帖子ID
    }

get请求

/f
  • return

    [
        {
            "title":"string",
            "postDetail":"string",
            "requestNum":"int",
            "acceptedNum":"int",
            "ddl":"datetime", //YYYY-MM-DD
            "ifEnd":"bool",
            "postID":"string",
            "posterID":"string",
      },
        ...
    ]
/p/
  • return

    {
          "title":"string",
          "postDetail":"string",
          "requestNum":"int",
          "acceptedNum":"int",
          "ddl":"datetime", //YYYY-MM-DD
          "ifEnd":"bool",
          "postID":"string",
          "posterID":"string",
      }
/p/ /apply
  • return

    [
         {
          "applyID":"string",
          "resume":"file",
          "applyStatus":"string", //接受,待定,结束
          "applicantID":"string",
      },
         ...
     ]
/my/<ID>/post
  • return

    [
        {
            "title":"string",
            "postDetail":"string",
            "requestNum":"int",
            "acceptedNum":"int",
            "ddl":"datetime", //YYYY-MM-DD
            "ifEnd":"bool",
            "postID":"string",
            "posterID":"string",
      },
        ...
    ]
/my/<ID>/apply
  • return

    [
         {
          "applyID":"string",
          "resume":"file",
          "applyStatus":"string", //接受,待定,结束
          "applicantID":"string",
      },
         ...
     ]

六、错误处理

咱们定义错误处理类,对错误进行分类汇总,集中处理,目前暂时分为以下几大类,具体的细化会在开发的时候逐渐扩充。

  • InvalidInputError: 处理不合理的输入,好比用户名,密码中的不合理的字符以及发布需求的时候,填入不合法的人数,截至日期等等。
  • DataOverflowError: 防止用户输入大量的数据致使程序崩溃,限制用户的输入的长度而且抛出异常。
  • FrequentRefreshError: 用户若是过于频发刷新,抛出异常并在必定时间内禁止刷新,防止app崩溃

七、应对变化的灵活性

咱们将功能抽象成独立的接口,前端UI操做与后端响应函数与数据管理十分独立,程序每一个页面之间的实现也互相独立,程序具备良好的扩展性以及应对变化的能力。

八、抗压能力

拥有较好的异常处理机制防止程序崩溃,对于模拟大量用户同时操做的压力测试目前尚未作。

相关文章
相关标签/搜索