重溫軟體工程 對軟體工程的初步了解

2022-02-13 11:45:33 字數 4105 閱讀 7762

第一部分:軟體工程的概述

一 軟體=程式+軟體工程

在看到這個公式時,我想大家也很容易理解這個,乙個軟體的實現都離不開程式的支援,程式是軟體的「血肉」,那麼僅僅有程式就可以了嗎?答案是否定的,因為乙個優秀的軟體,離不開好的架構和設計方案,更離不開團隊的共同協作,,,,,,,那這一系列的實現,一定需要相關的方法,而這些方法和思想,正是我們軟體工程所要研究的部分,這就是我們軟體」骨架「。

接下來,給大家舉乙個簡單的例子:現在我們是一名建築設計師,要建設北京的鳥巢體育場,目前所需的建築材料和工人都已經到位,那麼現在我們要做的就是如何通過系統的,有序的,可量化的方式方法把這些元素有機的組合到一塊,形成乙個建築,這個鳥巢不僅堅固而且還美麗漂亮.。那麼我想軟體工程就是把需求分析,設計,寫碼,維護等一系列過程有機的組合到一塊,從而形成乙個使用者認可的軟體(這個使用者認可可能沒有乙個統一的標準),那麼這就是軟體工程所要做的。

我們先補充點基礎知識,重點介紹一下程式這個概念:先看一下官方定義:程式(program)是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。為實現預期目的而進行操作的一系列語句和指令。程式,在這裡指的是源程式,就是一行一行的**。仔細看過去,它們的確是建立在資料結構上的一些演算法。(程式=資料結構+演算法)但是光有**還是不行的,這些一行一行的**不會自己執行,得有人編譯成機器能懂的目標**,而編譯不僅僅是 cc 和 link 命令,對於乙個複雜的軟體,我們不但要有合理的軟體架構(software architecture),軟體設計和實現 (software design & implementation), 我們還要用各種檔案來描述各個程式檔案之間的依賴關係,編譯引數,鏈結引數,等等。這些都是軟體的構建。

在軟體的開發過程的當中,我們的**不可能是一成不變的,對**進各方面的改動,有時候需要更改程式的配置,這些過程是對源**的管理,我們稱之為配置管理,我們還有一系列的工具和程式來保證程式的正確性,這些工具和程式本身應該更正確,才能保證別的軟體的質量,這就是質量保證, 具體的驗證過程叫軟體測試.,同時,我們的軟體時有一定目的性的,在做軟體之前,我們需要對軟體進行相關的需求分析,把相關的可行性要求列舉出來,為以後的工作做好準備,接下來就是軟體的設計編碼的實現,測試,到最後的軟體交付,後來,我們也可能對軟體進行相關的測試後期維護

軟體生命週期(sdlc,systems development life cycle,sdlc):是軟體的從產生直到報廢或停止使用的生命週期(上面敘述的一系列過程)週期內有問題定義、可行性分析、總體描述、系統設計、編碼、除錯和測試、驗收與執行、維護公升級到廢棄等階段,這種按時間分程的思想方法是軟體工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文件以供交流或備查,以提高軟體的質量。

所以,上面講解的所有的內容就是為了推導:

軟體=程式+軟體工程

從而得到乙個擴充套件的推論是:

軟體企業=軟體+商業模式

程式是所有內容進行的基礎,軟體工程決定了軟體的質量和使用週期,商業模式決定乙個軟體企業的成敗

二 軟體工程是什麼?

(一)軟體工程的定義;

(1)概念:軟體工程是把系統的, 有序的, 可量化的方法應用到軟體的開發, 運營, 和維護上的過程。

2) 軟體工程包括下列領域:軟體需求分析,  軟體設計,  軟體構建,  軟體測試,  和軟體維護.

(3)加深理解:我們在開發,運營, 維護軟體的過程中有很多技術, 做法, 習慣, 和思想體系。 軟體工程把這些相關的技術和過程統一到乙個體系中, 叫 「軟體開發流程」,軟體開發流程的目的是為了提高軟體開發, 運營, 維護的效率;以及使用者滿意度, 可靠性,和軟體的可維護性。

(二)軟體工程的特點:

(1)複雜性:

軟體可以說是人類創造的最複雜的系統,大型的軟體系統有著超過數百萬的**,同時,軟體的各個模板之間有著各種各樣的依賴關係,隨著系統的成長和模組的增多,這些關係的數量的增長速度也會是很快的,隨意複雜性也可想而知。

(2)不可見性:

軟體**的執行方式是以機器**的形式運轉的,我們看到的源**並不等於軟體本身,軟體的最終執行形式我們是看不到的,一單出現錯誤(**量大的情況下),我們無法準確的重現程式到底出現什麼問題,這個不可見性也是很可怕的。

(3)易變性:

客戶的需求不可能是一成不變的,隨著使用者需求的變化,軟體的可變性也隨之增加,有時候修改軟體的改變部分是很困難的。

(4)服從性:

軟體開發的目的是為人們服務,它需要一定的硬體需要,同時也要符合使用者的需求,這一些的服從性也是非常重要的一部分

(5)非連續性;

人們很容易理解連續性,增加輸入,就能看到相應的輸出增加,但是許多軟體系統卻沒有這樣的特性,有時候輸入很小的變化,會引起輸出極大的變化

(三)軟體工程的目標:

(1)研發符合使用者需求的軟體

(2)通過一定的軟體流程,在預計的時間內發布「足夠好」的軟體

(3)通過資料和其他方式展現所開發的軟體時可維護和繼續發展的

注意:

評判是否足夠好的標準:

a:使用者的滿意度:bug少,符合使用者的需求,軟體的效率高

b:可靠性:軟體的執行效能良好,安全性高

d:可維護性:軟體期初的架構有問題,導致軟體的維護難度增大,對軟體的整個生命週期也會造成相應的影響。

第二部分:個人開發流程

軟體開發的過程中,團隊的開發是不可避免的一種表現形式,但是團隊的發展,離不開個人的努力,然而,個人的開發也需要一定的開發流程來提高我們的而開發效率和產品的質量,接下來我們看一下個人開發的具體開發流程

(一)具體操作流程圖:

(二)psp的特點:

• 不侷限於某一種軟體技術 (如程式語言),  而是著眼於軟體開發的流程,  這樣不同應用的工程師可以互相比較。

• 不依賴於考試, 而主要靠工程師自己收集資料, 然後統計提高。

• 在小型,初創的團隊中,  高質量的專案需求很難找到,這意味著給程式設計師的輸入質量不高,在這種情況下,  程式設計師的輸出 (程式/軟體) 往往質量不高, 然而這並不能全部由程式設計師負責。

• psp 依賴於資料

• 需要工程師輸入資料, 記錄工程師的各項活動, 這本身就需要不小的代價。

• 如果資料不準確或有遺失, 怎麼辦?  讓工程師編造一些?

• 如果一些資料不利於工程師本人 (例如: 花很多時間修改缺陷), 我們怎麼能保證工程師能如實地記錄這些資料呢?

• psp的目的是記錄工程師如何實現需求的效率,  而不是記錄顧客對產品的滿意度。工程師可能很高效地開發出乙個顧客不喜歡的軟體, 那這個工程師還是乙個優秀的工程師麼?

軟體工程初步

軟體的開發,多功能模組的組合,因為底層的各種 模組是面向過程的,我們需要在足夠高維的層次才能做到讓人理解,畢竟現代的傻瓜式操作才能做到符合人類習慣的思維習慣,一般情況人們只需要理解輸入和輸出的相關性,其中的具體實現可以視為一種黑箱,是專業人員思考的範疇。因而我們需要在抽象的層次不斷公升維,從面向過程...

軟體工程 軟體工程概述

一.軟體 定義 計算機系統中的程式及其文件 程式 計算任務的處理物件和處理規則的描述 文件 為了便於了解程式所需的闡明性資料 特點 軟體的種類 按功能劃分 系統軟體 支援軟體 應用軟體 二.軟體工程的起源和概念 早期電腦程式 現在人們認為 在資訊產業中,微電子是基礎,計算機和網路是載體,軟體是核心 ...

軟體工程 初步介紹

實現乙個課程管理網頁,功能還未完全確定,將會涵蓋課程管理,作業提交,助教問答,老師評測,學生聊天,知識點更新等板塊,待定日後根據情況可能會有所變動。成員1 姓名 王航 學號 pb15061410 系別 6系 成員2 姓名 譚超鴻 學號 pb15061385 系別 6系 成員3 姓名 秦世傑 學號 p...