非常敬佩邹欣老师对软件工程教育教学的贡献,能够有机会阅读邹老师撰写的《构建之法》,感到十分荣幸。应今年7月北航暑期软件工程培训的要求,需针对该书提出若干问题。由于时间有限,只阅读了部分内容,针对阅读的内容提出以下问题:
针对1.2.4 软件工程的目标,是创造足够好的软件。文中提到,所谓软件工程,就是把软件的bug都消灭掉的过程。Bug的多少可以直接衡量一个软件的开发效率,用户满意度,可靠性和可维护性。个人感觉bug多少不能够直接反映软件的开发效率,更多的是衡量开发的质量,这与文中后面提到的,软件流程的质量小标题相呼应。另外,用户满意度不高,感觉并不是影响用户使用软件的效率,而是影响了用户体验。
针对3.4 技能的反面是解决问题。不知道这部分内容是否是想说明通过解决问题的能力来反应出个人的技能所在的层次?之后讲述技能的层次和教育理论的三个区域相对应,最后通过魔方技能层次的分析为例来讲述对技能层次的辨析,此部分标题用技能的层次是否更适合呢?
针对4.5.4 如何结对编程。文中所述是假设已经选好了结对编程的人员,针对于学生进行结对编程的时候,如何选择合适的伙伴才能使结对编程的体验达到最佳的效果?两个编程水平相差较大的学生来进行结对编程,是否合适呢?还是有其他的建议?
针对5.2 软件团队的模式。文中叙述了多种的团队合作模式,其中主治医师模式有提在学校的软件工程课当中,容易出现一个学生干活,多个学生跟着打酱油,而这种团队模式确实是高校中经常出现的模式,因为学生的能力有限,那么个别好的学生可能充当主治医生的角色,除非存在大量的比较优秀的学生。今年在学生进行团队合作模式完成项目的时候,出现了一种现象,队长对于组员的要求比较高,而3名组员达不到队长的要求,这种情况一段时间后,组员把队长罢免了,队长也不愿意再和组员合作,对于这种现象文中是否能够有一些相关的资料来说明呢?
另外,学生在学校的时候,也可能采用功能团队模式,那么,采用如果这种模式,他们之间没有管理和被管理的关系,那么如何有效的进行团队的组织呢?
针对8.1 软件需求。本章从较高的角度论述了如何进行有效的需求分析,包括详细的软件需求捕获方法,竞争条件下的软件需求分析等。如果本书作为学生学习软件工程的教材,对于如何撰写有效的需求规格说明书是否需要补充一些内容?文中并没有这方面的介绍。