大道至简第7、8章读后感
自从学习Java以来已有一个学期,我读周爱民的《大道至简》也已经有半年的时间,这半年内我从这本书中收获了很多作为软件开发人员要有的思想与技能。
作为大的软件公司,不能只是关注与软件的开发工具,更应该完善公司的理论体系和实作工具,为了与行业的巨头相抗争,就该把握住自身拥有的一切力量,这甚至比创造力量来的更快。想要打压对手发展自己,也需要记住,敌人的敌人就是朋友,借助其他对手和同盟的力量来削弱自己的劣势或者补充实力也不失为一种好的方法。
软件工程体系的发展是由两方面推动的,一是软件的本质力量,二就是商业因素的推动。商业因素的推动把软件工程从原始的“自生演进”状态,逐渐推进到“它激发展”的状态上了。虽然它激发展可能会影响到软件工程发展的速度,然而在各个工程层面上的关注点并不会发生变化。从软件工程层状模型中可以看到,在“程序”与“方法”层面,是关注于“(具体的)实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。
虽然说,“软件工程=过程+方法+工具” 。然而工程成功和成本才是的真正关键。这些关键是经理不得不考虑的问题,而作为开发人员,你需要做的是:回到工程最核心的环节,即“软件工程=过程+方法+工具”而方法之中,无论是AOP还是MDA或MDD,这些都是方法论,工具才是语言,千万别弄混。无论是那种方法论,过程模型决定了工程的实施步骤和组织方式,只要深刻地理解了方法论,开发就会变得更加有条理性。
方法、过程、工具是软件工程的三个要素,但是这三者并不是孤立的三个层面,而是相互作用的,就像太极图一样,阴阳交汇,所以我们不应该将这三个要素割裂开来,而是应该回归到软件工程的本体思考问题。RUP就像一个杂物箱,里面的东西都是可以利用的,但是,关键在于你怎么看待一件东西的价值。而语言作为沟通的工具,在开发过程中是非常重要的,简洁易懂的语言可以为开发解决很多问题。虽然说如果你可以理解的话就算是用甲骨文开发也行,但是毕竟软件开发和维护不是你一个人的事情,所以,大家都可以理解的语言才是真正的主流,但是,毕竟语言只是工具,是连接你与计算机之间的桥梁,所以其并没有好坏之分,有的只是适用范围的区别。矛盾是无处不在的,开发中也是如此。实现目标与保障质量之间的矛盾是不可避免的,时间、资源和功能永远是软件开发过程中的矛盾根源,无论在什么时候,这三者都是很难调和的问题。其实软件开发并不是一成不变的死板的工程,有的细枝末节的问题是可以忽略的,灵活的忽略一些不重要的问题,不会影响软件的质量,相反,还会加快开发的速度,为自己赢得更好的机会。
软件工程=过程+方法+工具。