鄭州軟件開發(fā)之我們的程序觀
發(fā)布者: 鄭州軟件開發(fā) 10-20
請先看下面的圖示:
機(jī)器代碼 --〉高級(jí)語言實(shí)現(xiàn) --〉結(jié)構(gòu)圖 -〉自然語言
我們很早就認(rèn)識(shí)到,高級(jí)語言是機(jī)器語言的抽象,結(jié)構(gòu)圖是對高級(jí)語言的抽象,而自然語言是對結(jié)構(gòu)圖的抽象.這是很好理解的,也符合我們的思維習(xí)慣.可是倒過來看,逆向思維一下,會(huì)有更驚人的發(fā)現(xiàn).它們不正是我們"做"一個(gè)軟件標(biāo)準(zhǔn)的流程嗎? 鄭州軟件開發(fā)!
可以說,它們表達(dá)的都是同一個(gè)東西,只是抽象的層次不同而已.抽象層次越高,所需要處理的基本抽象思考要素也就越多(它們通常被包含在豐富的語義中). 但是,涉及到的具體實(shí)現(xiàn)細(xì)節(jié)反而越少.一句話,我們的軟件活動(dòng)大都是從高度抽象到底層抽象,這個(gè)演化過程是客觀規(guī)律,隨著軟件工程水平的提高,從此岸 到彼岸的直接跨越就變得非常不合理(以前確實(shí)存在過,不過想想當(dāng)時(shí)的軟工水平吧).
有了從高到低的抽象層次,就需要逐步地象下樓梯一樣一層層往下.然而下的
過程是危險(xiǎn)的,也是值得研究的.什么是這個(gè)過程中最重要的,我覺得是保持一
致性,起碼是概念的一致性.為什么呢?舉個(gè)簡單的例子:
客戶說我要一個(gè)信息系統(tǒng),這是一個(gè)聽起來很簡單的自然語言表達(dá),可是因?yàn)?
過于抽象而讓開發(fā)者無從下手.于是開發(fā)者要和客戶進(jìn)行不斷地溝通,是客戶
的概念能毫無遺漏地傳達(dá)給開發(fā)者(如果客戶很幸運(yùn)有明確的概念的話).遺
憾的是,這個(gè)過程是沒有保障的.當(dāng)客戶的概念大部分(或全部)都已傳達(dá)給開
發(fā)者時(shí),他開始設(shè)計(jì),目的只有一個(gè),實(shí)現(xiàn)那個(gè)概念.設(shè)計(jì)的輸出將作為編碼的
輸入,我們?nèi)匀粺o法保障這個(gè)過程的一致性.可以看到,到此為止,系統(tǒng)中沒有
保障的因素已經(jīng)很多,如果中間存在任何稍大的不一致,就必須重復(fù)進(jìn)行大量
的工作,就好像已從20樓走到2樓,突然發(fā)現(xiàn)忘了穿鞋,還得回到20樓一樣令人
同情.假設(shè)我們已經(jīng)順利地到了2樓(值得慶祝),剩下的工作將容易許多,高級(jí)
語言到機(jī)器代碼的一致性目前已經(jīng)得到很好的保障,這個(gè)成就讓軟件業(yè)的生產(chǎn)
率提高了很多.可是這對我們現(xiàn)今的軟件開發(fā)并沒有實(shí)質(zhì)性的幫助,因?yàn)?
在當(dāng)前整個(gè)軟件開發(fā)周期中,這個(gè)過程只占了少量的精力和時(shí)間(我認(rèn)為接近
于零),沒有一個(gè)高級(jí)語言程序員會(huì)關(guān)注自己代碼的反匯編結(jié)果.類似的還有
開發(fā)工具等相當(dāng)次要的因素.所以,問題仍然很嚴(yán)重.
危機(jī)不可避免地存在著,關(guān)注它們不代表我是悲觀主義者.和所有不能由人類
完全控制卻可以供人類充分研究并利用的自然科學(xué)一樣,軟件工程學(xué)必然有
客觀的規(guī)律.矛盾總是存在的,因?yàn)槟切┮恢滦圆豢赡?00%的滿足(人與人的
交流不可能是無縫的,除非被Clone),但我們可以不斷校正,運(yùn)用合理的方法
學(xué)使之接近理想狀態(tài),即不斷地進(jìn)步.在這方面,中國人又一次落后了,大學(xué)里
教條似的軟件工程學(xué),企業(yè)界對于新技術(shù)的偏執(zhí)和對設(shè)計(jì),管理的忽視,怎么
可能從根本上提高我們極低的軟件水平.而從事理論研究,以科學(xué)的態(tài)度對待
軟件業(yè)的研究人員,又在哪里呢?
不平凡軟件,鄭州軟件開發(fā)公司,鄭州軟件開發(fā),鄭州軟件定制,鄭州微信
開發(fā),鄭州進(jìn)銷存定制開發(fā),鄭州OA系統(tǒng)開發(fā),鄭州軟件開發(fā)公司