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

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健) (北京航空航天大学 - 计算机学院)
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问
我在这个课程的目标是 掌握更多技术,在实践中提升自身能力
这个作业在哪个具体方面帮助我实现目标 掌握更多软件开发的技术,增加软件开发经验

问题一:在资源有限的情况下,如何平衡有限资源与低概率用户复杂需求实现这两者之间的矛盾?

我看了第14章关于吴石头的讨论,团队曾为吴石头这个特定用户设计了很多细化的功能,但最终发现他完全依赖儿子操作,导致所有为他开发的功能被废弃。

在这一情境下,我想到课上老师曾经提到的一个问题:当某些需求出现的概率极低(如百万分之一)时,是否应投入资源实现?

针对这个问题,文档强调“聚焦核心用户”,但未说明如何量化“低概率需求”的取舍标准。例如,百万分之一的概率是否绝对不做?还是存在例外?在课上老师让我们选择自己的选项并找代表回答,我当时的选择是去做,但是一定要把这个告诉用户,让用户知道我们花费很大力气做了这个需求。

但是在这个问题上,也有很多同学选择了其他的选项,也发表了他们的看法:概率过低且成本过高,应专注解决高频问题

所以应该如何决策?若该需求也是类似吴石头这种误差用户导致的,是否仍需实现?如何科学判断一些低概率需求是否有必要实现的边界?

问题二:如何有效减少开发过程中的非开发时间干扰?

在文档14.6.1章中提到我们做开发软件是不能闭门造车,要有大家自由交流的时间。并提出了一些方法和建议减少干扰:

  • 将邮件按来源自动分类(如老板邮件立即处理,团队邮件统一查看),避免频繁打断。
  • 使用邮件规则(如Outlook分类)将非紧急邮件归类到特定文件夹(如“Team”“Check-In”)。
  • 固定处理时间:每隔2-3小时集中处理邮件,而非实时响应。
  • 减少全体会议,鼓励自由交流(如非正式提问和分享)。

但是最近在实习中会遇到一些问题:

经理经常性的给你换任务,对技术不太理解。对需求实现的难度不理解。

文档提到:开发阶段的核心任务是完成功能,但未明确紧急任务的优先级处理机制。如何在自由交流能够实现的基础上还能够保持开发进度。尤其是面对小公司小项目。或是经理对技术难度实现不太熟的情况下。如何平衡“不打断开发时间”与“快速响应”?

问题三:结对编程中驾驶员和领航员的角色如何有效协作?

在第三章中文档结对编程中的角色与如何结对编程这一章节提到有以下分工:
驾驶员:负责直接操作键盘,编写代码和文档。
领航员:负责审查代码、思考整体设计、提出改进建议(如重构、测试覆盖)。
互换规则:每小时轮换角色,避免疲劳并保持思维活跃。

在过往的团队协作经历中,曾参与三人小组合作。由于个人在技术能力、领域知识或实践经验层面与团队其他成员存在一些差距,导致在任务分工中被分配至辅助性、非核心工作模块。

也就是如果驾驶员与领航员技术水平差异较大,如何避免“领航员沦为旁观者”?

问题四:如何在实际学生项目中避免需求分析失真的问题?

在需求分析这一章“如何提出靠谱的项目建议”这一模块。有这样一段文字:
需求可以进一步分析: 这是刚性需求,或辅助性需求?需求的量有多大?需求会一直存在么?很多同学想象力非常丰富,觉得一定会成千上万的用户来使用我想出来的软件。那么可以实践一下,找到10个潜在用户,他们表示“一定会试用你的软件”,那么就算你找到了合适的需求。

在学生项目中,可能会因为社交压力,调研对象多为同学或熟人,用户可能因情面问题虚假支持(如“图书馆管理系统”案例)。导致表面需求与实际行为脱节:用户可能口头表示支持,但实际使用时因操作复杂、缺乏动力而放弃(如校园社交App案例)。

所以目前的疑问就是在实际学生项目中,如何高效且可靠地找到并验证这10个潜在用户的真实需求,避免因用户“礼貌性同意”而导致需求分析失真?

问题五:在应用NABCD模型进行项目规划时,如何有效验证用户的真实需求?

根据文档中关于N(Need)需求的阐述,验证用户真实需求的核心方法包括以下几点:
深入用户调研、区分刚性需求与辅助性需求、量化验证、批判性追问等等

面对动态需求变化(用户需求可能随技术或环境变化而改变)、颠覆性需求的验证难度等,开发者如何通过调研捕捉这类需求?

在NABCD模型中,需求验证是项目成功的基础,但需结合深入调研、量化分析和批判性思维。实际操作中,团队需警惕表面需求,平衡用户反馈与洞察力,并建立动态验证机制。然而,如何才能更好的精准捕捉隐性需求、避免样本偏差呢?

posted @ 2025-03-08 22:54  22373177石通  阅读(16)  评论(0)    收藏  举报