開發(fā)手記(3)
發(fā)表時(shí)間:2024-02-16 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]人們常問(wèn):“需求、設(shè)計(jì)、編程、測(cè)試四者究竟哪個(gè)重要?” 這個(gè)問(wèn)題不好回答。四者都是軟件開發(fā)過(guò)程中必不可少的環(huán)節(jié),光做好其中一個(gè)環(huán)節(jié)并不能產(chǎn)生好的系統(tǒng),但是做壞了其中任何一個(gè)環(huán)節(jié),必定對(duì)系統(tǒng)產(chǎn)生壞的影響。若站在風(fēng)險(xiǎn)管理的角度講,也許需求開發(fā)與管理是最重要的環(huán)節(jié)。因?yàn)樾枨笫钱a(chǎn)品的根源,對(duì)產(chǎn)品需求的認(rèn)識(shí)...
人們常問(wèn):“需求、設(shè)計(jì)、編程、測(cè)試四者究竟哪個(gè)重要?” 這個(gè)問(wèn)題不好回答。四者都是軟件開發(fā)過(guò)程中必不可少的環(huán)節(jié),光做好其中一個(gè)環(huán)節(jié)并不能產(chǎn)生好的系統(tǒng),但是做壞了其中任何一個(gè)環(huán)節(jié),必定對(duì)系統(tǒng)產(chǎn)生壞的影響。若站在風(fēng)險(xiǎn)管理的角度講,也許需求開發(fā)與管理是最重要的環(huán)節(jié)。因?yàn)樾枨笫钱a(chǎn)品的根源,對(duì)產(chǎn)品需求的認(rèn)識(shí)是否徹底對(duì)產(chǎn)品的影響最大。就像一條河流,如果源頭被污染了,那么整條河流也就被污染了。慶幸的是我本人既是軟件的開發(fā)者又是這套系統(tǒng)的最終用戶,個(gè)人親身在造價(jià)管理部門、投標(biāo)部門、項(xiàng)目法人結(jié)算部門工作過(guò),對(duì)系統(tǒng)的大部分需求比較了解,這也給需求分析工作減輕了負(fù)擔(dān)。
也許是對(duì)需求的理解過(guò)于自負(fù),因此對(duì)水利設(shè)計(jì)單位的需求調(diào)查深度不夠,導(dǎo)致了目前系統(tǒng)針對(duì)設(shè)計(jì)單位用戶功能的提供存在一個(gè)缺陷,而且是不容易彌補(bǔ)的,這一點(diǎn)的需求與許多模塊相關(guān)聯(lián),牽一發(fā)而動(dòng)全軍。正如Frederick Brooks在他1987年的經(jīng)典文章“No Silver Bullet”中闡述需求的重要性:“開發(fā)軟件系統(tǒng)最困難的部分就是準(zhǔn)確說(shuō)明開發(fā)什么。最困難的概念性工作是編寫出詳細(xì)的需求,包括所有面向用戶、面向機(jī)器和其他軟件系統(tǒng)的接口。此工作一旦有失誤,將會(huì)給系統(tǒng)帶來(lái)極大的損害,并且以后對(duì)他修改也極為困難。” 軟件需求是系統(tǒng)設(shè)計(jì)之源,詳細(xì)的需求分析完成后接下來(lái)的工作便要進(jìn)入系統(tǒng)的設(shè)計(jì)階段。軟件系統(tǒng)設(shè)計(jì)核心內(nèi)容包括:體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、模塊設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)等幾方面。根據(jù)這套軟件的具體開發(fā)情況,系統(tǒng)設(shè)計(jì)準(zhǔn)備了兩套方案:一個(gè)是繼承市場(chǎng)上現(xiàn)有水利造價(jià)軟件的主流設(shè)計(jì)思路,對(duì)其不完善的部分改進(jìn)并加入一些先進(jìn)的設(shè)計(jì)思想。另一種方案是拋棄主流設(shè)計(jì)思路,另辟新徑開發(fā)一個(gè)面目一新的產(chǎn)品。
我對(duì)兩種方案的優(yōu)缺點(diǎn)進(jìn)行了對(duì)比:第一種方案的優(yōu)點(diǎn): 1、 主流水利造價(jià)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的可實(shí)現(xiàn)性具有先例,開發(fā)風(fēng)險(xiǎn)系數(shù)低。 2、 有大量的老用戶習(xí)慣了以前的軟件操作模式,主流的用戶界面和模塊畫分會(huì)給老用戶以熟悉感,用戶不用重新學(xué)習(xí)軟件的使用方法。 3、 可以吸收市場(chǎng)上較成熟的同類軟件的數(shù)據(jù)庫(kù)設(shè)計(jì)思想,縮短了開發(fā)時(shí)間。第二種方案的優(yōu)點(diǎn): 1、 全新模式設(shè)計(jì),可以徹底拋棄現(xiàn)有同類軟件在需求、設(shè)計(jì)方面的不足。 2、 給用戶以全新的感覺(jué),避免用戶產(chǎn)生新軟件是某一款老軟件升級(jí)版的錯(cuò)覺(jué)。 3、 避免了因與某一同類軟件的部分結(jié)構(gòu)相似而產(chǎn)生的版權(quán)糾紛問(wèn)題。我對(duì)兩套方案進(jìn)行了詳細(xì)分析對(duì)比,權(quán)衡利弊決定采用第一個(gè)方案。并運(yùn)用以下方式對(duì)第一套設(shè)計(jì)方案中的不足進(jìn)行彌補(bǔ): 1、 徹底分析市場(chǎng)現(xiàn)有同類軟件的不足,從需求、設(shè)計(jì)方面入手,增強(qiáng)系統(tǒng)的功能與操作的人性化,讓軟件更體貼用戶需要。改進(jìn)計(jì)算與導(dǎo)出模塊的數(shù)據(jù)結(jié)構(gòu)算法,提高系統(tǒng)的整體性能。因水利造價(jià)管理的需求是隨時(shí)代發(fā)展而變化的,預(yù)留軟件接口,提高可擴(kuò)展性。對(duì)部分模塊全新設(shè)計(jì),提高系統(tǒng)的兼容性。 2、 只吸收設(shè)計(jì)思想,不抄襲整個(gè)軟件,盡量避免版權(quán)爭(zhēng)議。 3、 本人在天津水利造價(jià)管理領(lǐng)域有一些人脈,因此軟件設(shè)計(jì)主要吸收天津某單位開發(fā)的一套系統(tǒng)的優(yōu)秀思想。即使將來(lái)產(chǎn)生版權(quán)爭(zhēng)議也容易擺平,再不行還可以合作嗎。根據(jù)《計(jì)算機(jī)軟件保護(hù)條例》第六條的規(guī)定,除計(jì)算機(jī)的程序和文檔外,著作權(quán)法不保護(hù)計(jì)算機(jī)軟件開發(fā)所用的思想、概念、發(fā)現(xiàn)、原理、算法、處理過(guò)程和運(yùn)算方法。也就時(shí)說(shuō),利用以有的上述內(nèi)容開發(fā)軟件,并不構(gòu)成侵權(quán)。因?yàn)殚_發(fā)軟件時(shí)所采用的思想、概念等均屬計(jì)算機(jī)軟件基本理論的范圍,是設(shè)計(jì)開發(fā)軟件不克缺少的理論依據(jù),屬于社會(huì)公有領(lǐng)域,不能為個(gè)人專有。所以市面上的同類型的軟件結(jié)構(gòu)布局、使用方法都有幾分相似,這給用戶的使用也提供了很大的方便。但他們之間肯定是有差異的,各有長(zhǎng)短,一些后者吸收前人的思想并發(fā)展繼承后異軍突起了。因?yàn)橐呀?jīng)完成了系統(tǒng)需求詳細(xì)分析,對(duì)業(yè)務(wù)流程十分熟悉,而這種數(shù)據(jù)處理系統(tǒng)的技術(shù)含量不很高,所以對(duì)市場(chǎng)現(xiàn)有水利造價(jià)軟件的體系結(jié)構(gòu)、用戶界面、模塊劃分的分析相對(duì)容易一些。軟件所依賴的數(shù)據(jù)結(jié)構(gòu)與算法可結(jié)合程序?qū)崿F(xiàn)時(shí)一同考慮。在對(duì)現(xiàn)有軟件的剖析過(guò)程中最讓人頭痛的是數(shù)據(jù)庫(kù)結(jié)構(gòu)的分析過(guò)程。需要搞清每個(gè)庫(kù)的作用,每個(gè)庫(kù)之間的聯(lián)系;庫(kù)中每個(gè)表的作用,他們之間的聯(lián)系;表中的每個(gè)字段的作用,他們之間的聯(lián)系;之后他們所有互相之間的聯(lián)系。我耗時(shí)一個(gè)月對(duì)軟件的6個(gè)庫(kù)、120張表、3000多個(gè)字段進(jìn)行了詳細(xì)的功能及關(guān)系描述,描述文檔約有10萬(wàn)字。算起來(lái)比全新設(shè)計(jì)庫(kù)結(jié)構(gòu)所要耗費(fèi)的精力一點(diǎn)不少,這樣做只是為了增加軟件的成功系數(shù)。至此軟件的分析工作全部完成,接下來(lái)的工作就是要真刀真槍的編碼了。