软件基础第二次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc20 |
| 这个作业的目标 | 读《构建之法》并提出自己的三个问题 |
| 姓名-学号 | 洪琦辉 2018330301011 |
一、
我看了这一段文字 :“软件工程的目标:创建一个足够好的软件”——摘自《构建之法》p.15 第1章概论。
有这个问题 :软件的好坏是如何评判的?
根据我的实践,我得到这些经验:在文中,作者说bug的多少直接衡量了软件的开发效率、用户满意度等。我在想,bug的存在就一定会破坏用户满意度吗?比如有一些很经典的游戏设定在最初其实都是bug,但是因为这些bug的趣味性。结果就保留在了游戏里面,后被玩家们所喜爱,使得游戏大火。这样的bug不仅没有降低用户的满意度,反而还帮助力软件的扩散,所以我认为bug的存在严格意义上并不是软件好坏的有力标准。
但是我还是不太懂,我的困惑是:什么是软件好坏的有力标准。
二、
我看了这一段文字:“另一个重要的软件设计原则是开放-封闭原则(Open-Close Principle,OCP):软件实体应该是可以扩展的,同时是不可修改的——《构建之法》p.38 第2章个人技术和流程”
有这个问题 :软件的可扩展性与不可修改性两特性不应该是重复的吗?
我查了资料,有这些说法:“本原则的意思是对扩展是开放的,而对修改是封闭的。因此,开放封闭原则主要体现在扩展开放,意味着有新的需求或变化时,可对现有代码扩展,以适应新的情况;对修改封闭,意味着类一旦设计完成,就可独立完成工作”
根据我的实践,我得到这些经验:软件的扩展是对功能的扩展,是指添加新的代码进去从而满足新的功能,而不可修改性是指在软件完成后形成一个整体,无法再对这个整体进行外界的修改,前者是软件完成前的特性,后者则是软件完成后特性。
三、
我看了这一段文字:”巴克斯顿说技能的反面是”Problem Solving“——”解决问题“——《构建之法》p.57第3章软件工程师的成长“
有这个问题 :技能是一个人掌握的能力,为什么它的反面是解决问题,这不也是一种能力吗?
我查了资料,有这些说法:在这里所说的技能被形象化为一个人对某项能力的掌握程度,即是否精通,精通一项能力到不需要任何外部帮助的情况下就可以独立完成这项能力所对应的事情,展现这方面的能力,则为一项技能。解决问题是在外界的帮助下,以解决(低层次)为目的,无法展现一个人的能力,因此互为反面。
浙公网安备 33010602011771号