[I.1] 个人作业:阅读和提问

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健)
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问
我在这个课程的目标是 学习软件工程搭建方法,进一步加强协作完成项目能力,最终开发出功能完善的软件
这个作业在哪个具体方面帮助我实现目标 深化对强化对软件全生命周期中需求分析、质量验证的工程化实践认知

一、是否应该由最熟悉的人写单元测试?

第2章中,作者从测试的功能点、方法和参数角度出发,认为“单元测试必须由最熟悉代码的人(程序的作者)来写。代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。”

对于单元测试往往最难的往往不是对代码的了解,反而是数据和相关情况的构造。以我自己的经验来说熟悉反而意味着对用例理解的不充分,就比如自己在之前OO,编译等大作业中出现的bug,很大一部分都是通过他人的帮助,再结合自己的单元测试完成的。个人认为能力不足的情况下更是如此,由一个经验丰富且能力更强的人来帮忙往往效率更高。所以,“没有比作者更合适的人选”似乎太过绝对了。

二、如何确保MVP(最小可行产品)一定得到“最小集”且提高效率?

第5章中,作者介绍了MVP方法,通过“把产品最核心的功能用最小的成本实现出来”,根据用户反馈调整开发策略,“团队会找出最关键、最小的功能集”,进而能快速抓住用户需求。

文章中说是在“人数较多的社交网站上”,在最后说“在了解用户需求时应当使用MBP方法”,但就是在不了解的情况下如何确保参与统计的用户一定是目标用户?举个不恰当的例子,一个影视软件本来可以只有电影、电视剧分区,但是由于最近动画电影的崛起,发现动画界面点击最多,是否又要紧急专门增加一个动画分区?进一步来看,如何设置界面的层次或者粒度以发掘“最小”?核心功能很可能包括在多个不同的界面内,这样得到的集合反而又不是最小,损失了效率。但是设置太多界面会不会又影响用户判断?总之,MVP方法有很多细节问题也许是作者没有提及的。

三、MSF敏捷开发模式中的“充分授权和信任”原则是否与平等协作相矛盾?

第7章中,MSF中”充分授权和信任“原则使得让真正做这件事的人按照自己的估计去完成任务,同时通过”工具”记录各分工进度。作者对其后期状态的理解是,“鼓励团队成员成长,每人都可以在某一时段、某一领域当领导”。

虽然可以通过工具系统的支持统一协调所有成员的进度,但是每个成员的能力区别应该是客观存在的,这就导致一些成员的时间表不可避免影响项目整体进展,并且原本定期定时的交流解决问题被可能长时间的、频繁的“一带多”所取代,可以正常推展进度的成员是否会因为其他成员拉低了团队效率,能力较弱的成员是否又更加依赖其他成员,反而破坏了敏捷性?既然是平等协作,这一状态是否又与“敏捷”本身相违背呢?

四、如何确保“总体模型”对“功能列表”的高效映射?

第10章中,作者提到总体模型转为功能列表时只要求“逐步细化”并体现为符合“<action><result><object>”的三元组,以便“把大的问题领域分解为小的主题领域”。而对于时间长的元组应该继续细化。

单纯“把大问题转为小问题”是否会导致一定的损失?那么在这个转化中如何分解才能保证功能的全面性和有序性?这是作者没有具体展开讲的。此外,时间长的元组一定是冗余的元组吗?反过来同样也存疑。个人认为书中的描述还是基于一个理想化的功能列表,但在实际中,如何处理功能列表中的冗余是一个常见问题,需要具体的优化方法。而这样理想化、无差别的功能列表是否会影响后续业务安排顺序?比如个电子商务平台的核心功能(如支付系统)应优先于次要功能(如用户评价),在这个映射过程中应该有所体现。

五、用户反馈的认知阻力和开发者预期的工作效率如何进行平衡?

第12章中,作者以VI编辑器的例子辅助说明倘若认知阻力大,学习曲线就会比较陡,而通过进一步的转化后可以带来更高的效率。开发者可以通过用户对设计界面的反馈来不断调整设计界面。

但是用户本身的反馈就是片面性的,且用户成分不一样之后工作效率的预期也应该不一样。例如在一定的特殊情况下,老人和小孩的学习成本显然不同,开发者如何能统计且平衡好学习成本和效率收益之间的矛盾?再退一步讲,部分工具的高认知成本可能被边际收益覆盖(如GUI工具逐步优化),是否能带来良好的正面体验需进一步讨论工具选择的经济性模型。

posted @ 2025-03-05 22:20  manhuo  阅读(41)  评论(0)    收藏  举报