1. 程式人生 > >軟體設計_1_個人總結和一些主要的參考資料

軟體設計_1_個人總結和一些主要的參考資料

個人總結

  • 一.需求分析
    (前面可能還要有市場的調研,從市場和使用者出發的需求才是好的需求,技術要和市場結合)
1.使用者檢視 是該軟體使用者(包括終端使用者和管理使用者)所能看到的頁面樣式,這裡麵包含了很多操作方面的流程和條件。 (也就是前後端的原型)

2.資料詞典 是指明資料邏輯關係並加以整理的東東,完成了資料詞典,資料庫的設計就完成了一半多。

3.使用者操作手冊是指明瞭操作流程的說明書。 
請注意,使用者操作流程和使用者檢視是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程式研發提供了約束和準繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。 
  • 二.軟體概要設計
這幾點引用百度百科
1)結構設計
2)介面設計
3)全域性資料結構設計
4)過程設計
作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是 並不是說詳細設計說明書不重要,事實上快速原型法在完成原型程式碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。 
  • 三.軟性詳細設計
這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把 具體的模組以最’乾淨’的方式(黑箱結構)提供給編碼者,使得系統整體模組化達到最 大;一份好的詳細設計說明書,可以使編碼的複雜性減低到最低,實際上,嚴格的講詳細 設計說明書應當把每個函式的每個引數的定義都精精細細的提供出來,從需求分析到概要 設計到完成詳細設計說明書,一個軟體專案就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行程式碼工作。 那些把作軟體的程式設計師簡單理解為寫程式碼的,就從根子上犯了錯誤了。
  • 四.編碼
在規範化的研發流程中,編碼工作在整個專案流程裡最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提 高,編碼時不同模組之間的進度協調和協作是最需要小心的,也許一個小模組的問題就可能影響了整體進度,讓很多程式設計師因此被迫停下工作等待,這種問題在很多研發過程中都 出現過。
編碼時的相互溝通和應急的解決手段都是相當重要的,對於程式設計師而言,bug永 遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有!

-五.測試

測試有很多種: 
按照測試執行方,可以分為內部測試和外部測試 
按照測試範圍,可以分為模組測試和整體聯調 
按照測試條件,可以分為正常操作情況測試和異常情況測試 
按照測試的輸入範圍,可以分為全覆蓋測試和抽樣測試 
以上都很好理解,不再解釋。 
總之,測試同樣是專案研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。 
完成測試後,完成驗收並完成最後的一些幫助文件,整體專案才算告一段落,當然日後少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,直到這個軟體被徹底淘汰為止。

感覺寫的比較好的一些其他參考:

軟體開發是指一個軟體專案的開發,如市場調查,需求分析,可行性分析,初步設計,詳細設計,形成文件,建立初步模型,編寫詳細程式碼,測試修改,釋出等。 
軟體是怎麼樣開發出來的 

第一個步驟是市場調研,技術和市場要結合才能體現最大價值。 

第二個步驟是需求分析,這個階段需要出三樣東西,使用者檢視,資料詞典和使用者操作手 冊。 
使用者檢視 是該軟體使用者(包括終端使用者和管理使用者)所能看到的頁面樣式,這裡麵包含了很多操作方面的流程和條件。 

資料詞典 是指明資料邏輯關係並加以整理的東東,完成了資料詞典,資料庫的設計就完成了一半多。

使用者操作手冊是指明瞭操作流程的說明書。 
請注意,使用者操作流程和使用者檢視是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程式研發提供了約束和準繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。 
需求分析,除了以上工作,筆者以為作為專案設計者應當完整的做出專案的效能需求說明 書,因為往往效能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。 

第三個步驟是概要設計,將系統功能模組初步劃分,並給出合理的研發流程和資源要求。 
作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是 並不是說詳細設計說明書不重要,事實上快速原型法在完成原型程式碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。 

第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把 具體的模組以最’乾淨’的方式(黑箱結構)提供給編碼者,使得系統整體模組化達到最 大;一份好的詳細設計說明書,可以使編碼的複雜性減低到最低,實際上,嚴格的講詳細 設計說明書應當把每個函式的每個引數的定義都精精細細的提供出來,從需求分析到概要 設計到完成詳細設計說明書,一個軟體專案就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行程式碼工作。 那些把作軟體的程式設計師簡單理解為寫程式碼的,就從根子上犯了錯誤了。 

第五個步驟是編碼,在規範化的研發流程中,編碼工作在整個專案流程裡最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提 高,編碼時不同模組之間的進度協調和協作是最需要小心的,也許一個小模組的問題就可能影響了整體進度,讓很多程式設計師因此被迫停下工作等待,這種問題在很多研發過程中都 出現過。
編碼時的相互溝通和應急的解決手段都是相當重要的,對於程式設計師而言,bug永 遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有! 

第六個步驟是測試 
測試有很多種: 
按照測試執行方,可以分為內部測試和外部測試 
按照測試範圍,可以分為模組測試和整體聯調 
按照測試條件,可以分為正常操作情況測試和異常情況測試 
按照測試的輸入範圍,可以分為全覆蓋測試和抽樣測試 
以上都很好理解,不再解釋。 
總之,測試同樣是專案研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。 
完成測試後,完成驗收並完成最後的一些幫助文件,整體專案才算告一段落,當然日後少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,直到這個軟體被徹底淘汰為止。 


什麼是軟體開發的核心問題 
按照軟體工程鼻祖,《人月神話》作者 Brooks 在“沒有銀彈——軟體工程中的根本和次要問題”一章中闡述的思想,軟體開發的核心問題就是如何從概念上對一個複雜的業務系統進行建模。這個建模是含義廣泛的,不僅僅包括物件建模,還包括資料建模、演算法建模等等一系列的內容。總而言之是要先找到解決複雜問題的突破口(先要搞明白需要做什麼,然後再考慮如何做)。至於採用什麼表示方法(簡單文字、UML 圖、E-R 圖)、採用什麼高階語言、是否一定要用面向物件、使用什麼開發工具都是次要的問題。 


軟體開發方法 
軟體開發方法(Software Development Method)是指軟體開發過程所遵循的辦法和步驟。 
軟體開發活動的目的是有效地得到一些工作產物,也就是一個執行的系統及其支援文件,並且滿足有關的質量要求。軟體開發是一種非常複雜的腦力勞動,所以經常更多討論的是軟體開發方法學,指的是規則、方法和工具的整合,既支援開發,也支援以後的演變過程(交付執行後,系統還會變化,或是為了改錯,或是為了功能的增減)。 
關於組成軟體開發和系統演化的活動有著各種模型(參見軟體生存週期,軟體開發模型,軟體過程),但是典型地都包含了以下的過程或活動:分析、設計、實現、確認(測試驗收)、演化(維護)。 
有些軟體開發方法是專門針對某一開發階段的,屬於區域性性的軟體開發方法。 
特別是軟體開發的實踐表明,在開發的早期階段多做努力,在後來的測試和維護階段就會使費用較大地得以縮減。因此,針對分析和設計階段的軟體開發方法特別受到重視。其它階段的方法,從程式設計發展的初期起就是研究的重點, 
已經發展得比較成熟(參見程式設計,維護過程)。除了分階段的區域性性軟體開發方法之外,還有覆蓋開發全過程的全域性性方法,尤為軟體開發方法學注意的重點。 
對軟體開發方法的一般要求:當提出一種軟體開發方法時,應該考慮許多因素,包括: 
①覆蓋開發全過程,並且便於在各階段間的過渡; 
②便於在開發各階段中有關人員之間的通訊; 
③支援有效的解決問題的 
④支援系統設計和開發的各種不同途徑; 
⑤在開發過程中支援軟體正確性的校驗和驗證; 
⑥便於在系統需求中列入設計、實際和效能的約束; 
⑦支援設計師和其他技術人員的智力勞動; 
⑧在系統的整個生存週期都支援它的演化; 
⑨受自動化工具的支援。此外,在開發的所有階段,有關的軟體產物都應該是可見和可控的;軟體開發方法應該可教學、可轉移,還應該是開放的,即可以容納新的技術、管理方法和新工具,並且與已有的標準相適應。

軟體設計是從軟體需求規格說明書出發,根據需求分析階段確定的功能設計軟體系統的整體結構、劃分功能模組、確定每個模組的實現演算法以及編寫具體的程式碼,形成軟體的具體設計方案。

軟體設計是把許多事物和問題抽象起來,並且抽象它們不同的層次和角度。將問題或事物分解並模組化使得解決問題變得容易,分解的越細模組數量也就越多,它的副作用就是使得設計者考慮更多的模組之間耦合度的情況。

  • 一.需求分析
    • 二.軟體概要設計
這幾點引用百度百科
1)結構設計
2)介面設計
3)全域性資料結構設計
4)過程設計
  • 三.軟性詳細設計
  • -

相關推薦

軟體設計_1_個人總結一些主要參考資料

個人總結 一.需求分析 (前面可能還要有市場的調研,從市場和使用者出發的需求才是好的需求,技術要和市場結合) 1.使用者檢視 是該軟體使用者(包括終端使用者和管理使用者)所能看到的頁面樣式,這裡麵包含了很多操作方面的流程和條件。 (也就是前後端的原型)

第八屆山東省ACM大學生程序設計競賽個人總結

我們 斐波那契 實現 結果 。。 學校 合數 工作 們的 因為省賽,從開學緊張到5月7號。心思也幾乎全放在ACM的訓練上。因為我還是校臺球協會的會長,所以臺協還有一些事情需要忙,但是我都給延遲了。老會長一直在催我辦校賽,但我一直說 等等吧,因為校賽只能在周六

資料結構個人總結程式框架

線性表 順序逆序  單向連結串列 雙向連結串列  迴圈連結串列 靜態連結串列   順序儲存方式 地址計算方法 c語言中陣列從0開始第一個下標 所以知道某一點地址 ai=a1+(i-1)*c 順序儲存結構需要的演算法思路兩個 插入演算法思路 1 插入

java設計模式個人總結(第一篇)

java設計模式可將其分為三種類型:建立型、結構型、行為型。 建立型有:    工廠模式(Factory)單例模式(singleton)Builder模式(生成器模式)原型模式(Prototype) 壹.工廠模式(Factory)(典型案例:製造商品流水)

關於51微控制器定址方式的個人總結困惑點記錄及自答

在學習MCS-51定址方式時,對定址的含義、定址中操作硬體(暫存器、ROM、RAM)又產生了一些新的困惑和理解,先進性如下總結。 在大二學習計算機組成原理時只是粗略的知道CPU中存在暫存器

iOS Block深層次總結一些經典的面試題

上面幾個是之前看書記錄的知識點,可以回顧下,下面用人話概括下自己的理解,方便以後參考,先記住一個概念,Block就是一個物件 OC Block—> C++轉換 1.最普通的轉換 int a = 100; int b = 2

Ubuntu18.04 LTS安裝、配置、美化、常用軟體安裝、問題總結使用體驗

一、前言 2018 年 4 月 24 日,Ubuntu18.04 LTS釋出,它是Ubuntu第七個長期支援版本。以前大學時候玩過ubuntu10.04和ubuntu12.04,還用它們來寫過c語言和java語言程式碼。一轉眼大學畢業多年,很久沒碰Ubuntu

設計模式個人總結,介面隔離原則總結

總結經驗 近期自學Unity引擎,學到了關於設計模式這一塊,以前學習Java多次接觸設計模式,也在應用的開發過程中頻繁使用。雖然開發過程中沒有特意去強調使用設計模式,但設計模式的使用總是潛移默化的,

關於雲大Urp系統的個人分析一些不成熟的看法

0x00 背景   本來這篇文章只對作者可見的,鑑於現在已經對系統進行了更新,12月中旬下旬期間將會正式啟用,所以這篇文章也放出來,當作交流和學習吧。關於雲大Urp系統,我想初入學校參加過選課的同學應該都是比較有印象的。作為一個教務管理系統,在各個方面應該說還

2015全國大學生電子設計競賽個人總結-F題

通過這次參加2015年全國大學生電子設計競賽,我感覺自己提升不少,不僅提升了自己的知識技能,更提升了自己的科研精神。不管結果怎麼樣,這個過程中所積累的財富,將永遠伴隨的我。 雖然比賽只有短短的三天四夜,但是準備這個比賽我們卻是從一年前就開始了,從去年的吉林省電

2017個人總結2018個人展望

每年寫一篇工作總結,不是慣例而是為了時刻提醒自己的不足!工作篇: 一、鐵騎,你在工作上進步了,有目共睹,自己能夠獨立頂一攤任務,這裡要感謝媳婦的理解,父母的理解,岳父母的付出。 二、但是17年的努力已經過去,2018年從頭開始,更要時不我待。咱們這個行業不是養小不養老,而是

軟體開發面試個人總結(有工作經驗)

應該如何自我介紹? 各位面試官好,我叫某某某,2015.7畢業於某某某大學某某某專業。2014年就職於某某某公司,擔任軟體開發,主要負責銀行前端交易和報文的轉化轉發,參與過烏商行的交易前端和中間業務翻寫,後期主要負責攀枝花商業銀行的前端維護和優化。我平時比較喜

個人收集的一些手機研發資料

2012年12月04日 14:02:14 rd211com 閱讀數:4901 個人分類: 手機射頻 手機基帶

伸展樹(SPLAY)個人總結+模板 [平衡樹]【資料結構】【模板】

前言 最近3個月內,無論是現場賽還線上賽中SPLAY出現的概率大的驚人啊啊啊!!! 然而不會的我就GG了,同時發現大家都會SPLAY,,,,然後就學習了一波。 開始怎麼學都學不懂,直到看到一句話 想學好splay,只要把伸展和旋轉操作弄懂,就好

Nginx縮圖Fastdfs整合以及image_filter配置,7點經驗結論5個參考資料

以下是7點經驗結論和5個參考資料1.Nginx單獨配置縮圖與Nginx和Fastdfs模組整合,配置是不一樣的。  非整合模式的配置,類似這樣的:  location ~* /(\d+)\.(jpg)$ {set $h $arg_h;   # 獲取引數h的值set $w $a

黑盒滲透測試的一些姿勢個人總結

前記 對於“滲透測試”這個事,我也時常糾結,尤其在“度”的方面上,畢竟自己還很年輕。個人感覺,滲透是在不影響單位正常運營的前提下的一場完整攻擊,目標是一個面不是一個點。但是,大家都懂得2333。 入坑以來,跟著網上師傅們分享的各種好文章劃來劃去,終於肚子裡有點墨水擠出來了,水了一篇基於隱

軟體設計、DDD概念及落地時的一些零碎思考記錄2

主要是專案中一些落地經驗和記錄 技術人員、開發人員 大部分程式設計師真的不善於溝通,經常會顯得很保守; 他們技術上的困惑、誤解乃至鬱悶都很難直接的表達清楚; 他們對自己的錯誤“印象”很深; 他們內心是希望提高、改進,出自各種目的,也包括為了輕鬆點或者“牛逼”點,這屬於優點; ORM已

angular js一些個人總結小技巧

獲取url中的網路字尾元素 function getParam(paramName) { paramValue = ""; isFound = false; if (this.location.search.indexOf("?")

2018 一些個人面試經驗一些 java 面試筆記

2018 一些個人面試經驗和一些 java 面試筆記 我是2018屆畢業生,在大學快結束(還剩一學期)的時候,準備轉行軟體,就毅然決然辭去了手上的硬體工作,但是這個時候開始轉行確實太難了,我不斷地學習,想用著一學期的時間來把軟體基礎補起來,結果很一般,開始瞭解軟體之後才發現,原來軟體的東