202214-无霸哥 实验九 团队作业6:团队项目编码

项目 内容
班级博客 链接
作业要求 链接
团队名称 无霸哥
团队成员分工描述 王孜睿:建立数据库;
牛靖威:编写前端,撰写博客;
曹霖枫:后端实现,完善说明文档;
团队课程学习目标 1.了解了软件编码实现的工程要求;
2.掌握了软件开发过程
这个作业在哪些方面
帮助团队实现学习目标
掌握了软件编码实现的工程规范。
团队博客链接 无霸哥
团队项目Github仓库地址链接 GIthub

任务1:完善《实验八 项目需求分析建模与系统设计(2)》的项目系统设计说明书,进一步细化分析系统设计模型,精化类的属性和操作,详细定义类中服务参数和具体实现逻辑,调整类的层次关系和关联关系,定义软件数据库表结构等。并编制《XXX软件设计说明书1.2》发布在团队项目Github仓库。

  • 细化分析系统设计模型

    • 1.用户注册登录模块;
    • 2.用户管理模块(管理员权限);
    • 3.文章内容浏览模块;
    • 4.点赞评论收藏交互模块;
    • 5.个人内容管理模块。
  • 精化类的属性和操作,调整类的层次关系和关联关系,详细定义类中服务参数和具体实现逻辑

    • 邮箱验证(EmailCaptchaModel)

      属性 类型 描述
      id Int 主键
      email String(64) 邮箱
      captcha String(64) 邮箱验证码
      create_time DateTime 时间
    • 用户(UserModel)

      属性 类型 描述
      id Int 主键
      username String(64) 用户名
      password String(200) 密码
      email String(64) 邮箱
      join_time DateTime 注册时间
    • 文章(QuestionModel)

      属性 类型 描述
      id Int 主键
      title String(100) 标题
      content Text 内容
      author_id Int 作者id(外键)
      create_time DateTime 发布时间
    • 评论(CollectModel)

      属性 类型 描述
      id Int 主键
      content Text 内容
      question_id Int 文章id(外键)
      author_id Int 作者id(外键)
      create_time DateTime 评论时间
    • 资源(FileModel)

      属性 类型 描述
      id Int 主键
      filename String(64) 资源名
    • 收藏(CollectMode)

      属性 类型 描述
      id Int 主键
      user_id Int 用户id
      question_id Int 文章id(外键)
      author_id Int 作者id(外键)
  • 定义软件数据库表

  • 软件设计说明书

  • Github上传截图:

任务2:团队软件项目编码准备,要求如下:

(1)搭建并配置软件开发环境;
(2)团队商议制定团队项目编码规范。

  • 搭建并配置软件开发环境:

    • 虚拟环境
      虚拟环境是python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局python解释器。这样做的好处:为每个项目单独创建虚拟环境,可以保证应用只能访问所在虚拟环境中的包,从而保证全局解释器的干净整洁,使其只作为创建更多虚拟环境的源;使用虚拟环境不需要管理员权限。
    • 创建和使用虚拟环境
      • pip工作流
        1.创建虚拟环境:python3和python2创建虚拟环境的方法有所不同:
        python3中虚拟环境由标准库中的ven包原生支持:python3 -m venv venv(虚拟环境的名称)。通常虚拟环境的名称为venv,上述命令执行完毕后,项目目录中会出现一个名为venv的子目录,这里就是一个全新的虚拟环境,包含这个项目专用的Python解释器。
        python2没有集成venv包,这一版python解释器要使用第三方工具virtualenv创建虚拟环境:sudo pip install virtualenv + virtualenv venv;
        2.激活虚拟环境:
        source venv/bin/active(Linux) + venv\Scripts\active(windows)
        输入deactive退出虚拟环境,即还原当前终端会话的PATH环境变量。
        3.使用pip安装包:
        python包使用包管理器pip安装,所有虚拟环境中都有这个工具
        4.使用豆瓣镜像安装:pip install flask -i https://pypi.douban.com/simple
                  pip freeze > requirements.txt 生成需求文件
                  pip install -r requirements.txt 安装requirements.txt列出的依赖包
      • Pipenv工作流:Pipenv是基于pip的python包管理工具,它的用法与pip相似,可以看作是pip的加强版,它的出现解决了旧的pip + virtualenv + requirements.txt的工作方式的弊端,使得包安装、包依赖管理和虚拟环境管理更加方便:
        安装Pipenv:pip install pipenv -i https://pypi.douban.com/simple
        执行pipenv install:会为当前项目创建一个文件夹,该文件夹包含
        隔离的python解释器环境,并安装pip、wheel、setuptools等基本包;
        如果项目中包含Pipfile文件,其中的依赖包也会被一并安装。
        默认情况下pipenv会同一管理所有虚拟环境,虚拟环境文件夹会在在C:\Users\Administrator.virtualenvs\(Linux:~/.local/share/virtualenvs/)。若想在项目目录内创建虚拟环境文件夹,可以添加环境变量WORKON_HOME=PIPENV_VENV_IN_PROJECT。
        pipenv shell:激活虚拟环境
        pipenv run python hello.py:使用当前项目的虚拟环境运行hello.py程序。
    • 总结:在以前我们通常使用pip搭配一个requirements.txt文件来记录 依赖。但requirements.txt需要手动维护,在使用上不够灵活。Pipfile的出 现就是为了替代难于管理的requirements.txt。在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install命令还会在项目文件夹根目录下创建Pipfile和Pipfile.lock文件,前 者用来记录项目依赖包列表,而后者记录了固定版本的详细依赖包列 表。当我们使用Pipenv安装/删除/更新依赖包时,Pipfile以及Pipfile.lock 会自动更新。当需要在一个新的环境运行程序时,只需要执行pipenv install命令。Pipenv就会创建一个新的虚拟环境,然后自动从Pipfile中读取依赖并安装到新创建的虚拟环境中。Pipenv会自动帮我们管理虚拟环境,所以在执行pipenv install安装Python包时,无论是否激活虚拟环境,包都会安装到虚拟环境中。后面 我们都将使用Pipenv安装包,这相当于在激活虚拟环境的情况下使用pip安装包。只有需要在全局环境下安装/更新/删除包,我们才会使用pip。
    • Flask依赖包
      pipenv install flask后,除了Flask包外,同时被安装的还有5个依赖包:
      Jinjia2:模板渲染引擎
      MarkupSafe:HTML字符转义工具
      Werkzeug:WSGI工具集,处理请求与响应、内置WSGI开发服务器、调试器和重载器;
      click:命令行工具
      itsdangerous:提供各种加密签名功能
  • 商议制定团队项目编码规范:

  • Github上传截图:

任务3:以团队作业的前期成果为基础,采用团队协作方式编写软件代码,创建程序开发软件关联数据库,进行必要代码测试。

  • 访问权限

  • 注册

  • 登录

  • 首页

  • 个人中心

  • 用户管理(管理员)

  • 发布文章

  • 评论点赞

  • 我的收藏

  • 资源共享

  • 文章内容浏览

  • 教程

  • GitHub上传源码截图

任务4:完成《实验九 团队作业6:团队项目编码》团队博文作业:

  • 完成情况如下图所示:

  • 分工描述

    任务类型 花费时间(min) 负责人
    任务一 150 王孜睿
    任务二 180 曹霖枫
    任务三 240 王孜睿,曹霖枫,牛靖威
    任务四 180 牛靖威
  • 实验心得:

    • 牛靖威:在本次实验中主要负责博文撰写,数据库设计,部分代码编写。通过此次实验,对团队写作编码开发掌握得更加熟练,同时也巩固了数据库方面的知识,同时博文书写的能力也有了增强,在团队写作开发的过程中有了更高的效率,对软件工程的概念有了更为清晰的认识
    • 曹霖枫:在本次实验中主要负责前端后端主要设计,代码编写实现,数据库设计。通过这次实验,对python的使用更加得心应手,与组员的配合也更加默契,对团队协作开发的概念也有了更为深刻的认识,合作中的效率直线上升,在软件的开发测试过程中,项目开发能力得到直线提升,在专业方面感觉进步很大。
    • 王孜睿:在本次实验中主要负责项目系统的设计,需求分析,部分代码编写。通过这次实验,对一个软件从开发到成熟有了更为深刻的认识,认识到软件工程这门课存在的合理性以及必要性,如果软件工程的开发不成系统,没有进入到成熟的多人协作的开发阶段,那么将很难有众多优秀的软件诞生和如今成熟的软件生态。
    • 心得总结:通过这次实验,大家的团队开发能力都有了很大的进步,无论是团队开,组队沟通,还是配合协作能力都有了长足的进步,虽然在整个软件开发的过程中还存在磕磕绊绊,但总体的过程已经日渐熟练,做出的软件项目也更加像模像样,我们心里都有了取得进步的满足感,但同时我们也更加意识到软件项目开发是一个很艰难的过程,众多成员思维的碰撞终将要产生交汇,如何从项目的系统需求,现实的技术水平,以及众多成员的想法中走出一条最优解道路是一个充满考验的过程,只有多进行项目开发,才能有更多的经验,更成熟的想法,这应该是软件项目协作开发不可或缺的,也是弥足珍贵的,希望我们众多成员都能在这条路上越走越远。
posted @ 2022-06-20 21:37  无霸哥d  阅读(157)  评论(0编辑  收藏  举报