201971010145-姚恪 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 19卓越 |
这个作业要求链接 | 作业链接 |
团队名称 | WGYG |
我的课程学习目标 | 1.实验三作业互评 2.组建软件项目研发团队 |
这个作业在哪些方面帮助我实现学习目标 | 1.加深对于PSP的理解 2.知道团队合作的重要性 |
团队博客链接 | WGYG |
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务
项目 | 内容 |
---|---|
小组项目成果 | 魏瑾川&郭清华 |
GitHub地址 | 仓库链接 |
(1)对博文作业进行阅读,并结合评分要求进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,给出这个结对小组在进度计划方面可以提高的具体建议。将以上评论内容发布到博客评论区。
- 点评内容:
- 博文结构:美观大方,结构合理,给人赏心悦目之感
- 博文内容:内容充实完整,简洁有力,说明的十分详细
- 博文结构与PSP中“任务内容”列的关系:十分切合PSP内容,与所给出的PSP表几乎一致
- PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究:可能与作者在完成本次实验中用到的新技术学习有关,使用到了Django框架,需要花费较多时间去理解
- 所给出的建议:希望博主可以完善人机交互界面,对于Django框架继续深入使用
(2)克隆任务3项目源码到本地机器,阅读并运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录
(3)代码核查表
内容 | 实际完成情况 |
---|---|
概要部分 | |
代码符合需求和规格说明么? | 符合 |
代码设计是否考虑周全? | 考虑周全 |
代码可读性如何? | 十分美观 |
代码容易维护么? | 较难 |
代码的每一行都执行并检查过了吗? | 已检查 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 是 |
有没有硬编码或字符串/数字等存在? | 没有 |
代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到 Win64 )? | 没有 |
开发者新写的代码能否用已有的 Library/SDK/Framework 中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 能存在某些代码可以调用 |
有没有无用的代码可以清除? | 无 |
代码规范部分 | |
修改的部分符合代码标准和风格么? | 符合 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有错误处理,检查了异常 |
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以 0 开始计数还是以 1 开始计数? | 没有 |
边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 没有 |
有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 没有 |
数据结构中有没有用不到的元素? | 没有 |
效能 | |
代码的效能(Performance)如何?最坏的情况是怎样的? | 无法准确判断 |
代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C# 中 string 的操作是否能用 StringBuilder 来优化)? | 并未发现 |
对于系统和网络的调用是否会超时?如何处理? | 不会超时 |
可读性 | |
代码可读性如何?有没有足够的注释? | 可读性一般,注释较少 |
可测试性 | |
代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库、网页、多线程等),可以整理专门的核查表。 | 不需要 |
(4)阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:
-
A.体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片
- 人机交互界面
- 程序功能实现
- 人机交互界面
-
B.总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
- 软件功能:要求的功能软件已基本解决
- 缺点:遗传算法的实现需要优化,前端页面中的人机交互需要加强,框架只是使用了一点特性
- 改进意见:完善输出,需要输出解向量,继续深入开发完善功能
-
C. 从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
学历 | 年龄 | 专业 | 爱好 | 收入 | 用户特征 | 表面需求 | 潜在需求 |
---|---|---|---|---|---|---|---|
本科 | 20左右 | 工科 | 都有 | 基本没有 | 出于学业需求或者兴趣所向 | 解决01背包问题 | 对各种算法技术的理解,绘制散点图技术的掌握 |
4)经过(1)-(3)的工作,你们一定有充分的理由给评价作业选择一个结论:a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
- e)非常推荐
(5)结合(1)—(3)的评论体会,迭代改进本小组实验三的任务3。
-
完善了管理界面
-
效果
任务二:团队组建
1.团队的名称
WGYG
2.团队成员介绍
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
201971010140 | 魏瑾川 | 博客地址 | 开发 |
201971020107 | 郭清华 | 博客地址 | PM |
201971010145 | 姚恪 | 博客地址 | 测试 |
201971010208 | 古丽妮尕尔 | 博客地址 | 文档 |
3.成员风采
成员姓名 | 风格 | 擅长技术 | 编程兴趣 | 希望的承担的软工角色 | 宣言 |
---|---|---|---|---|---|
魏瑾川 | 对新事物充满好奇的心 | python | 后端 | 开发 | 好好睡觉,天天学习 |
郭清华 | 对新事物充满好奇 | java | 后端 | PM | 好好学习,天天睡觉 |
姚恪 | 查找发现一切 | html,css,js等前端技术 | 前端 | 测试 | 容我睡醒再学 |
古丽妮尕尔 | 简洁、干练、省事 | c | 前端 | 文档 | 尽我所能 |
4.阅读《现代软件工程—构建之法》第7章,理解MSF的9点基本原则
MSF的9条基本原则:
- 推动信息共享与沟通开展一个项目的时候,需要大家都了解一个项目,对项目的所有信息都要保留,并做到公开;讨论包括所有需要知道的人员,决定要公布给项目的所有成员;最好的设想是随着项目事件的发生自然地传递到关心这些事情的人那里。
信息共享和沟通是其他原则实行的基础,如果信息不能共享,也就谈不上“授权”,或“建立清晰的责任和共同的职责”,以及“保持敏捷,预测变化”。这就是为什么“信息共享于沟通”是第一基本原则的原因。 - 为共同的远景工作:“共同的远景”是指项目的远景,团队的所有成员都应该同意项目的远景。
我们无论做什么类型的软件都要明确我们项目的目标是什么:目标必须是明确的,无二义性的;目标不是当前就能达到,需要通过努力才能够达到;目标不是“口号”,应该对项目成员每天的工作都有指导作用。项目成员如果发现你做的事情和项目的远景没有帮助,你应该跟老板提出来。
远景一般由“有远见的人”提出,通过公共讨论来形成,在讨论的过程中,可以消除误解,凝聚共识。这是项目的关键,也是项目第一阶段要达到的主要目标! - 充分授权和信任:授权有两层意思:一是给某人权利和权威;二是给予某人更多的自信和自尊。在一个高效的团队中,所有的成员都应该能得到充分的授权,他们有权力在自己的职权范围内按照他们自己的承诺完成任务,同时,他们也充分信任其他同事也能实现各自的承诺。
- 各司其职,对项目共同负责:每个角色都有自己的职责,如果出了问题,这个角色就要负责任。
- 重视商业价值:项目应该是出于商业目的的,如果没有商业的需求,再酷的技术也没有用。商业项目需要重视市场和用户,技术是处于第三位的。
一个团队项目如果没有经得起考验的商业价值,没有明确的远景是很难坚持下去的。当项目遇到困难的时候,当项目看不到尽头的时候,商业价值比激情更能够保证项目的发展。 - 保持敏捷,预期变化:软件工程,唯一不变的是变化。所以别幻想客户的需求会在第一时间很明确,然后保持不会变。除开客户的外部原因,团队内部也在不断的变化,这就要求团队保持敏捷的身段。
- 投资质量:对质量的重视,引起对质量的投资,引起对人、过程和工具的投资。
- 学习所有的经验:对于大型的团队项目,可以进行里程碑回顾;这样既保证项目进行时间不久,大家对项目中发生的事较清晰,也可以帮助在项目后续中去改正这些问题。整个项目结束后,可以举行由外部团队参与的“事后诸葛亮”会,来保证对项目评估的客观以及团队之间的相互学习
5.阅读《现代软件工程—构建之法》第5章内容
-
团队的主要类型有:问题解决型团队、自我管理型团队、交叉功能性团队和虚拟团队。
- 问题解决型团队:问题解决型团队通常由来自于同一个部门的多名工程师组成,组成的目的是为了解决某个技术难题,或者推进某个特定领域的工作,如怎样加强产品质量(部门级)、如何改善工作环境等。在问题解决型团队中,成员针对问题相互交换看法或者提出建议。
- 自我管理型团队:自我管理型团队不仅要解决问题,还要实施解决问题的方案,并对工作成果 承担全部的责任。自我管理型团队通常由10-15人组成,队员之间或者是工作业绩息息相关,或者是从事相互依赖的工作。他们共同承担了很多以前由主管承担的责任。一般来说,他们的责任范围有:计划和安排工作日程;给成员分配工作任务;总体把握工作的步调;做出操作层面的决策;对出现的问题采取措施以及和供 货商和顾客打交道。自我管理型团队甚至可以挑选队员,让队员相互进行绩效评估。
- 交叉功能团队:交叉功能团队通常是由多个跨部门团队成员组成的,如来自于研发、市场、生产等部门成员组成的团队,他们为了完成一项共同的工作任务而共同工作。
- 虚拟团队:虚拟团队是利用信息技术将实际上分散的成员联系起来,以实现一个共同目标的团队,如团队成员通过Internet、可视电话会议系统、电子邮件等方式沟通。
-
团队精神和集体主义的区别:
- 领导方面:群体应该有明确的领导人;团队可能就不一样,尤其团队发展到成熟阶段,成员共享决策权
- 目标方面:群体的目标必须跟组织保持一致,但团队中除了这点之外,还可以产生自己的目标
- 协作方面:群体的协作性可能是中等程度的,有时成员还有些消极,有些对立;但团队中是一种齐心协力的气氛
- 责任方面:群体的领导者要负很大责任,而团队中除了领导者要负责之外,每一个团队的成员也要负责,甚至要一起相互作用,共同负责
- 技能方面:群体成员的技能可能是不同的,也可能是相同的,而团队成员的技能是相互补充的,把不同知识、技能和经验的人综合在一起,形成角色互补,从而达到整个团队的有效组合
- 结果方面:群体的绩效是每一个个体的绩效相加之和,团队的结果或绩效是由大家共同合作完成的产品
6.组建团队企业微信群,给出群成员截图
7.团队特色描述,言简意赅的描述团队特点或核心竞争力
- 团队特色:大家相辅相成,在性格生活等方面都能够愉快的进行合作
- 团队核心竞争力:想象力较强,编程能力在班级中位于前列
任务3:完成《实验四 团队作业1:软件研发团队组建》博文作业
1.完成各项任务花费的时间
任务内容 | 预计花费时间 | 实际花费时间 |
---|---|---|
确定团队 | 30 | 30 |
创建企业微信群 | 5 | 5 |
创建博客园团队博客 | 10 | 10 |
成员互评 | 30 | 30 |
完成任务二 | 120 | 150 |
阅读《构建之法》 | 50 | 60 |
博客撰写 | 90 | 90 |
反思 和总结 | 15 | 15 |
2.反思和总结
初步建立起了一个四人的软件开发团队,大家目前分工已经明确。现阶段需要根据自身情况继续巩固加强自身能力,在以后的团队合作之中充分发挥各自的优点,使得实现1+1>2的效果。在这一过程中大家会各自学到许多,收获许多。