历经半个月读完这本《大道至简》,这本软件工程实践者的思想介绍让我不仅仅了解的是软件工程,还有一些实践的经验和现实中软件工程的真正意义。其中分为八章:精义、方法、管理、沟通、过程、工程、实践、思想等,每章又分出几个小节,可谓是很详细。它让我了解到软件工程者真正的思想。
编程其实源于生活,愚公移山的例子就如编程。这是编程的精义所在,它确实反映了循环这个实例。愚公移山凿之,而李冰以薪烧之。懒人创造出新的方法,正是因为他懒,所以他会动脑子想出更快的方法:去烧山。事事都讲究方法,学习方法更为有效。人们可以开始分工,有了结构化编程的新方法。我们学习编程不只是把知识一股脑的灌输大脑里,应该将学习的东西分类、归纳,梳理用途‘将常用的拿出来,这也是讲究方法这一用途。
团队的存在是软件工程必不可少的。团队至少以三个人为规模,三人队伍中的领导并不为功绩最高的,而是需要有勇气去承担责任的,这是最基本的素质。我们需要的是更好的明确分工,进度和发展,合理定位团队中的每一个角色。沟通的方式和方法决定着我们的成败,在软件开发的过程中必然存在着沟通交流,有效的沟通可以达到事半功倍的效果。沟通是存在目的性的,而不是仅仅的交流感情。沟通存在于客户与开发团队、项目角色与角色之间,沟通无处不在。用与不用UML在于沟通方式的选择,选择有效、通用的沟通方式是最佳的。
工程不能是“虚有其表耳”而应注重其实实在在的过程。软件工程的成熟是瀑布模型的出现。而过程模型的问题是从实际工程中提炼出来的,亦步亦趋的按照前人提出的模型去做工程并不一定可以成功,我们的过程不是做工程的精义,也不是目的。用好的模型一步一步做出来的过程完美,但又有何用,它不是我们实现工程的目的,做不好工程是必然的。一项工程需要去组织,就如前几章中提到的一样,明确组织各个角色,使得工程有条不紊的进展,这才是完成一个工程的实际所在。我们要去实质的去做过程,失败的过程也是有意义的过程。
语言只是开发的工具,我们不用批评语言的好坏,语言只是我们进行工程的工具,没有笨与不笨之说。正视软件工程,看清楚代码、方法、过程、工程、组织的关系只需要明白“语言只是工具“。才会真真正正的知道工程。从最初的编程,到组织开发,实现目标是软件开发的本质需求。有了需求,才有了模型。模型在实践中不断精进,又产生了不同的模型。模型语言也只是一种工具。软件工程体系,“实现”是软件开发的本质需求和基本动因,推动着软件工程理论体系的形成。
谈论再多的理论也不如实践现实中的软件工程。正如《战国策》中的“王不如远交而进攻,的寸王之寸;尺,王之尺”,现代软件工程中各个大公司的竞争也是如此。大公司在标准、理论、语言上的争夺,未必处于“软件实现”的考虑,他们的目的实在整个软件工程体系中的全面胜出。理想状态下的模式很美好“软件工程=过程+方法+工具”,但现实中我们又不得不考虑一些实际的问题,我们不可能像愚公那样的用笨方法花费个几百年做出一个项目,所以说现实需要用更多的方法去实现项目。应该明白开发的真正需要和方法工具在工程中的实用价值,这样才能发现现实软件工程的真谛。
“此郎亦管中窥豹,实见一斑”告诉我们思考问题不能只看片面,而应观察全面。工具、方法、过程并不是孤立的,实际上他们有着相互作用。在每个环节上它们密不可分。工程的整体问题还是“实现”。在编程过程中我们该如何思考,遇到一个复杂的问题,需要我们的是将复杂的问题简单化,将问题分成几个简单的问题,然后再将问题综合起来考虑,这就是我们在编程中的思想。软件工程是一个灵活的工程,并不像古代的诗经一样,讲究平仄,但是他们的变通是基于音律的;若把这种律解释为规律,那么就适用于软件工程了,死读一本软件工程不会做真正的软件工程。灵活变通,使软件工程真真正正的活起来。
总的来说,这本软件工程实践者的思想告诉我们,一切不能只讲理论,纸上谈兵终究会失败,了解到实践者的工作思想,在实践中活学活用,会使我们终身受益。