鄧超 20215156
綜述軟體是一系列按照特定順序組織的計算機資料和指令的集合。軟體並不只是包括可以在計算機(這裡的計算機是指廣義的計算機)上執行的電腦程式,與這些電腦程式相關的文件一般也被認為是軟體的一部分。簡單的說軟體就是程式與文件的集合體。
軟體工程是一門研究用工程化方法構建和維護有效、實用的和高質量的軟體的學科。它涉及程式語言、資料庫、軟體開發工具、系統平台、標準、設計模式等多個方面。現代生活中各個行業幾乎都有計算機軟體的應用,由於軟體對傳統方法的替代,。這些應用促進了經濟和社會的發展,也提高了工作效率和生活效率 。
本課程針對軟體工程進行一系列的介紹,主要普及了軟體的工程化理念和實際操作中的各方各面。以下是我在本課程中分點論述的總結。在總結中,我將穿**的工作內容:運營商手機簡訊服務作為引例。
業務建模與分析
乙個工程的構建和開端首先是業務需求。甲方公司在業務側提出明確需求後,將進行系統分析和方案落地操作。
jad會議是業務建模中的一種具體執行方案。它通常指甲方公司在提出業務需求後,與待選乙方公司對接資訊,乙方向甲方提供產品的功能、與甲方需求的重合程度。jad會議一般不涉及經濟成本要素,不考慮**,是乙個相對單純的業務對齊場景。舉例:中國移動根據使用者訴求,計畫對富**訊息做出效能優化,這時有兩家**商:華為、中興參與方案競標,那麼中國移動的產品經理可以考慮組織乙個jad會議,同時參考二者的方案優劣並收集判斷依據。
業務模型圖是使用者希望通過圖表方式來了解系統,流程圖是對系統行為的圖形化表示。舉例:對於運營商手機簡訊服務,那麼甲方公司需要考慮設計完整的系統結構,實現使用者註冊、開戶、收發訊息等業務場景的資訊流路徑。這包含技術層面的可行性構建(如鋪設基站覆蓋)和業務層面的功能設計(如計費場景的解耦設計)。
軟體開發過程
一套軟體系統的開發過程是可以結合多種方法的,這包括非工程化的方法和工程化、系統化的優化方法。對於小型公司或小型專案如小網頁遊戲等,普通的軟體編碼就足以解決問題,但對於大型服務系統,則需要大量人力資源共同實現,這時需要乙個系統化的軟體工程化方法指導完成。
軟體開發過程包含以下需求、設計、編碼、測試、維護階段。
需求階段:產品經理pm提出明確需求;
設計階段:軟體架構師sa、解決方案工程師se著手設計架構;
編碼階段:開發工程師r&de根據設計文件和介面規範編碼,有時也需要自己寫story實現部分方案設計;
測試階段:包括開發自測和測試工程師te的系統性測試,包含功能測試和效能測試;
維護階段:維護工程師me在產品上線後持續觀察維護,進行現網問題糾察、改進,包含一些模組重構過程。
軟體開發模型能清晰、直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體專案工作的基礎。對於不同的軟體系統,可以採用不同的開發方法、使用不同的程式語言以及各種不同技能的人員參與工作、運用不同的管理方法和手段等,以及允許採用不同的軟體工具和不同的軟體工程環境。
軟體開發過程中,通常進行大迴圈的迭代,或者無固定週期的敏捷開發模式,這取決於專案所屬業務的需求,如果業務需求不明確,產品沒有乙個完整的期待效果,敏捷開發能實現貼合業務市場的能力;而傳統的版本開發迭代,能更好維持產品上線的計畫性,確保穩定性過關。
專案管理
專案管理本身是管理學的乙個分支學科 ,對專案管理的定義是:指在專案活動中運用專門的知識、技能、工具和方法,使專案能夠在有限資源限定條件下,實現或超過設定的需求和期望的過程。在軟體工程中,專案管理方法同樣適用。
在乙個軟體專案團隊中,可以利用專案管理工具在專案推進中進行的同步的工作管理。常見的整合工具有microsoft project、jira等,這些被廣泛應用於專案推進流程中的缺陷跟蹤、客戶服務、需求收集、流程審批、任務跟蹤、專案跟蹤和敏捷管理等工作領域。合理利用專案管理工具可以讓工作效率維持高水平。
舉例:乙個開發人員面對現有產品的諸多bug時,需要根據自己工作能力和緊急程度依次解決。這時如何提高團隊的整體開發效率就是乙個值得討論的問題。乙個多人協同的「任務認領系統」,可以讓每個團隊成員認領自己擅長的任務。每個單獨任務的參與者可以在系統中隨時更新進度並共享心得,達到團隊知識整合的效果。
軟體架構設計
軟體架構是一系列相關的抽象模式,它用於指導大型軟體系統各個方面的設計。
對於軟體**的直白的解釋,即是把系統分解為若干部分,用結構圖描述系統整體結構或系統某方面的概況或執行的機制。軟體架構所指的就是相應的系列性的抽象模式,可以為設計大型軟體系統的各個方面提供相應的指導。從本質上來看,軟體架構是屬於一種系統草圖。在軟體架構所描述的物件就是直接的進行系統抽象元件構成。連線系統的各個元件之間就是做到把元件之間所存在的通訊比較明確與相對細緻的實施描述。處於相應的系統實現環節,那麼就會使得細化這些抽象元件成為現實的元件,比如可以是具體的某個類或者是物件。從物件導向領域進行分析,那麼各個元件之前實施的連線實現往往是介面。軟體架構為軟體系統提供了乙個結構、行為和屬性的高階抽象,由構件的描述、構件的相互作用、指導構件整合的模式以及這些模式的約束組成。軟體架構不僅顯示了軟體需求和軟體結構之間的對應關係,而且指定了整個軟體系統的組織和拓撲結構,提供了一些設計決策的基本原理。軟體應用架構特點:行業性術語多,符號表達多樣,依賴實現技術,具有明顯地域文化特徵。
常見的軟體架構設計方法有fdd特徵驅動開發、多檢視、rational 4+1檢視方法、架構設計檢視與領域的關係等。多檢視是指不同利益相關人站在不同角度,思考乙個系統的設計與實現,即觀察、分解系統,得到不同角度的軟體元素,以支援軟體質量目標實現的成本、技術等,尤其是軟體產品的中長期收益,通過技術選型與設計建模來解釋或化解當前與潛在的產品風險。架構設計檢視與領域的關係包括關注產品具體語言實現:通常會直接關注軟體應用框架與相關語言與技術;關注產品在特定行業應用:通常會關注特定產品的組合。如 ibm 架構師,就關注 ibm 產品在特定領域應用結構;關注雲應用開發:通常關注服務的構建、組合、相關平台技術與實現。
舉例:如乙個運營商簡訊服務系統,首先需要把使用者終端(p端)集成為使用多種協議接入的抽象介面,將各種服務提供商(a端)同樣集成為使用某種特定協議接入的模組,中間的模組則按需求分為各種暫存器、業務邏輯系統、資料庫等。將內部分為多個互相基於tcp連線通訊的模組有助於系統的功能解耦,便於維護優化。
參考文獻:
1,強化計算機軟體工程管理應用的策略**,劉靜,《無線互聯科技》,2020-10-25
2,工程專案需求分析方法研究,于洋,《計算機時代》,2021-01-15
3,基於運維監控業務的微服務架構設計模式研究與應用,張亞東,杭州師範大學碩士**,2019-10-01
《軟體工程》課程作業2
在拜讀完quora精選上大牛的一篇文章可供慢慢品味 我得到的一句話 理想很美好,現實很骨感 首先我們要了解什麼是需求分析軟體專案需求說明 業務需求 無論何時何地都可以暢通無阻的較流,是交流更便捷。客戶需求 交流方便 快捷 功能需求 能傳送訊息,及時的接收訊息。可以設定特別關注提示音等讓客戶及時看到訊...
《軟體工程》課程作業三
形式化方法英文的名稱是formal methods。在邏輯科學中是指分析 研究思維形式結構的方法。它把各種具有不同內容的思維形式 主要是命題和推理 加以比較,找出其中各個部分相互聯結的方式,如命題中包含概念彼此間的聯結,推理中則是各個命題之間的聯結,抽取出它們共同的形式結構 再引入表達形式結構的符號...
作業 軟體工程課程總結部落格
軟工作業 思考 關於軟工的一些概念性理解暨第一次閱讀作業 其實呢,以前本身我這塊不存在特別多的直接疑惑,畢竟以前本人有過相當的專案實踐經驗,對有些事情還是相對了解的。既然如此,那在這裡筆者就簡單說下之前的問題在本學期中所面臨的一些真實狀況。這塊的話,我們團隊整體做的還算可以。分工相對明確,大家都有一...