軟件設(shè)計(jì)是將用戶需求轉(zhuǎn)化為某種合適形式的過程,有助于程序員進(jìn)行軟件編碼和實(shí)現(xiàn)。
為評估用戶需求,創(chuàng)建了 SRS(軟件需求規(guī)范)文檔,而對于編碼和實(shí)施,需要在軟件方面有更具體和詳細(xì)地需求。這個(gè)過程的輸出可以直接用于編程語言的實(shí)現(xiàn)。
軟件設(shè)計(jì)是 SDLC(軟件設(shè)計(jì)生命周期)的第一步,它將注意力從問題域轉(zhuǎn)移到解決方案域。它視圖指定如何滿足 SRS 中提到的要求。
軟件設(shè)計(jì)產(chǎn)生三個(gè)層面的結(jié)果:
模塊化是一種將軟件系統(tǒng)劃分為多個(gè)離散且獨(dú)立的模塊的技術(shù),這些模塊有望獨(dú)立執(zhí)行任務(wù)。這些模塊可以作為整個(gè)軟件的基本結(jié)構(gòu)。設(shè)計(jì)人員傾向于設(shè)計(jì)模塊,以便它們可以單獨(dú)和獨(dú)立地執(zhí)行或者編譯。
模塊化設(shè)計(jì)無意中遵循了“分而治之”的問題解決策略的規(guī)則,這是因?yàn)檐浖哪K化設(shè)計(jì)還有許多其他好處。
模塊化的優(yōu)勢:
回到過去,所有軟件都應(yīng)該按順序執(zhí)行。通過順序執(zhí)行,我們的意思是編碼指令將一個(gè)接一個(gè)地執(zhí)行,這意味著在任何給定時(shí)間只有一部分程序被激活。比如說,一個(gè)軟件有多個(gè)模塊,那么在任何時(shí)候執(zhí)行時(shí)只能發(fā)現(xiàn)所有模塊中的一個(gè)是活動的。
在軟件設(shè)計(jì)中,并發(fā)是通過將軟件拆分為多個(gè)獨(dú)立地執(zhí)行單元(如模塊)并并行執(zhí)行來實(shí)現(xiàn)的。換句話說,并發(fā)為軟件提供了并行執(zhí)行多個(gè)代碼部分的能力。
程序員和設(shè)計(jì)師有必要識別那些可以并行執(zhí)行的模塊。
文字處理器中的拼寫檢查功能是一個(gè)軟件模塊,它與文字處理器本身一起運(yùn)行。
當(dāng)一個(gè)軟件程序被模塊化時(shí),它的任務(wù)根據(jù)一些特性被分成幾個(gè)模塊。眾所周知,模塊是為了完成某些任務(wù)而組合在一起的指令集。不過,它們被視為單個(gè)實(shí)體,但可以相互引用以協(xié)同工作。有一些方法可以用衡量模塊設(shè)計(jì)的質(zhì)量以及它們之間的交互。這些措施稱為耦合和內(nèi)聚。
內(nèi)聚力是一種度量,用于定義模塊元素內(nèi)的內(nèi)部依賴性程度。內(nèi)距離越大,程序設(shè)計(jì)就越好。
有七種類型的內(nèi)聚:
耦合是一種定義程序模塊之間相互依賴程度的度量。它告訴模塊在什么級別相互干擾和交互。耦合度越低,程序越好。
有五個(gè)級別的耦合:
理想情況下,沒有耦合被認(rèn)為是最好的。
軟件設(shè)計(jì)過程的輸出是設(shè)計(jì)文檔、偽代碼、詳細(xì)地邏輯圖、流程圖以及所有功能或非功能需求的詳細(xì)描述。
下一階段,即軟件的實(shí)施,取決于上述所有輸出。
在進(jìn)入下一階段之前,有必要驗(yàn)證輸出。任何錯誤發(fā)現(xiàn)越早越好,否則在產(chǎn)品測試之前可能不會被發(fā)現(xiàn)。如果設(shè)計(jì)階段的輸出采用正式的符號形式,則應(yīng)使用其相關(guān)的驗(yàn)證工具,否則可使用徹底的設(shè)計(jì)審查進(jìn)行驗(yàn)證和確認(rèn)。
通過結(jié)構(gòu)化的驗(yàn)證方法,審查者可以發(fā)現(xiàn)由于忽略某些條件而可能導(dǎo)致的缺陷。良好的設(shè)計(jì)審查對于良好的軟件設(shè)計(jì)、準(zhǔn)確性和質(zhì)量非常重要。
更多建議: