1. 程式人生 > >軟體開發流程(Software development process)

軟體開發流程(Software development process)

首先 看一下基本軟體專案開發流程圖

其中

複製程式碼
1.需求分析:
  通過對客戶業務的瞭解和與客戶對流程的討論對需求進行基本建模,最終形成需求規格說明書。

2.總體設計:
  通過分析需求資訊,對系統的外部條件及內部業務需求進行抽象建模,最終形成概要設計說明文件。

3.詳細設計:
  此部分在對需求和概要設計的基礎上進行系統的詳細設計(也包含部分程式碼說明)。 

4.開發程式設計:
  對系統進行程式碼編寫。

5.測試分析與系統整合:
  對所有功能模組進行模擬資料測試及其它相關性測試並整合所有模組功能。

6.現場支援:
  系統上線試執行進行現場問題記錄、解答。

7.系統執行支援:
  系統正式推產後,對系統進行必要的維護和BUG修改
複製程式碼

需求分析是怎樣做的?

需求分析是構建軟體系統的一個重要過程。 一般,把需求型別分成三個型別: 

複製程式碼
1、業務需求(business requirement)
  反映了組織機構或客戶對系統、產品高層次的目的要求,它們在專案檢視與範圍文件中予以說明。 
2、使用者需求(user requirement) 
  文件描述了使用者使用產品必須要完成的任務,這在使用例項文件或方案指令碼說明中予以說明。 
3、功能需求(functional requirement)
  定義了開發人員必須實現的軟體功能,使得使用者能完成他們的任務,從而滿足了業務需求。 

複製程式碼
業務需求和使用者需求是軟體需求分析的基礎,也是軟體構建的前提。
系統分析員通過對業務需求和使用者需求的分解,將其轉換成可以形式化描述的軟體功能需求。 開發軟體系統最為困難的部分,就是準確說明開發什麼。這就需要在開發的過程中不斷的與使用者進行交流與探討,使系統更加詳盡,準確到位。這就需要確定使用者是否需要這樣的產品型別以及獲取每個使用者類的需求。   客戶也經常是矛盾的。事實上,很少有客戶能夠明確的知道怎樣的一個系統對自己是最有益處的,他們往往在集中方案之間徘徊,於是經常產生需求的變動。生產廠商經常陷入客戶自己的矛盾之中。
  客戶的負面影響可能對於能夠在預算內按時完成專案產生很大的影響。儘管客戶需要對需求的質量負責任,但是,當一個軟體專案因為客戶事先沒有預料到的情況而導致失敗的時候,即使客戶不會追究開發方的責任,就軟體專案本身而言,也已經是失敗的。
 
總結: 
良好的需求分析是軟體成功的基礎。
在軟體專案整個過程中系統分析員主動進行溝通,提出指導性意見。當軟體融合了客戶和系統分析員雙方智慧,其質量將會進一步得以提高。

軟體開發管理規範流程圖

摘專案管理的根本目的是按時、保質、保量完成預期交付的成果。專案管理要讓整個組織能清楚理解專案實施的目的、影響、進度,應做到專案組所有員工都應理解專案實施的原因、意義及客戶的要求。在專案管理中還能看到公司高層領導通過實際行動表現出來的對於專案實施的支援與幫助,通過以制度化管理來組織合理安排員工的工作職責和角色轉換。為滿足上述要求,就必須讓員工、企業、客戶能接受並適應新的“軟體專案開發管理規範”。

1.啟動階段

  這個階段的工作目的是決定一個專案是否需要啟動。為了達到這個目的,首先要明確專案的總體戰略目標,對專案的需要建立認同。即確定到底需要做什麼、開發什麼產品或提供什麼服務,以及需要解決什麼樣的問題和需要滿足客戶或市場的什麼要求等,同時還要總結專案工作的範圍、所需資源、大約開支、各種風險,以及該專案不執行的其他替代選擇等。這些代表了對整個專案目標從戰略角度和巨集觀層次所進行的分析,通過專案的意向書總結出來,由此確證客戶或專案發起人和贊助者的要求與期望,並幫助他們判定專案是否上馬。專案意向總結書的通過及專案被批准上馬形成了這個專案的起始點。

  • 產品領域研究

  研究產品所在領域的狀況,為專案論證提供依據。研究內容包括:

產品領域的現狀和前景
產品領域的商業模式和業務流程
產品的價值和盈利空間
產品的特性和複雜度
  • 技術可行性研究

  研究產品的實現技術,總結技術可行性。研究內容包括:

類似產品的當前實現技術和技術趨勢
實現技術的候選方案
各個方案的優點、成本和風險
開發團隊與實現技術的匹配情況
  • 專案論證

  基於商業和技術等方面對專案的可行性進行論證,確定專案是否開展。如果開展專案,則進一步論證專案的總體方案。

  論證的內容包括:

複製程式碼
商業可行性
技術可行性
當前產品與類似產品的比較
專案收益和前景
專案的成本和風險
專案的總體方案
複製程式碼
  • 確定專案目標和範圍

  專案開始時,所有相關人員必須對專案的目標和範圍達成共識,形成共同的專案願景。並把願景敘述為《專案開發大綱》向相關人員傳達。

《專案開發大綱》的內容包括:

概 述

用三到五張圖表來描述產品目標、功能、平臺、客戶、進度表和開發職責

高階功能

用一個段落來綜述產品,再用一個段落來描述每個重要的功能

不實現的功能

用一個段落來描述每個對產品有用的但本專案不實現的功能

涉 眾

用一個段落來明確每個重要的涉眾群體和他們的風險股本

專案需求

用一個段落來講述每個重要的專案需求

專案風險

按風險暴露量對每個重要的專案風險都用一個段落來討論

專案回報

用一個段落綜述產品的回報,其後再對每個重要的專案回報都用一個段落來討論

結 論

用一到三個段落將上述所有部分聯絡起來,明確專案的需求和風險,再用論點和論據來總結為什麼這個專案會成功

2.計劃階段

  這個階段的工作是為整個專案做計劃。專案開始後,首先要確定專案的具體範圍,明確定出專案到底要做什麼,總結、歸納並定出產品的功能。然後進一步制定專案的計劃,列出每項具體工作,並建立所有工作任務的重要性及順序;確定每項工作的執行人和所需資源;根據人員的配置和能力設定各項工作和整個專案的完成時間表。

  • 規模、工作量評估

  圍繞各項計劃的制定工作對專案的規模、工作量等進行評估,評估的內容包括:

複製程式碼
模組數量與複雜度
輸入、輸出和對外介面等數量與複雜度
SLOC和功能點
非生產性的支援工作量
開發工作量(人月)
進度與里程碑
進度風險
複製程式碼
  • 定製專案開發計劃

  專案開發計劃體現了專案組對整個開發週期的預期,指定了專案開發的總體方針。與其他計劃一樣,專案開發計劃不是固定不變的,在執行過程中要對計劃進行監控,可能會根據實際情況修改計劃並重新發布。

《專案開發計劃》的內容包括: 

概 述

用三到五張圖表來描述產品目標、功能、平臺、客戶、進度表和開發職責。

(《專案開發計劃》的概述部分應該是《專案開發大綱》中概述部分的拷貝。當專案計劃改變時,修訂《專案開發計劃》的概述部分而不是修訂《專案開發大綱》。這樣,以後在進行專案評價時,通過比較《專案開發大綱》和《專案開發計劃》的概述,就能看出專案是如何改變的)

高階功能

用一到五頁的篇幅來概述產品的功能,其中,要包括這些功能的附加資訊(開發者需要這樣的資訊來了解實現需求)。

專案成員

確定軟體工程職能角色,以及分配到這些角色的人員數量。

軟體過程

概述這個專案中所應用的軟體過程。

(具體內容可在《質量保證計劃》中定義)

軟體工程方法

概述這個專案中所應用的軟體工程方法和技術。

(具體內容可在《質量保證計劃》中定義)

進度和工作量

這一部分要表達出整個專案進度和工作量的估計。其中要包括:

  • 對固定不變的里程碑和同步點的解釋
  • 在評估中的設想情況、評估中的不準確性的可能來源
  • 隨著專案的進展如何更新評估

(具體進度表內容可在《開發進度表》中定義)

風險管理計劃

概述這個專案中風險管理計劃。

(具體內容可在《風險管理計劃》中定義)

測 量

概述這個專案中要收集的測量。

軟體工具

列出要使用的每一項軟體工具,以及該工具所支援的任務。

專案支援

硬體支援 明確所需的硬體,包括那些需要移動、獲取或升級的硬體。

軟體支援 明確所需的軟體,包括需要獲取、安裝或升級的軟體件。

人力支援 由哪個人、部門或團隊為開發組的哪項任務提供支援。

  • 定製風險管理計劃

  風險管理任務包括:風險識別、風險分析、確定風險優先順序、定製風險化解方案、風險化解和風險監控

 《風險管理計劃》定義這些任務的執行流程和人員分配。

  《風險管理計劃》的內容包括:

概 述

用文字和圖表概述風險管理任務的總體執行流程。

風險識別

詳細說明“風險識別”任務的實施細節和各項工作的負責人。

風險分析

詳細說明“風險分析”任務的實施細節和各項工作的負責人。

確定風險優先順序

詳細說明“確定風險優先順序”任務的實施細節和各項工作的負責人。

定製風險化解方案

詳細說明“定製風險處理方案”任務的實施細節和各項工作的負責人。

風險化解

當風險發生時,需要採取相應的措施化解風險。

這部分的內容是描述風險化解工作的操作規範和流程。

風險監控

詳細說明風險監控任務的實施細節和各項工作的負責人。

  風險管理中通常會用到《Top N 風險列表》,風險列表按照風險暴露量排序列出當前專案中主要的N個風險,《Top N 風險列表》的內容包括:

本週排名

本週的排名(如果本週已被完全化解用“---”表示)

上週排名

上週排名(如果是新識別的風險用“---”表示)

上表週數

該風險已上表的週數

風 險

風險的名稱或簡述

類 型

風險型別(只針對進度相關的風險):

  • 計劃編制
  • 組織和管理
  • 設計和實現
  • 客戶和需求
  • 承包商
  • 產品
  • 人員
  • 過程
  • 技術
  • 外部環境
  • 開發環境

發生概率

風險發生的百分比概率

損失程度

風險發生時損失的進度(工作日或工作周)

暴露量

發生概率 X 損失程度

狀 態

風險的當前狀態:未發生、已發生、已化解

化解方案

簡述風險的化解方案,如果有具體的化解方案文件則連結到相應文件

化解進度

對已發生的風險,簡述化解進度(未發生的風險用“---”表示) 

  • 定製質量保證計劃 

  保證工作質量的一個重要步驟是制定一套合理的質量保證計劃並貫徹執行。

  《質量保證計劃》的內容包括:

概 述

說明編寫的目的、適用範圍以及對相關人員的要求等

軟體過程

詳細說明這個專案中所應用的軟體過程。

軟體工程方法

詳細說明這個專案中所應用的軟體工程方法和技術。

工作規範

對工程方法中的各種工作任務進行規範,明確執行的時機、流程和準則等。這些工作任務包括:

常規開發活動

(需求分析、架構設計、詳細設計、編碼和測試、釋出和實施等)

會議

(工作例會、進度會議、審查會議等)

評審

(方案評審、技術評審、質量評審等)

測量

(產品規模測量、進度測量、缺陷率測量、測試覆蓋率測量等)

其他活動

(技能培訓、資料收集、內部流、客戶溝通等)

  • 定製開發進度計劃

  基於當前對專案的規模和工作量評估,定製初步的開發進度表,作為專案開發計劃的組成部分。

  《開發進度表》的內容包括:

複製程式碼
專案的開始和結束時間
專案各個階段的開始和結束時間
每個階段的工作任務及其開始和結束時間
每個工作任務的子任務的及其開始和結束時間
里程碑和同步點
角色的定義和任務分配
複製程式碼

   作為跟蹤專案進度的重要依據,進度表在專案推進過程中需要不斷細化。另外,當實際進度與計劃進度出現偏差時,需要修改進度表並重新發布。

相關推薦

軟體開發流程Software development process

首先 看一下基本軟體專案開發流程圖其中1.需求分析:   通過對客戶業務的瞭解和與客戶對流程的討論對需求進行基本建模,最終形成需求規格說明書。 2.總體設計:   通過分析需求資訊,對系統的外部條件及內部業務需求進行抽象建模,最終形成概要設計說明文件。 3.詳細設計:  

軟體開發流程轉載

概述 我們集中討論如何通過使用兩個流行的方法得到過程的恰當級別:Rational Unified Process 或簡稱 RUP 以及極限程式設計(XP)。我們展示如何在小型專案中使用 RUP 以及 RUP 如何處理 XP 沒有涉及到的領域。二者融合為專案團隊提供了所需的指南--減少風險同時完成交付軟體產品

軟體開發流程轉載(介紹迭代的)

1. 傳統開發流程的問題  傳統的 軟體開發流程是一個文件驅動的流程,它將整個軟體開發過程劃分為順序相接的幾個階段,每個階段都必需完成全部規定的任務(文件)後才能夠進入下一個階段。 如必須完成全部的系統需求規格說明書之後才能夠進入概要設計階段,編碼必需在系統設計完成之後才能夠進行。這就意味著只有當所有的系統

Vivado 開發流程手把手教學例項FPGA

新建工程開啟Vivado軟體,直接在歡迎介面點選Create New Project,或在開始選單中選擇File - New Project即可新建工程。 點選Next 輸入工程名稱和路徑。 選擇RTL Project,勾選Do not specify......(這樣可以

【筆記】軟體質量保證Software Quality Assurance複習筆記

困。 參考自csf的部落格 課堂提問 軟體質量涉及哪些維度?根據你的經歷,你認為哪個維度最重要?為什麼? Functionality功能性, Supportability可支援性, Usability易用性, Reliability可靠性, Performance效能.

android即時通訊軟體開發教程asmack+openfire+spark

      本人這陣子因為需求的原因,需要做一個android即時通訊軟體,所以接下來分享我這陣子的開發心得。       這一章主要是搭建android通訊軟體的伺服器環境,並且體驗自己開發的通訊軟體的聊天功能。       首先,要了解開發所用的東西asmack+ope

微信官方文件微信支付開發流程公眾號支付

首先我們到微信支付的官方文件的開發步驟部分檢視一下需要的設定。因為微信支付需要較高的許可權,只有認證了得服務號才有使用微信支付介面的許可權,我們個人很難申請到,所以需要向其他朋友借用賬號。來到文件的業務流程部分,檢視微信支付的流程(我覺得這個還是需要十分仔細的瞭解和檢視的

軟體開發標準文件模板

操作手冊(GB8567——88)1引言1.1編寫目的說明編寫這份操作手冊的目的,指出預期的讀者。1.2前景說明:a.  這份操作手冊所描述的軟體系統的名稱;b.  該軟體專案的任務提出者、開發者、使用者(或首批使用者)及安裝該軟體的計算中心。1.3定義列出本檔案中用到的專門術

軟體開發流程

一、開發流程圖 二、過程產物及要求 本表主要列出開發階段需要輸出的過程產物,包括產物名稱、成果描述、負責人及備註,即誰、在什麼時間、應該提供什麼內容、提供內容的基本方向和形式是什麼。 專案啟動階段 產物名稱成果描述負責人 調研文件瞭解專案背景,瞭解專案干係人目標方向產品經理

軟體開發流程--瀑布模型Waterfall Model

軟體交付準備    在軟體測試證明軟體達到要求後,軟體開發者應向用戶提交開發的目標安裝程式、資料庫的資料字典、《使用者安裝手冊》、《使用者使用指南》、需求報告、設計報告、測試報告等雙方合同約定的產物。   《使用者安裝手冊》應詳細介紹安裝軟體對執行環境的要求、安裝軟體的定義和內容、在客戶端、伺服器端及中介軟體

智慧家居專案1軟體開發流程

結合公司開發過的產品以及對自學知識的總結,整理出此係列文章  。側重點還是在軟體部分。 公司開發某個專案,肯定是為了盈利賺錢。開發的專案無非就是自己的產品或者承接甲方的開發任務。 大體的流程可以分為幾個部分或階段:                          

vue項目開發流程

訪問 running you 命令 http nbsp div spa new vue的環境配置好之後,讓項目運行起來,一般是localhost:8080,如果是移動端,想在手機上查看效果,可以用電腦ip連接訪問 1.打開控制臺查看本機ip,輸入命令:ipconfig

weexapp 開發流程其他頁面創建

導航 引入 組件 創建 exp 輪播圖 slider 分享圖片 -c 1.首頁 (1)輪播圖 步驟一:創建 輪播圖 組件(Slider.vue) src / assets / components / Slider.vue <!-- 輪播圖 組件 --> &l

嵌入式產品開發流程轉自網絡

需求 分享 是什麽 進入 這就是 一個 排除 提前 交換機 嵌入式產品,與普通電子產品一樣,開發過程都需要遵循一些基本的流程,都是一個從需求分析到總體設計,詳細設計到最後產品完成的過程。但是,與普通電子產品相比,嵌入式產品的開發流程又有其特殊之處。它包含嵌入式軟件和嵌入式硬

安全開發流程SDL學習概述

1.簡介 SDL的全稱是Security Development Lifecycle,即:安全開發生命週期。由微軟最早提出,是一種專注於軟體開發的安全保障流程。為實現保護終端使用者為目標,它在軟體開發流程的各個階段引入安全和隱私問題。 2.流程 SDL大致如下,包括了以下七個階段:

什麼是JDK?關於JDKJava Development KitJava開發工具包的介紹

什麼是JDK?關於JDK(Java Development Kit)Java開發工具包的介紹 JDK是構建Java應用程式的關鍵平臺部分,JDK的核心是Java編譯器。 JDK是Java程式設計三個核心技術包之一,另外兩個是JVM(Java Virtual Machine)Java虛擬機器和

軟體磁碟陣列software raid

一、基本概念 1.磁碟陣列RAID,即容錯廉價磁碟陣列,RAID可以通過一些技術將多個較小的磁碟整合成一個較大的磁碟裝置,並把資料切割成多個區段後分別存放在各個不同的物理硬碟裝置上,然後利用分散讀寫技術來提升磁碟陣列整體的效能,同時把多個重要資料的副本同步到不同的物理硬碟裝置上 2.RAID

設計模式之軟體開發原則1開閉原則和依賴倒置原則

開閉原則 定義 所謂開閉原則就是一個軟體實體如類、模組和函式應該對擴充套件開放、對修改關閉。 強呼叫抽象構建框架,實現實現拓展細節。 有優點是提高軟體的複用性和易維護展性。是面向物件的最基本原則。 依賴倒置原則 定義 高層模組不應該依賴底層模組,二者都應該依賴其抽象。 抽象不應該依賴細節:細節應該

java開發流程手動建立和執行流程

JDK : java 開發工具和環境 javac 命令 作用是把原始檔(.java)編譯(翻譯)成位元組碼檔案(.class) java 命令 作用是執行一個java程式 開發java程式的步驟(手動建立) :

gitlab開發流程針對gitlab已有倉庫

** github上面有倉庫xxxx: ** 開發步驟: 1、新建資料夾,在資料夾裡面,開啟Git,執行克隆操作 git clone xxxxx(這裡輸入分支連結地址,一般在gitlab上面可以直接複製) 2、根據需求建立分支 git checkout -b xxxx 這樣會自動