201971010116-姜婷 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 2022年春软件工程课程班(2019级计算机科学与技术) |
这个作业要求链接 | 实验四 团队作业1:软件研发团队组建 |
本次课程学习目标 | 1. 实验三作业互评。 2. 组建软件项目研发团队。 |
这个作业在哪些方面帮助我实现学习目标 | 1. 构建项目团队,实现大致分工,并做了成员间的了解 2. 学习别人的项目,改进自己的代码,弥补不足 3. 对自己的代码规范有了更多的启发和反省 |
团队博客 | Typhoon-Team |
博客评论链接 | 201971010115-蒋敏敏 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告 |
本项目Github的仓库链接地址 | Knapsack-0-1 |
一、任务1:《实验三 软件工程结对项目》项目学习
1. 博文评论:201971010115-蒋敏敏 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告
仓库链接:Algrithm_platform
评论点 | 评论内容 |
---|---|
博文结构 | 博文结构完整,逻辑清晰有条理,排版更是清晰明了👍,该有的部分都做得很到位,标题清楚👍,目录结构清晰罗列了各项博客任务,方便观看浏览。👍 |
博文内容 | 认证仔细地完成了每个部分的书写,可以看到在结对过程中双方互相合作,项目代码双方互相结合,彼此相互讨论、说服。讲整个项目分解成了一个个小的点,一点一滴的逐个完成击破,最终很完美的完成了各个测试点😍。内容落实到每一个细节,在实验二的基础上再次填充,将背包问题代码、逻辑娓娓道来。也有对结对方项目的仔细核查。功能设计利用流程图更是将每个部分清晰的表达出来了。整个项目的结构也十分的清晰。在重要部分还罗列了自己的代码,方便其他人学习。在代码提交展示部分看到双方交错提交可以看出建立了良好的合作关系。🙌 |
博文结构与PSP中“任务内容”列的关系 | 博主在博客中所写到的项目实现流程与PSP的主要流程基本保持一致,可见博主是按照PSP来完成此次项目的,博客正文结构完整,逻辑性较好,对于项目整体描述很详细,值得学习。 |
PSP数据的差异化分析与原因探究 | 整个PSP表中的差异并不是很大,两位成员对自己的能力、时间安排有清楚的认知😏,对每个任务内容的预留时间与自己完成做需要的时间大差不差。 |
进度计划方面具体建议 | 项目时间安排分配合理,觉得博客写的十分优秀,代码部分也写得清晰明了(很优美)。博客的话可以利用div><img src=></div的结构重做图片调整,让博客看起来更整齐👬。 |
2. 项目克隆运行
克隆下载,运行后出现错误:
Error: Please select a valid Python interpreter
原因是:把一个电脑写的python代码,打包到另一个电脑上导入pycharm运行:在pycharm导入源项目的时候没有选择运行Python的程序。可以通过选择python安装目录下的运行程序,来解决这个问题。
3. 代码核查表
项目 | 内容 | |
---|---|---|
概要部分 | 代码符合需求和规格说明么? | 是 |
代码设计是否考虑周全? | 是 | |
代码可读性如何? | 较好 | |
代码容易维护么? | 是 | |
代码的每一行都执行并检查过了吗? | 是 | |
设计规范部分 | 设计是否遵从已知的设计模式或项目中常用的模式? | 是 |
有没有硬编码或字符串/数字等存在? | 否 | |
代码有没有依赖于某一平台,是否会影响将来的移植? | 依赖eclipse开发环境,无法在idea中运行 | |
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现? | 否 | |
有没有无用的代码可以清除? | 有很多重复性的代码 | |
代码规范部分 | 修改的部分符合代码标准和风格么? | 符合 |
具体代码部分 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 | 无错误,字符长度,从0开始计数 | |
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? | 没有死循环 | |
有没有使用断言来保证我们认为不变的条件真的得到满足? | 没有 | |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? | 有可能,存在优化空间 | |
数据结构中有没有用不到的元素? | 无 | |
效能 | 代码的效能如何?最坏的情况是怎么样的? | 是 |
代码中,特别是循环中是否有明显可优化的部分? | 是 | |
对于系统和网络的调用是否会超时?如何处理? | 是 | |
可读性 | 代码可读性如何?有没有足够的注释? | 是 |
可测试性能 | 代码是否需要更新或创建新的单元测试? | 是 |
点击查看更多小组克隆详情
克隆后,运行指令
python manage.py runserver
显示错误:
ModuleNotFoundError: No module named 'simpleui'
安装simpleui模块
pip install simpleui
发现对方项目使用并且安装sqlite图形界面软件SQLit Expert
再次运行,显示错误
django.db.utils.DatabaseError: database disk image is malformed
二、阅读《现代软件工程—构建之法》第12章,完成以下分析任务:
1. 运行照片:
图1 终端运行结果
图2 算法求解
图3 柱状图绘制
图4 日志记录
2. 总结他人项目
项目 | 我的发现 |
---|---|
任务3要求的功能软件解决了吗? | 各个功能点均已完成 |
软件在数据量优缺点 | 可以自行选择数据量集 |
软件在界面优缺点 | 各选项清晰明了,交互操作清晰容易理解 |
软件在功能上优缺点 | |
产品功能有什么改进意见 | 可以将各项功能串接起来,实现选择一个数据集直接实现一系列的绘图、排序、算法求解,不再每个功能都得再选一次,用户体验不是很好。以及绘图时的坐标轴长度选择过大,让散点图看起来不够美观。并且在绘图过程中会弹出两个框我觉得合并为一个更能提升用户体验 |
3. 实验三任务3所研发软件产品的典型用户群特征
项目 | 特征 |
---|---|
学历 | 高中及以上 |
年龄 | 18~23 |
专业 | 计算机专业 |
爱好 | 热爱算法求解,喜欢前端设计 |
收入 | 不限 |
表面需求 | 背包问题求解 |
潜在需求 | 背包问题在计算机理论和运筹学等领域中扮演着重要的角色,可以被抽象应用于很多实际问题,比如股市投资、国家预算、资源分配等。 |
4. 评价结论
评价作业选择一个结论:好,不错,功能点全部实现,但或许站在用户层面思考项目设计会设计出更好的界面。
5. 代改进本小组实验三的任务3:
三、任务2:团队组建
1. 团队名称:Typhoon-Team
2. 团队成员组成
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
201971010259 | 张圆圆 | byg-zyy | 组长(PM) |
201971010116 | 姜婷 | Jiokie | 组员 |
201971010135 | 孙得弘 | sundh1017 | 组员 |
3. 成员风采
成员 | 风格 | 擅长技术 | 编程兴趣 | 希望的承担的软工角色 | 宣言 |
---|---|---|---|---|---|
张圆圆 | 对一切充满热情 | Java,移动应用开发设计 | 算法编程学习,网络编程学习 | 项目后端设计及开发 | 自律努力,未来可期 |
姜婷 | 灵活多变 | Python、web页面设计 | 算法、前端设计 | 项目测试、前端设计 | 凡事不等等。 |
孙得弘 | 态度积极,吃苦耐劳 | python,算法设计 | 前端设计 | 技术兼管理型SE | 励精图治,发奋图强 |
4. MSF的9条基本原则
MSF团队模型推动了不同利益代表在追求共同利益过程中的融合,其9条基本原则具体如下所示:
-
推动信息共享与沟通
- 所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人。对牵涉到的技术机密、安全性等信息要采取必要的保护措施。
-
为共同的远景工作
- 兄弟同心,其利断金,同心同德,明确项目的目标,目标不是空泛的,应该对项目成员每天的工作都有指导作用。
-
充分授权和信任
- MSF团队模型就是建立在以下两个原则上的:
(1)平等协作——成员之间、团队之间是平等协作的关系;
(2)充分授权给团队和成员。 - 充分授权在MSF团队模型的另一个含义是:信任,鼓励团队成员成长,每人都可以在某一时段、某一领域当领导。
- MSF团队模型就是建立在以下两个原则上的:
-
各司其职,对项目共同负责
- 每个角色在其职责范围内的失败都会导致整个项目的失败,而且各个角色的工作都是互相渗透、互相依赖的。这种互相依赖的方式也鼓励团队成员在自己本职之外为其他领域做贡献。
- 项目团队中每个角色都有自己的职责:
MSF团队模型和关键质量目标- 在项目进展的过程中,对于每一项任务,每个人都要明确以下几点。
Who:谁负责。
What:做什么,具体的执行方案,什么叫做“做好了”。
When:什么时候开始,什么时候结束。
Why:为什么是这样安排(和项目的远景是否吻合),在什么情况下可以变更?
-
重视商业价值,提供渐进的价值
- 怎样衡量一个项目的成功?并不是最酷的技术,而是商业的成功。一个项目的商业价值只有在它被成功地发布并运行时才能体现出来。
-
保持敏捷,预期变化
- 软件工程,唯一不变的是变化。不要幻想客户的需求会在第一时刻很明确,然后保持不会变,但这其中的变化是预期变化,不是期望变化。除开外部原因,团队内部也在变化,我们对技术的掌握每天都在提高,原来认为不可能的事可能变得容易。我们对客观世界和软件系统的了解每天都在深化,原来觉得没问题的小细节忽然成了大问题,这些都要求我们团队保持敏捷的身段。
-
投资质量
- 对质量的重视,引发对质量的投资,引发对人、过程和工具的投资。
-
学习所有的经验
- 在学习过去的经验的同时,也要避免让过去的经验妨碍解决现在的问题。俗话说得好,“取其精华,去其糟粕”。
-
与顾客合作
- MSF强调产品团队与顾客的交流与合作,并不是产品团队拿到合同之后,就闭门造车,直到产品完成才告诉用户,给他们一个惊喜(通常“惊”大于“喜”)。项目当然是项目团队成员做的,但是项目的商业价值要由用户说了算,那些“我觉得用户会喜欢”:的东西要及早和用户交流。因为“我觉得”和“用户觉得”是两码事。
5. 阅读《现代软件工程—构建之法》第5章内容
-
什么是团队?
- 团队有一致的集体目标,团队要一起完成这个目标。
- 团队成员有各自的分工,互相依赖合作,共同完成任务。
-
阅读了各种软件团队模式,我们团队选择功能团队模式(Feature Team)为我们的主要模式。
功能团队模式具备不同能是力的成员平等协作,共同完成一个功能。在这个功能完成之后,又重新组织,和别的角色一起去完成下一个功能。之间没有管理和被管理的关系。 -
瀑布模型有适用范围么?我认为有:
- 如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证
- 产品模块之间的接口、输入和输出能很好地用形式化的方法定义和验证
- 使用的技术非常成熟,团队成员都很熟悉这些技术
- 负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流
-
Team Software Process的原则:
- 使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的。
- 团队的各个成员对团队的目标、角色、产品都有统一的理解。
- 尽量使用成熟的技术和做法。
- 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
- 制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来)。
- 增加团队的自我管理能力。
- 专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。
6. 组建团队企业微信群
7. 团队特色描述,言简意赅的描述团队特点或核心竞争力;
团队要点 | 具体描述 |
---|---|
团队特点 | 精益求精,追求完美;具有明确且有挑战性的共同目标,团队具有很强的凝聚力。 |
团队核心竞争力 | 团队成员之间凝聚力很强,团队成员对各个方面的编程技术都有一定的学习及了解,便于以后的软件项目开发。 |
8. 记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务内容 | 计划共完成的时间(min) | 实际完成时间(min) |
---|---|---|
团队初步组建 | 30 | 60 |
组长的选定 | 25 | 15 |
实验内容分工规划 | 35 | 40 |
创建企业微信群 | 8 | 5 |
开通团队博客 | 20 | 30 |
博客互评 | 35 | 45 |
选择实验三项目运行 | 80 | 90 |
迭代更新小组实验三项目 | 70 | 95 |
阅读《构建之法》 | 80 | 90 |
团队博客编写 | 280 | 320 |
反思及总结 | 30 | 20 |
9. 本次作业的感受和体会。
团队成员 | 本次作业的感受和体会 |
---|---|
张圆圆 | 在此次团队作业中,团队成员之间都相互熟悉了解了,对于此次团队作业,也通过不同的分工完成了此次作业,在以后的团队合作中,将不断学习,提高自身能力,与团队成员一起学习成长,在以后的团队合作中共同努力,完成以后学习中的各个任务。 |
姜婷 | 通过小组分工合作,分工完成各项目标。期待未来的合作,希望我们每个小组成员互相竞争合作实现学习目标,促进个人编程技术成长以及团队协作技巧。 |
孙得弘 | 团队成员之间要互相信任,合理分工,共同朝一个方向前进。对于工作和任务要认真负责,遇到问题也要和成员积极沟通,只有及时的沟通才能及时解决问题。 |