[2017BUAA软工助教]常见问题Q&A

软工常见问题Q&A

目录:

一、转会相关

这个链接记录了关于“转会”的讨论,请看:
http://www.cnblogs.com/math/p/sec004.html

Q.转会的流程是什么样子的?

转会的操作如下:
a)一轮迭代后,组A的任何成员都可以选择跳槽到其他组,但要求其他组能够接受这名成员。
b)由于每组至少需要4人,且比较好的人数在6±1人这个范围内,因此,若组A有多名同学跳槽,导致组A缺少开发必需人数,则视为组A解散。

Q.一个团队里如果有多人要求转会怎么办(解散的流程是什么样子的)?

一个团队若有多人“跳槽”并影响项目开发,则视为团队“解散”,将根据“解散”的流程进行操作。
解散的操作如下:
a)一轮迭代后,组A可申请解散,需提交申请书,并作解散后反思,随后组A成员安插在其余各组,组A原有项目中断。
b)若有多组申请解散,则对这些组进行组员重组,重组组将接手解散组的团队项目。
c)若有更好的方法,欢迎讨论

Q.为什么会有人想要转会呢?

解释一下可能的情况:

  • 我很牛逼,我把我们组的项目弄好了,并且剩下的成员能够继续开发,我看到另外一个组需要我这样的人才,于是我决定跳槽去帮助他们
  • 我在这个团队待不下去了,不能发挥自身的价值,决定去其他组
  • 我们这个团队技术上都过关,但是团队相处不融洽,于是决定解散
  • 我们发现,我们这个项目对我们来说太难了,我们不能继续进行开发,于是决定解散

Q.我们为什么要进行这一环节?

1.这是《构建之法》教学的一大特点,请看链接中“真实的项目”一段:
http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html

在这门课中, 我鼓励学生做自己决定的项目,但是要求他们要做”真实的项目”
……
既然真实,就会有人员流动的问题,因为:

  • 有人想去做更好的项目
  • 有人离开公司(退课)
  • 有人和团队中的人合不来
  • 有人觉得自己应该得到更多报酬 (分数,钱,股票),不愿意在原来的团队干了
  • 有人做得很差,团队觉得没有他更好...

这样才会有人员流动,才要让软件保持“可维护性”,否则项目没法活下去。所以,我们在团队项目的alpha阶段后,强制所有团队必须有一个人离开。这个人要自己找能接纳自己的团队(不是原团队)。
有不少同学做过了一个项目alpha版,觉得应该尝试别的项目,他就可以利用这个机制在一学期内做两种项目,有更多的体验和收获。
有的同学抱大腿,打酱油,不想出力,那么,团队就把他请出去,他自己再找别的团队证明自己的价值。 这不是挺好么?

2.从另一个角度:我们可以要求转会的这名同学,留下高质量的代码和文档,使得在他转会之后,新人能较快地接手他的模块并参与到新的团队中,把最好质量的软件做出来。这也很好阿:)

邹欣老师:在我们讲课的这几年中,有助教来来往往,走的也不少,但是整个《构建之法》的方法仍然在不断提高。如果我们一旦走人,所有的经验都丢失了,那在现实世界中能做好事情么?

福大助教畅畅:我们一直知道代码规范、手册、文档的重要性,但如果对于自己的代码一直没有真正训练和考察成效的机会。让一名新鲜血液加入项目组,就可以通过这名新成员是否能迅速上手项目,来检验之前编码规范等工作的成效了。

Q.一个团队中的队员不仅是队员,更多的是伙伴,伙伴为什么要把伙伴推出团队呢?

1.助教刘乾的回答:我之前在上软工课程的时候也有过这样的想法,但经历了阿尔法阶段后反而对换人有所认同。PM,也就是队伍里需要统筹大局的人,要以产品/项目的质量为保障。在这种前提下,如果有比较优秀的同学出走团队,可以视作跳槽;如果有表现平平的同学出走,他也可能是去了一个更适合他的队伍,做着更适合的项目呢:D

Q.为什么要*强制*指定同学转会呢?

1.福大教师张栋:不强制要求,最终大多数组都不会换人。

2.福大助教刘乾:大部分组不换人的根本原因可能还是脸面过不去。组长不好意思换人(因为不是强制的),队员不想走(因为不是强制的)。

Q.我们团队可以没有人转会吗?

1.福大助教刘乾:可以,只有强者才能制定规则,或是打破规则!
2.福大教师张栋:如果你们团队具有强大的团队战斗力和凝聚力,在团队alpha阶段的各个方面都表现优异(例如团队分工、阶段答辩、团队博客、项目完成情况等方面),你们可以用这些事实来说服教师助教:我们组可以没有人转会,我们组就是特例!
这也是我们希望看到的:D

Q.我们组很有凝聚力,但是做的不好,可以没有人转会吗?

不行,只有强者才能制定规则,或者打破规则:)

二、成绩相关

成绩分三部分,最终按照一定权值计算最后得分并进行映射,同时我们允许你做额外的工作来增加得分:

1.博客

除后文中专门说明分数额度的博客外,其余博客(不论是个人博客还是团队博客)均以单次10分的满分参与评分计算。

2.个人与结对项目

项目 总分数 项目分数 博客分数
个人项目 50 35 15
结对项目 100 70 30

说明:博客分数单独评定与计算,项目分数由结对的两人共享

说明:个人与结对项目可能存在附加题,附加题得分将最后加至总分中

3.团队项目

下表为个人整个团队阶段团队项目的分数组成:

组成 数目 总分数
团队介绍 1 10
采访说明 1 10
贡献分分配 1 10
功能规格说明书 1 10
技术规格说明书 1 10
α阶段scrum meeting博客 10 50
α阶段发布说明 1 10
α阶段测试报告 1 10
α阶段现场展示 1 150
α阶段事后分析 1 10
α阶段团队贡献分 1 50
β阶段scrum meeting博客 10 50
β阶段发布说明 1 10
β阶段测试报告 1 10
β阶段现场展示 1 150
β阶段事后分析 1 10
β阶段团队贡献分 1 50
团队源代码管理 1 10
合计 - 620

注:团队贡献分的计算如下:团队A在一个阶段的团队贡献分总分 = 50分*团队人数,在分配贡献分至团队成员时,要求按照团队团队贡献分分配规则分配,要求每人的团队贡献分都不一样。

(待续)

三、选题相关

Q.选题环节的过程是什么样子的?

简述一下选题过程:

0.所有组参加一个名为黄金点的博弈游戏
1.根据游戏结果生成排名
2.根据排名依次选择团队项目

  • *选题(想干嘛干嘛)
  • 选择老师提供的项目(项目被限制为老师提供的内容)

不管你是想做“全新的项目”、“学长之前的项目”还是“老师提供的项目”,请确保你们团队黄金点游戏的排名能足够靠前,否则只能选择这三项里剩下的项目。(9.20更新)
简而言之就是,排名越靠前,选择空间越大,请掌握好黄金点的玩法:D

Q.如何决定团队选题的顺序(什么是黄金点游戏)?

http://www.cnblogs.com/xinz/archive/2011/08/08/2130505.html

以上是基础版本,我们使用的是博客中提到的变种,每组写两个数字,最后根据这两个数字与黄金点的差的绝对值的最小值进行排名。

例:http://www.cnblogs.com/jiel/p/4844205.html

Q.团队项目可以选择哪些题目?(9.23更新)

前提:请确保你们团队黄金点游戏的排名足够靠前,让你们的团队有足够的选择空间:D

1.全新的项目

意思是你们组有自己全新的想法决定实现。
例:物理实验网站的最初版本

2.接手上几届学长的*选题项目后继续开发

意思是你们组没有提出全新的项目,而是考虑接手前几届学长自主开发的项目,这个需要自己联系好学长。
案例:物理实验网站的后续版本

3.选择《构建之法》教学团队提供的项目

意思是你们组没有想要做全新项目的想法,也不打算联系好学长接手他们的项目,你们还可以接手老师们提供的项目,这些项目目前是全新的,期待你们能接手开发:

3.1. 多人协同编辑,详情请参见链接:多人协同编辑

问题:在手机上最可能产生编辑需求的地方发生在IM里的聊天场景,例如需要在群里发一个公告,回复别人的一个问题,需要发送一组超链接。往往我们需要一些简单的编辑,例如把文本稍加组织,添加 1,2,3条目,用一些简单的序号图标,装饰图标或者emoji做列表装饰,例如用一些空行和空格做简单的排版再发送。

痛点:手机上无论哪种编辑器都不提供快速搞定这件事的能力,找一个合适的序号图标,排版这么一个简单需求的文本在手机上都变成了“专家”经验。大部分人发出来的文字还都是凌乱无序的。

设计:手机上最合适的编辑是像:微信,QQ,微博这样的聊天对话框方式。因此,设计一个App,用户只要像聊天一样发送一条一条独立的信息到一个“编辑群”里,然后点击智能排版按钮,自动输出排版精美的带有图标/换行/空格等结构信息的文本/图片,用户再直接发送到其他IM(微信/QQ。微博)里即可。

3.2. 软工自动测试平台:

需求:在软件工程课程中,个人项目的测试一直是一个难以自动化的问题。不同的学校的项目题目不同,测试代码也不一样,每一届助教都需要手动测试或费时费力写一个自动批处理测试的程序。但在助教们使用的过程中发现,实际上大部分测试的大部分步骤都是可以固定下来的,比如说爬取Github仓库,命令行批处理运行等。希望能开发一个软工OJ,它的扩展性比较强,可以稍微定制化。比如能处理数独、能处理四则运算、地铁线路规划这样的题目作业的自动判定测试。它不仅能支持软工题目自动评分、还能支持代码查重、代码规范评分等,同时其定制化的成本不要太大,最好能够支持助教使用不同的语言来利用平台。
形式:平台可以通过下发安装包安装,或可以利用HTTP请求与用户程序交互来提供服务。

3.3 分析Github项目:

需求:在软件工程课程中,个人项目阶段就开始使用了源代码管理。但是由于不熟悉且没有得到有效的指导,学生的Github技能往往不能得到太大的提升。我们希望你开发一款这样的工具:它能自动分析学生源代码项目,并对项目的源代码管理质量作出评分;同时它可以可视化展示不同时间节点提交代码量的多少,并展示出每个同学的实际修改量;最后,它可以对学生的项目提出源代码管理上的一些意见,并且要具体。
形式:暂定为使用网站。

3.4. 博客园移动客户端:

需求:软件工程课要做什么样的项目,从手头的事情出发,解决自己的痛点也是一个好办法。目前,博客园的edu方面的API已经开通了,现在可以在https://oauth.cnblogs.com/申请api授权,班级博客及其它api文档在http://api.cnblogs.com/help,使用过程中遇到的问题可以发邮件到:contact@cnblogs.com
各位老师/助教可以介绍给同学们, 能不能做一个 edu.cnblogs.com 的客户端呢? ——邹欣老师

3.5. 黄金点游戏:

需求:每年所有的构建之法软工教学都要使用黄金点游戏,详情请见
结对和团队项目建议 - 黄金点游戏
这个游戏看似很简单,使用Excel就能玩,那么:

  • 能否将黄金点做成简单的 client/server App,用户从网页/手机上输入数字,并算出获胜者。
    • 研讨 client/server 的API 应该怎么设计,如何认证用户?
    • 如何开发client App
    • 为了保证游戏按时完成,如何在服务器/客户端做时钟同步?
    • 如果获得第一名的多个用户的数字相同,如何排定次序?(提示:可以考虑提交时间,历史成绩)
  • 如何设计测试用例, 保证server 的正确性, 效率, 压力测试 (如何模拟上千个客户端,从不同的端口,提交不同的数字?)
  • 原来我们是让用户从客户端输入数字,看到结果之后,再玩下一轮。用户玩这个游戏是有一定的策略的,我们如何能把这个策略变成程序,成为人工智能呢? 能否利用 AI 算法提交数据?
    • client 程序能访问所有以前的历史记录, 它再推测下一个数字是多少, 然后提交。
    • 这里面也有很多问题要克服,例如,如果数字很小0.00000000000000000001, 下溢了, 怎么办?
    • 应该提交的是 double, float, 还是 string 类型?
  • 玩一万轮, 服务器要能快速处理。
    • 如何在服务器和客户端都做到高效, 能多少秒钟就比完一轮, 并把数据传给所有客户端? 客户端是通过什么接口来接受比赛数据,或者从某个公共来源去读取数据?
  • 修改规则, 每个用户每次可以提交两个数字,
    • 这个时候,有程序会不会提交一个大的数字,来保证自己的另一个数字比较接近golden number?你的AI程序如何在这个新规则下占得先机?
  • 让互联网的用户可以通过网站注册, 然后用某种 Domain Specified Language 写这个AI 的规则, 然后他们也可以通过网站玩这个游戏。
    • 扩展到全球,服务器能 24/7 不断主持游戏,并记录成绩。

3.6. 神策数据提供的项目,目前还在筹备中:

神策数据简介:

神策数据(Sensors Data),是一家专业的大数据分析服务公司,大数据分析行业开拓者,为客户提供深度用户行为分析平台、以及专业的咨询服务和行业解决方案,致力于帮助客户实现数据驱动。神策数据立足大数据及用户行为分析的技术与实践前沿,业务现已覆盖以互联网、金融、零售快消、高科技、制造等为代表的10多个主要行业、并可支持企业多个职能部门。公司总部在北京,并在上海、深圳等地拥有本地化的服务团队,覆盖东区及南区市场;公司拥有专业的服务团队,为客户提供一对一的客户服务。公司在大数据领域积累的核心关键技术,包括在海量数据采集、存储、清洗、分析挖掘、可视化、安全与隐私保护等领域。
神策分析(Sensors Analytics),是神策数据推出的用户行为分析产品,提供私有化部署和SaaS两种部署方式、实现基础数据采集与建模,并可作为 PaaS 平台支持二次开发;神策分析,主要针对营销渠道效果评估、精细化运营改进、产品功能及用户体验优化、辅助管理层决策等典型业务场景。 目前,已赢得中国银联、聚美优品、百联、万达、中邮消费金融、广发证券、中商惠民、米其林、趣店、纷享销客、ofo共享单车、Keep、秒拍、36氪等众多行业领先企业认可。在我国大数据基础建设蓬勃发展的时代,神策数据将更积极、创新地加入企业基础数据源建设、互联网+创新业务发展、大数据技术的深化应用,与各行业领先企业一起构建可持续竞争力,为客户带来价值、重构中国互联网数据根基。

这是目前的讨论记录:
SivilTaram 乾:

大家好,北航的同学要准备确定团队题目了,目前选课有44人,可以结成6-8支团队,所以我觉得可以给他们更丰富的、更前瞻的一些项目做练习。不知道神策数据这边是否有一些小项目的需求,最好是【挺有意思,并且不着急上线】的项目。贵司出一个简略一点的需求,让我们这边的同学们选择看是否要做这个,桑先生以为如何?@桑文锋@SensorsData (我觉得这样的小项目本身更多带着试探性的策略,最好是一个利用神策数据API与其他技术可以完成的项目。桑先生可以考虑一下)

神策数据桑boss:

好的,我和内部商量一下,确定个题目

罗杰老师:

@桑文锋@SensorsData 商先生,根据以往的经验,项目的规模控制在1-2万行代码能完成,然后可以分解为若干功能,会比较好。

神策数据桑boss:

那还是有点挑战的

罗杰老师:

如果项目规模不太好控制,那么软件能够分解为若干功能也是可以的,同学们可以根据实际情况来选择做全部还是部分的功能。

神策数据桑boss:

可以

PS:有几位同学在博客中谈到学校与工业界的交互不够密切。目前北航软工教学团队正在与神策数据商量合作事宜,这将是北航软工与工业界对接的第一步。希望你们能做第一个吃螃蟹的人/第一支吃螃蟹的队伍:D

不知这些项目你们比较中意哪一个呢?

四、团队相关

请先阅读《构建之法》中关于团队的部分:

第五章 团队和流程
第九章 项目经理
第十七章 人、效绩和职业道德

或阅读下方的链接中讲义内容第五部分的链接:
现代软件工程讲义-目录

Q.团队角色分工应该是什么样子的?(9.21更新)

团队角色包括:开发人员、测试人员、美工、PM等角色,具体根据团队项目决定成员。可以参考往年团队的分工进行安排。另外,团队角色分配可以在可以在开发时进行调整。
往年团队1-BugPhobia
往年团队2-软剑攻城队

上一篇:[2017BUAA软工助教]个人项目小结


下一篇:[2017BUAA软工助教]第0次作业小结