软件产品开发流程之五种境界
软件产品设计开发到一定阶段,你就会知道软件产品开发是有多种境界的,根据从事软件产品开发时间长短和技艺情况体会到的软件产品开发境界也是不同的。软件产品设计开发主要的境界是五种,
一、农业境界
柏拉图曾经说过,人的知识犹如一个圆,圆内是你已经知道的,圆外是你还不知道的,圆周就是你已经知道的还没解决的问题。你的知识越丰富,这个圆就越大,圆的周长也越长,也就是你知道的没解决的问题也越多。如果你觉得自己没有啥问题,就说明你很无知。无数年轻人就是凭自己的热情,初生牛犊不怕虎的冲劲,在完全没有经验和章法的情况下,投入了不会取得胜利的第一场战斗。
二、工业境界
了解到软件产品设计研发是一个复杂的系统工程,很多人会尝试运用一些必要的技术把复杂系统分解成简单子系统。在这个阶段,一些软件工程理论开始逐步被吸收。这包括:面向对象的设计思想、UML、RUP、XP编程、设计模式等软件工程理论和工具、组件化系统设计——COM、DCOM、ActiveX、Corba、WebServices等技术开始进入产品设计。
简单地讲,已经知道如何把高楼大厦拆解成多个狗窝,化繁为简;已经懂得遵循软件工业标准开发能重用的系统组件。很多人以为已经到达软件研发的终点,掌握了终极的技术手段。然而,这只是软件产品研发的启蒙阶段,随着发现更多并解决深层次的问题,你需要更有效的理论提升你对软件产品开发的驾驭能力。
三、数学境界
工业化境界提供了化繁为简的技术支撑和思路,但是,好的工具并不能保证出现正确的设计。软件产品设计是否存在从需求到代码的求解公式呢?这是一个已经被研究半个世纪的课题了,可惜国内99%的软件研发人员并不了解这方面的进展。等到洋人的坚船利炮打到你家门口的时候,你才发现人家用这么好的技术武装自己,那就为时太晚了。
在这个阶段,你会用数学方法保障软件系统设计的正确性。你可能会把下面这些理论引入你的设计过程:
引进诸如净室技术、B方法、Z语言等形式化软件工程技术,确保系统设计的正确性。
在系统设计中自觉运行有限状态机、Petri网等数学模型去设计、分析系统结构。
最后你会发现,软件产品设计真正是一件严格科学过程,如果以山野村夫的心态做这件事情,最终必然一塌糊涂。
四、艺术境界
因此,在能熟练驾驭正确设计产品的技能之后,软件产品设计将为艺术而战——我们不是在替客户设计干活的工具,相反,我们是在为他们设计一个吸引眼球的超级玩具,一件艺术品。
五、宗教境界
软件产品设计的最高境界亦是征服客户的心灵,让客户像崇拜上帝一样被您的软件所征服。似乎除了海洛因,能做到这一点的就是宗教了。看看IBM、看看微软、看看Intel、看看苹果,这些超级商业巨人,为了让你把口袋的钱老老实实地掏出来,是不是一个个俨然一副布道者的模样?