為什么要在大連數(shù)據(jù)恢復(fù)軟件開發(fā)維護(hù)這一章討論組件化開發(fā)的話題呢?
我有一個(gè)簡(jiǎn)單的邏輯,軟件維護(hù)是對(duì)軟件系統(tǒng)的改造,只有擴(kuò)展性好的軟件系統(tǒng)才便于改造,組件是擴(kuò)展性最好的程序結(jié)構(gòu)形式。所以,我要討論組件化開發(fā)。
對(duì)于軟件維護(hù)來說,組件化開發(fā)的想法似乎有點(diǎn)過于理想,這要求大連數(shù)據(jù)恢復(fù)軟件開發(fā)人員在軟件維護(hù)階段到來之前(準(zhǔn)確地說,在軟件開發(fā)之初),就必須開始考慮將來的改造問題。這不是一件簡(jiǎn)單的事情,然而,這是一件必須做的事情。
很少有人會(huì)對(duì)將來的事情進(jìn)行有效的預(yù)判:有些人是沒有預(yù)判的意識(shí)(例如,軟件開發(fā)新手);有些人是沒有預(yù)判的能力(例如,大多數(shù)大連數(shù)據(jù)恢復(fù)軟件開發(fā)組織中掌握了話語權(quán)的軟件開發(fā)人員,否則,軟件行業(yè)會(huì)更加光明);有些人是擁有豐富的預(yù)判能力,卻否認(rèn)它的存在(例如,敏捷開發(fā)高手)。
敏捷方法不屑于對(duì)將來的預(yù)判,它提倡“剛剛好的設(shè)計(jì)”思想?!皠倓偤玫脑O(shè)計(jì)”這種說法,很容易讓人產(chǎn)生歧義。這是一種不負(fù)責(zé)任的說法。
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/,軟件的設(shè)計(jì)方向和設(shè)計(jì)的主體結(jié)構(gòu)必須足夠好,換句話說,方向和主體結(jié)構(gòu)至少要保持5年以上的穩(wěn)定,想想Linux、Windows、Eclipse吧。只有在設(shè)計(jì)細(xì)節(jié)上,我們才應(yīng)該考慮大連數(shù)據(jù)日志存儲(chǔ)開發(fā)成本與回報(bào)之間的平衡,可以采用所謂“剛剛好的設(shè)計(jì)”。
要想做到足夠好,就必須進(jìn)行預(yù)判。我們來看一個(gè)故事。
有一家人家做了新房子,但廚房沒有安排好,燒火的土灶煙囪砌得太直,土灶旁邊堆著一大堆柴草。
一天,這家主人請(qǐng)客。有位客人看到主人家廚房的這些情況,就對(duì)主人說:“你家的廚房應(yīng)該整頓一下。”
主人問道:“為什么呢?”
客人說:“你家煙囪砌得太直,柴草放得離火太近。你應(yīng)將煙囪改砌得彎曲一些,柴草也要搬遠(yuǎn)一些,不然的話,容易發(fā)生火災(zāi)。”
主人聽了,笑了笑,不以為然,沒放在心上,不久也就把這事忘到腦后去了。
后來,這家人家果然失了火。左鄰右舍立即趕來,有的澆水,有的撒土,有的搬東西,大家一起奮力撲救,大火終于被撲滅。除了將廚房里的東西燒了一小半外,總算沒釀成大禍。
為了酬謝大家的全力救助,主人殺牛備酒,辦了酒席。席間,主人熱情地請(qǐng)被燒傷的人坐在上席,其余的人也按功勞大小依次入座,唯獨(dú)沒有請(qǐng)那個(gè)建議改修煙囪、搬走柴草的人。
大家高高興興地吃著喝著。忽然有人提醒主人說:“要是當(dāng)初您聽了那位客人的勸告,改建煙囪,搬走柴草,就不會(huì)造成今天的損失,也用不著殺牛買酒來酬謝大家了?,F(xiàn)在,您論功請(qǐng)客,怎么可以忘了那位事先提醒、勸告您的客人呢?難道提出防火的沒有功,只有參加救火的人才算有功嗎?我看哪,您應(yīng)該把那位勸您的客人請(qǐng)來,并請(qǐng)他坐上座才對(duì)呀!”
主人聽了,這才恍然大悟,趕忙把那位客人請(qǐng)來,不但說了許多感激的話,還真的請(qǐng)他坐了上席,眾人也都拍手稱好。
事后,主人新建廚房時(shí),就按那位客人的建議做了,把煙囪砌成彎曲的,柴草也放到安全的地方去了,因?yàn)橐院蟮娜兆舆€長(zhǎng)著呢。
什么事情都要有個(gè)預(yù)見性。如果自己沒意識(shí)到,聽聽別人的建議也是好的,防患于未然總比出了險(xiǎn)情再去補(bǔ)救更為重要。