《构建之法:现代软件工程》阅读与提问

21373074-朱宇 2024-03-10 15:51:15

《构建之法:现代软件工程》阅读与提问

项目内容
这个作业属于哪个课程2024年北航敏捷软件工程
这个作业的要求在哪里[I.1] 个人作业:阅读和提问
我在这个课程的目标是具备成为一名合格软件工程师所需要的基本素质
这个作业在哪个具体方面帮助我实现目标软件工程的具体实践经验和理论补充

个人补充:由于作业之期紧张,我是通过泛读的形式读完这本书——《构建之法:现代软件工程》,可能会出现我所提问问题的解释在书中已经给出,但被我遗漏掉的情况,欢迎一切指正,我会不胜感激!

问题一:结对编程的侧重点是效率还是创意?

我看到书的 p85-86 提到,“两人合作,还有相互激励的作用,工程师看到别人的思路和技能,得到实时的讲解,受到激励,从而努力提高自己的水平,提出更多的创意...” “在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动”。

结对编程面临着两个思维方式的碰撞,但根据我在人际相处中的一些经验,原文中的这两点可能并不容易都达到。与性格相近、工作环境相近的人结对,沟通的效率会更高,进而能提高工作的效率,但是不可避免地存在思维局限性。但是与性格差异较大、工作环境比较不同的人结对,可以拓展思路,激发更多的创意,但是也因此产生更多的思路分歧,一些决定的取舍相对更难,沟通的效率可能也不会很高。我的困惑在于,在结对编程中,效率和创意可能会无法两全,那么在具体的实践中结对编程的侧重点应该放在哪一方,或者有什么弥补的方法?

问题二:如何把握引导用户需求的程度?

我看到书的 p57 提到,“很多时候用户并不知道自己确切的需求,或者不愿意表达完整的需求,软件团队需要设身处地,替用户着想,引导出需求”。结合上下文,我所理解的意思是,软件团队所需要做的是将用户具有的相对抽象的需求(如与朋友休闲娱乐的需求)具体化(如编写一个游戏)。

然而人有很多面,并不是人所有的需求都是 “越满足越好”。我联想到钻石,它本是比较普遍的矿产材料,但是因为营销以及钻石公司出于盈利的考虑,钻石被包装过多的社会意义,因此价格变得高昂。然而软件团队受限于专业性,即使引导出了需求,他们可能也并不清楚这些需求符不符合公众利益。因此我的困惑在于,软件团队在引导用户需求时应该注意什么,以防止自己所引导的需求不成为一种 “营销”?

问题三:在未来,人工智能能够帮助我们完成spec之后的开发任务吗?

可能更像一个展望,而不是困惑...

我看到书的 p224 提到,“功能说明书从用户的角度描述软件产品的功能、输入、输出、界面、功能的边界问题、功能的效率(对用户而言)、国际化、本地化、异常情况等,不涉及软件内部的实现细节。”

经过大二时面向对象课程的学习,我意识到功能说明书的作业和那时学的 JML 的作用似乎十分接近。如果有十分完备的 JML 规格设计,剩下的似乎就是比较机械的编码,靠现有的人工智能模型,如chatGPT,似乎就能完成,而且测试也可以做到自动化(JMLUnit)。所以我想,当我们将需求编写成 spec 后交给人工智能,开发任务是不是就可以减轻很多?目前人工智能在软件开发过程中能够发挥多大的作用呢?

问题四:工科研究生所做的到底是什么?

我看到书的 p356 提到:“大众通常把科研和创新等同起来,这也是不准确的...简单地说,科研人员在科研经费的支持下,进行科学研究,拓展人类对自然和社会中万事万物的认识,丰富了人类的知识库,这是金钱->知识。创新人士在掌握了先进的知识之后,运用一系列手段,创造出新的产品,新的服务,在服务社会的同时,获得了金钱的回报,这是知识->金钱。”

经过老师们在课上的讲解,以及与一些研究生的交流,我所了解的是,工科研究生所在做是 “科研”,但本质更像是在 “创新”,比如总要找到一些创新点才能发表一篇不错的论文。工科研究生做“科研”,或是整合一些现有的技术,或是提出新的算法和想法等等,使得做一些事的效率和质量提升,似乎并没有像书中所讲的 “科研” 那样 “拓展认识”。而他们在学术界,知识技术层面所做的贡献似乎也并不能直接转化成金钱。所以我的困惑在于,应该怎么描述工科研究生所在做的事情?

问题五:重大决定由 “猪” 来定夺,真的就合理吗?

我看到书 p400 提到,遵循敏捷原则的团队里有一个原则--重大决定由 “猪” 来定夺。猪指的是全身心投入工程项目的一线开发者。与之相对的是 “围观” 的鹦鹉,同页提到,“在官僚层次驱动的项目中,往往会有一些鹦鹉控制流程的关卡,鹦鹉虽然对项目具体情况不了解、也很忙。但是项目的一些决定非得由他们来做。他们做完决定之后,拍拍翅膀飞走了...”

站在一线程序员的立场,我们很容易与这种说法产生共情。项目与工作者的自身利益息息相关,理应由工作者掌握项目的定夺。然而如果站在某些“鹦鹉”的立场,例如现实中的一些专家顾问和负责任领导,似乎他们的定夺也有优势。鹦鹉虽然并不很关心项目的成败,但这并不妨碍一些负责任的 “鹦鹉” 能够对重大决策提出一些建设性的方针和意见,因为他们拥有更广泛的知识面或是对市场更深刻的认识等等,这些眼界可能是一线工作者所缺乏的。新闻上常报道某大厂裁员的消息,而实情有可能是某个项目已经亏损严重,公司应该取消。但如果由工作者们决定,那么他们很可能为了保住饭碗而不顾公司的利益。所以我的困惑在于,重大决定由 “猪” 来定夺,有时是不是也不那么合理?

...全文
76 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧