1997/9/3

看軟體開發到物件導向

「你無法使十個女人懷孕一個月而生下一個娃娃」,正代表了世界上有許多許多東西是可以累加的,惟獨時間不行;在資訊業中,一個軟體的開發,往往是很多人共同努力的結果,可是人手多寡並不是軟體開發時間的指標,反之,若是軟體開發到一半時,老闆為趕工,加入一個人幫忙,此時工作的效率反而會因此下降,原因在於新加入的人,必定不了解情況,而須原工作小組中的一人先脫離該工作,指導新人進入狀況,而且新人經指導未必一定進入狀況或全力提供能力,(試想若是別單位的菁英,怎可能輕易借人),所以情況並不如老闆所預期的(n人*m月=nm人月=m人*n月)。

在軟體開發時,因為每個人的思考模式皆不同,程式寫法也迥異,所以從前一個小程式開發的最好效率通常是一個人完成,隨著電腦發展地愈加快速,軟體也愈來愈大,若是只有一個人寫程式,則時效上或許來不及,此時勢必發展出一個個小組,由一群人長時間共同發展同一軟體,培養出默契,自然日後行事簡便許多,所以在近年來,有愈來愈多某某工作室、某某工作坊、某某小組的成立,而在一般電腦公司內,也分著有若干小組,分別解決問題。



慢慢地,逐漸發覺其實就算一組人合作的再久,但彼此仍舊或有出入,碰到大型的系統軟體,其時間延遲則會非常大(一如WindowsNT版延遲了數個月才發行),所以我們就必須尋求另外一個更好的方法了。

有人想到了,如果軟體能像積木一般,每一個單元是固定的,但不同的人、不同的目的,則會產生不同的東西,那麼設計師只要設計單一個單元,則其他人若需要該軟體的功能,只要直接套用即可,這便是沈寂了一段時間的物件導向理論,可是每個人的思考模式不同,所以就有一定的規範:輸入方式(或數值)以及輸出方式(或數值),畢竟我們需要的只是結果,而非過程,好以一台傻瓜相機,我們只要拍出照片,而毋須知道太多理論(事實上也沒有時間或必要去了解),此時,軟體開發就顯得簡單許多,只要在一開始,將個人的工作分配好:誰做軟體畫面、誰做軟體資料處理、誰做系統運算......等,再規劃其要求其使用(啟動)該功能時,輸入值為何?而輸出方式為何?只須將個人部分一一連接(Link)即可,更由於輸出入有規劃,則以後軟體只要有用的上的功能,可直接將該部分取過來連接使用,日後軟體更新版本、加強功能,可針對某方面問題,只修改單元,而不再需要將整個程式“翻”遍了,卻只修改(正)了一小部分;不同的人,有不同的程式寫法:有的注重邏輯性(程式易懂也易除錯)、有的注重速度(例如一些“不合法”的設計技巧,尤其在繪圖軟體上)、有的注重相容性(記憶體衝突、堆疊衝突),不論如何,一個軟體推出後,必有其市場需求,在此需求下,不同的“軟體積木”,正可依照不同需求做不同的組合,所以市面上也會有不同的“變體異形”軟體的出現,一如某某文書軟體之標準版、數理版、學習版、文書版,又如排版系統之網路版、雷射版、噴墨版、PLC版......等皆是,在常見的便是PEⅡ中,依照個人習慣,可組合出不同的功能鍵,甚至上滑鼠,電腦玩家可以自行修改的。

物件導向(OO)理論或許不是最好的,但在現行軟體開發上卻有其存在意義,隨著OO發展,自動化控制理論也有了新的發展,取而代之是模糊控制理論,又是另一個天地。

沒有留言:

張貼留言