阅读《构建之法(第三版)》提问

20373358肖圣鹏 2023-02-25 16:36:43
项目内容
这个作业属于哪个课程课程社区
这个作业的要求在哪里作业要求
我在这个课程的目标是学习软件工程
这个作业在哪个具体方面帮助我实现目标了解软件工程主要内容

问题1:如何更好地对大型机器学习程序进行单元测试?

  • 类型:不能回答的问题。
  • 问题内容:在读到第二章关于构建单元测试时,书中提到如果模块的测试不依赖其它模块,则可人为构造数据保持测试的独立性,否则也可以与其它模块共同测试。但还有一种情况没有具体说明——在机器学习程序中,许多模块的输入输出结果是不被显式地指定的。例如,用一个可训练的矩阵变换 一个向量,由于这个矩阵的元素是通过拟合训练数据得来的,我们无法直接构建成对的输入向量和输出向量,再退一步讲,即使我们得知了训练数据的分布,我们也不能断言输出向量的具体值。因此,大型机器学习项目的单元测试是需要深入研究的。
  • 我当前的答案与问题:目前我一般会对输入输出变量的维度进行验证,并且可以排除大量问题。但是仍有一些问题存在,例如,在不同的第三方矩阵库里,矩阵的行列有不同的表示顺序,导致有时我会不小心把某个方阵误写成它的转置,而这个问题仅仅通过测试维度是无法发现的。

问题2:什么是合适的优化时间?

  • 类型:不能回答的问题。
  • 问题内容:在读到第二章关于软件工程师的思维误区时,书中提到了不应该过早扩大化、泛化,但是在现实开发中,把我合适的时机十分困难:比如,第一版快速地完成了必要的需求,但第二版需要较多修改,导致虽然第一版开发更快,但总的开发时间较直接实现第二版功能更长。
  • 我当前的答案与问题:使用第一种方式开发,往往导致最终版本实现的功能较少;使用第二种方式开发,实现的功能更多,但经常面临在ddl前完成的问题。

问题3:在工作时间不固定的情况下,如何更好地结对编程?

  • 类型:不能回答的问题。
  • 问题内容:第4.5.4节——如何结对编程中提到,如果团队中的成员要在多个项目中工作,以致于队友要经常处于等待时间,那么是不适合结对编程的。而学生由于不同的课程选择和项目参与,正处于这种情况之中,该如何解决这种问题呢?
  • 我当前的答案与问题:无。

问题4:如何使用软件来自动化管理团队开发流程?

  • 类型:不能回答的问题。
  • 问题内容:第5.3节为我们介绍了许多经典的开发流程,既然开发流程有如此具体的模型,那么可否直接使用专业的软件进行自动化管理?当前市场上是否有比Apifox等接口管理软件功能更高级的软件。

问题5:什么时候适合选择敏捷开发?

  • 类型:不能回答的问题。
  • 问题内容:敏捷编程,除了需要合适的开发流程之外,也需要程序员付出更多的精力,对于管理者来说,也需要支付更多的薪水。那么,什么时候敏捷开发是必须的呢?
  • 我当前的答案与问题:在创业公司需要快速抢占市场时,敏捷一定是必须的。但目前市场一些大公司的软件经常频繁迭代不必要的功能——如“摇一摇”广告等,滥用敏捷开发是否会影响市场秩序呢?
...全文
301 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoftwareTeacher 2023-02-28
  • 打赏
  • 举报
回复

目前市场一些大公司的软件经常频繁迭代不必要的功能——如“摇一摇”广告等,滥用敏捷开发是否会影响市场秩序呢?


一些质量不高的功能, 并不一定是用 ‘敏捷’ 的方式开发出来的。 例如,敏捷的开发流程鼓励 “尽早和客户交流”, “客户合作高于合同谈判” ,如果遵循这样的方法, 你觉得会有低质量的功能开发出来么?

78

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航敏捷软件工程,主讲教师罗杰、任健。
软件工程 高校
社区管理员
  • clotho67
  • neumy
  • BrownSearch
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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