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

个人作业:阅读和提问

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健)
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问
我在这个课程的目标是 学习并掌握软件工程方法,与团队成员一起完成一个属于我们自己的软件工程项目。
这个作业在哪个具体方面帮助我实现目标 了解软件工程原理和团队开发技巧

问题1:如何衡量一个可扩展的(或可泛化)的设计是否过早?
P53 过早扩大化/泛化(Premature Generalization):软件的“软”还表现在它可以扩展。在写个程序的时候,需要某个函数可以处理整数类型和字符串类型的信息,有的程序员往往灵光闪现——哎,能不能把类型抽象出来,让这个函数处理所有可能的类型?这样不就一劳永逸了么?有些软件本来是解决一个特定环境下的具体问题,有的程序员一想,我们能不能做一个平台,处理所有类似的问题,这样多好啊!这样的前景的确美妙,程序员的确需要这样的凌云壮志,但是要了解必要性、难度和时机。
通过面向对象课程的学习我们知道,一个好的软件应该有较强的可扩展性来应对未来可能的需求。但是不可否认,过于泛化可能不利于将软件的试用版尽早交付,那么应该如何平衡呢?

问题2:对于本课程的团队作业(规模相较于实际并不算大),采取什么样的团队模式能有更好的效果?
在第五章:团队和流程中介绍了以下窝蜂模式、主治医师模式、明星模式、社区模式、业余剧团模式等团队模式。
根据我的观察,此类团队作业更多为主治医师模式或业余剧团模式,那么其他的一些模式:例如功能团队模式是否会有更好的效果。

问题3:为了用户体验而牺牲产品质量是否舍本逐末,或者说,在多大程度上可以迎合用户的体验?
我看到这段话:20 世纪 90 年代,韦尔奇注意到核磁共振机的通道特别狭窄,在长达几十分钟的检查过程中病人常常有得了幽闭恐惧症的感觉。韦尔奇做过类似的检查,深有体会。他问专家,能不能把通道做得宽一些?专家说那样会降低扫描成像的质量。他又问,对于那些不需要太高精度的检查,能否牺牲一些成像质量,换取用户的良好体验呢?专家说,他们会考虑的……然后就没有下文了。不久,竞争对手推出了宽通道的扫描设备,并夺取了大量的市场份额。CE 被动迎战花了两年时间才赶上对方。
在这个例子中,通过牺牲一些成像质量,换取用户的良好体验,如果牺牲的成像质量在不影响后续诊断的范围内显然是可行的,但过度显然也会造成不良反应。我认为,用户体验固然是影响产品市场的重要因素,但产品质量更是产品的核心竞争力。如果为了用户体验牺牲产品质量,固然能吸引短期客户,但是否有牺牲长期潜在客户的风险?我认为最终应该是在商业价值上取到用户体验和产品质量的平衡。

问题4:在软件开发中“探索式”的测试是否缺乏规范化和可行性?
我看到这段话:“探索式”的测试(Ad hoc Test)就是指为了某一个特定目的而进行的测试,且就这一次,以后一般也不会重复测试。在软件工程的实践中,“Ad hoc”大多是指随机进行的、探索性的测试。
在软件测试时,一些天马行空的思维可能发现了更多的bug,但是这只能证明之前的测试方案的不完备。而且其测试流程是不可重复的、不可自动化,这导致其难以在大型项目中方便实施。根据我的经验,在我为从前写过给稍具规模的程序测试时,随机的、探索式的测试往往不够有效率,而且不能测试到大部分情况,所有只能是在系统测试后的补充。我认为正确的做法是将“探索式”测试中的特殊样例抽象出来,融入到以后的测试计划中。

问题5:在实际的工作中是如何衡量每个人的绩效的?
17.6 绩效管理中提出了各种各样的绩效管理方法,例如完成任务维度、团队贡献维度、用动物来比喻的体系等等。但我认为每种评价方式都不算十全十美,而且不合理的绩效评价会造成员工不满进而影响后续工作。我查找了一些资料,可能会综合考虑以下方面:1. 工作态度 2. 软件质量 (bug的等级和个数,回归次数,重要模块系数) 3. 工作难易度 (功能性,可靠性,易使用性,高效性,可维护性和可移植性,功能点数,复杂度) 4. 工作效率/能力 (完成百分比,工作经验) 5. 主动性 6. 沟通能力 7. 程序规范程度。不过毕竟不能完全代表实际情况,我还是有些疑惑的。

posted @ 2025-03-08 12:18  田培瑄  阅读(11)  评论(0)    收藏  举报