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工作流
- 总结:在以前我们通常使用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的使用更加得心应手,与组员的配合也更加默契,对团队协作开发的概念也有了更为深刻的认识,合作中的效率直线上升,在软件的开发测试过程中,项目开发能力得到直线提升,在专业方面感觉进步很大。
- 王孜睿:在本次实验中主要负责项目系统的设计,需求分析,部分代码编写。通过这次实验,对一个软件从开发到成熟有了更为深刻的认识,认识到软件工程这门课存在的合理性以及必要性,如果软件工程的开发不成系统,没有进入到成熟的多人协作的开发阶段,那么将很难有众多优秀的软件诞生和如今成熟的软件生态。
- 心得总结:通过这次实验,大家的团队开发能力都有了很大的进步,无论是团队开,组队沟通,还是配合协作能力都有了长足的进步,虽然在整个软件开发的过程中还存在磕磕绊绊,但总体的过程已经日渐熟练,做出的软件项目也更加像模像样,我们心里都有了取得进步的满足感,但同时我们也更加意识到软件项目开发是一个很艰难的过程,众多成员思维的碰撞终将要产生交汇,如何从项目的系统需求,现实的技术水平,以及众多成员的想法中走出一条最优解道路是一个充满考验的过程,只有多进行项目开发,才能有更多的经验,更成熟的想法,这应该是软件项目协作开发不可或缺的,也是弥足珍贵的,希望我们众多成员都能在这条路上越走越远。