1. 程式人生 > >《高階軟體工程》學習總結

《高階軟體工程》學習總結

1.課程總結

《高階軟體工程》這門課程在軟體學院非常搶手,在選課開始的時候我特地去了網咖等待選課系統開放並在第一時間選了這門課程,所以才能有幸跟著孟寧老師學習這門課程。在此之前,我對軟體工程的理解非常淺顯,甚至並不具備基本的軟體工程的思想,遇到課程設計或者是畢業設計,我的主要想法是如何實現程式碼的書寫,很少關注軟體工程的具體應用,但是隨著學習的深入,越來越發現軟體工程的思想會成為今後發展的瓶頸,於是我認真的學習《高階軟體工程》這門課程,感覺收穫頗豐。課上的講解很精彩,網易雲課堂的線上課堂和線上程式題目都非常有價值,多種學習方式並行,能夠相輔相成,進一步強化學習效果。

    軟體工程(SoftwareEngineering,簡稱為

SE)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它涉及到程式設計語言,資料庫,軟體開發工具,系統平臺,標準,設計模式等方面。隨著軟體行業的飛速發展,軟件複雜性在飛速增長,隨之出現了一系列的問題,比如說:軟體成本極高、開發週期長、維護工作量大等。軟體工程研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。它涉及到程式設計語言、資料庫、軟體開發工具、系統平臺、標準、設計模式等方面。

2.實驗總結

在本次學習中,網易雲課堂的加入是一個非常非常好的舉措,所以我會特地對整個網易雲課堂的學習過程以每次試驗為單位做一個總結。

先將所有的實驗做成目錄,再對每個部分的實驗進行總結。

2.1實驗列表

實驗六:函式的可重入性(reentrant)及執行緒安全

上面列出了網易雲課堂上所有實驗的列表,由於每一部分都涉及到不同的軟體工程相關的只是的應用,所以在接下來的部分對各個實驗的內容和只是進行簡要的分析,如果需要更詳細的示例,可以在超連結中點開實驗報告進行檢視。

2.2實驗詳解

關鍵詞:linux環境、程式碼庫管理

 實驗一的內容非常簡單,只是實現一個簡單的hello world程式,但是在第一次試驗中使用了linux程式設計環境,linux基本命令對於今後的學習會有很大的幫助,從小程式入手,才能逐步的過渡到大的軟體工程專案,而且讓我們學會使用程式碼庫來管理程式碼,對於今後的維護和管理很有幫助。

關鍵詞:程式碼規範性、程式碼編排風格

    本次試驗通過一個簡單的命令列選單小程式來引導我們保持程式碼書寫的規範性,遵守簡明、易讀、無二義性程式碼風格注意書寫程式碼時候的縮排、命名、註釋等程式碼編排的風格規範。

關鍵詞:內部模組化

實驗三是在實驗二的基礎上進一步的改進,在這一部分,主要強調的內容是注意程式碼的業務邏輯和資料儲存之間的分離,即將系統抽象為兩個層級:選單業務邏輯,和選單資料儲存,使用不同的原始檔實現,所以會有2.c和一個.h作為介面檔案。這部分很關注程式碼設計規範的方法中的內部模組化的方法,內部模組化的方法在軟體開發中是利器,使得程式的整個結構體系更加的清晰,便於程式碼的閱讀和後期的功能補充,而且在整個過程中簡化了程式設計師對於程式碼的理解過程,所以在後續的程式開發中要尤其注重在這方面的提高。

關鍵詞:可重用連結串列、介面設計

 實驗四仍然是在上一個實驗的基礎上進一步改進,在實驗四中,要求使用用可重用的連結串列模組來實現命令列選單小程式,執行某個命令時呼叫一個特定的函式作為執行動作,連結串列模組能夠簡化對於命令列選單小程式的功能呼叫,如果在遇到較大規模的軟體,可重用連結串列模組能夠使得整體結構更加清晰。

關鍵詞:callback回撥、資料隱藏

 實驗五是在實驗四的基礎上進一步進行改進,在這一部分,是為了學習callback函式,它是一種實現模組通用性的實現機制,能夠實現模組解耦功能,

利用callback函式引數使Linktable的查詢介面更加通用,同時我們也必須要注意介面的資訊隱藏

實驗六:函式的可重入性(reentrant)及執行緒安全

關鍵詞:函式可重入性、執行緒安全

 可重入(reentrant)函式可以由多於一個任務併發使用,而不必擔心資料錯誤。相反,不可重入(non-reentrant)函式不能由超過一個任務所共享,除非能確保函式的互斥(或者使用訊號量,或者在程式碼的關鍵部分禁用中斷)。可重入函式可以在任意時刻被中斷,稍後再繼續執行,不會丟失資料。可重入函式要麼使用本地變數,要麼在使用全域性變數時保護自己的資料。

 執行緒安全問題都是由全域性變數及靜態變數引起的。若每個執行緒中對全域性變數、靜態變數只有讀操作,而無寫操作,一般來說,這個全域性變數是執行緒安全的;若有多個執行緒同時執行讀寫操作,一般都需要考慮執行緒同步,否則就可能影響執行緒安全。如果你的程式碼所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段程式碼。如果每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是執行緒安全的。

 可重入的函式不一定是執行緒安全的可重入的函式在多個執行緒中併發使用時是執行緒安全的,但不同的可重入函式(共享全域性變數及靜態變數)在多個執行緒中併發使用時會有執行緒安全問題(可能是執行緒安全的也可能不是執行緒安全的)讀寫鎖可以有效解決這裡的執行緒安全問題

關鍵詞:Makefile方法、fgets()menu子系統

    實驗七仍然是在之前的實驗基礎上進行的新功能的新增,Makefile方法能夠減輕執行程式時繁瑣的指令輸入過程,menu子系統的引入,能夠支援帶引數的複雜命令,在使用者程式碼中定義一個帶引數的複雜命令。getopt()用來獲取命令引數,實現對指令的呼叫;gets()方法有緩衝區溢位的問題,為了防止緩衝區溢位攻擊的危險,使用fgets()方法更好。

3.課程總結

 3.1學習完《軟體工程(C編碼實踐篇)》課程後您最大的收穫是什麼?  

 在之前的學習中,我很少關注軟體工程的具體應用,也因此遇到了很多的問題,經過認真的學習《高階軟體工程》這門課程,感覺收穫到了很多軟體工程相關的知識,從中我學習到了問題解決方法論、軟體生命週期、軟體開發過程、圖形化描述方法訓練、工作量評估和專案管理、專案管理工具和軟體測試技術方面的知識。

 老師在課上的講解很精彩,網易雲課堂的線上課堂和線上程式題目對於加深對於軟體工程知識的理解非常有幫助。使得我從簡單的程式碼書寫到對軟體工程有一個巨集觀的視角,這種思考問題的方式對今後的軟體開發大有裨益。雖然課程結束了,但是學習的過程永遠都不會結束。

 3.2學習完《軟體工程(C編碼實踐篇)》課程後您最大的遺憾是什麼?

 最大的遺憾是自己現在還不具備足夠的開發經驗,對於軟體工程思想的理解可能還會比較淺顯,後期我會逐漸增強自己的開發經驗,相信在此之後對於軟體工程思想的理解會更加的深入。


相關推薦

個人作業——高階軟體工程實踐總結作業

一、請回望第一次作業,你對於高階軟體工程課程的想象 1)對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼? 我認為,在開篇部落格寫的對課程的目標和期待都全部實現了,並且還超

高階軟體工程實踐總結作業

一、請回望第一次作業,你對於高階軟體工程課程的想象 1)對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼? 開篇部落格對這門課的期待是: 希望能努力跟上隊友的腳步,努力增

高階軟體工程實踐總結

一、請回望第一次作業,你對於高階軟體工程課程的想象 1.對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼? 通過一個學期對軟體工程的學習和實踐,我的程式碼編寫能力,Bug定

高階軟體工程學習總結

1.課程總結 《高階軟體工程》這門課程在軟體學院非常搶手,在選課開始的時候我特地去了網咖等待選課系統開放並在第一時間選了這門課程,所以才能有幸跟著孟寧老師學習這門課程。在此之前,我對軟體工程的理解非常淺顯,甚至並不具備基本的軟體工程的思想,遇到課程設計或者是畢業設計,我

高階軟體工程學習心得

一.課程總結  我本科是通訊工程的,沒有學過軟體工程,學習這門課之前,一直以為這門課都是理論知識,各種紙上談兵的條條框框,一學期課上下來,發現並不是這樣,孟寧老師將這門課變成了實踐為主的動手課,而且必要的理論知識也不是很無趣的在課上講,而是選擇讓大家上課自己講PPT,不僅調

高階軟體工程第四次作業之團隊專案

      一、團隊展示  隊名--------IP、IC、IQ卡 隊員學號       吳忠粱(隊長)----201810812011         楊德

高階軟體工程第四次作業:東理三劍客團隊專案

一、團隊展示: 隊名:東理三劍客 隊員學號: 金安安(隊長) 201810812003 謝竟成      201810812002 彭麗君      201810812010 一句話描述擬作的團隊專案:圖書館管理系統 隊員風采: 金安

軟體工程學習筆記《三》程式碼優化和效能測試

如何在開源社群提問? 如果你提問沒有人回答!那麼是不是沒有人會呢?其實不然!可能你提問的方式本身就是不對的,我們來看看大牛是怎樣提問的?一起來學一下 https://github.com/seajs/seajs/issues/545 程式碼審查 程式碼優化

軟體工程學習筆記《三》需求獲取

文章目錄 軟體工程學習筆記《目錄》 需求工程師 當代的需求工程師需要具備的能力 當代的需求工程師需要努力的方向 當代的需求工程師需要注意的錯誤 需求的定義 需求目標 需求分析的實質 需求分析的關鍵

高階軟體工程第五次作業:“希希敬敬對”團隊作業-2

我們團隊的作業是:百度貼吧小爬蟲 隊員學號:     龍江騰(隊長) 201810775001     楊希                   201810812008     何敬上   

高階軟體工程第五次作業:東理三劍客團隊作業-2

團隊的作業是:圖書管理系統 隊員學號:     金安安(隊長) 201810812003     謝竟成      201810812002     彭麗君     201810812010 1.需求分析

高階軟體工程第六次作業:“希希敬敬對”團隊作業-3

我們團隊的作業是:百度貼吧小爬蟲 隊員學號:     龍江騰(隊長) 201810775001     楊希                   201810812008     何敬上   

高階軟體工程第六次作業:LLS團隊作業-3

1.需求&原型改進   1.1 給目標使用者展示原型,並進一步溝通理解需求      ①我們的目標使用者是評分者使用者      ②思考使用者痛點,描述使用場景。      場景一:對於唱歌,跳舞,表演,演講,朗誦等文藝、文化類的比賽,需綜合觀眾和評委的評分評選出冠軍和給出相應的排名

高階軟體工程第七次作業:東理三劍客團隊作業-隨筆1

團隊的作業:圖書管理系統 隊員學號:     金安安(隊長) 201810812003     謝竟成     201810812002     彭麗君     201810812010 Alpha敏捷衝刺: 1、站立式會議照片:   2、

高階軟體工程第七次作業:LLS戰隊Alpha敏捷衝刺2

召開迭代會議   會議內容:對現存問題尋求解決方法,以及部分介面的編寫。課程過多,查漏補缺。 分配任務:     宋非:分數判斷介面     羅建彪:規則制定介面     羅遠雲:使用者列表介面     計劃完成部分介面設計。 任務分解圖     燃

兩隻小熊隊高階軟體工程第七次作業敏捷衝刺3

團隊的作業:學生資訊管理系統 隊員學號:     周菲(隊長) 201810812007     孔繁燕    201810812001 Alpha敏捷衝刺: 1、 站立式會議照片: 2、每個人的工作: 周菲: 今天已完成:1、完成登陸介面響應窗體,登陸成功即出現主窗體

高階軟體工程第七次作業:LLS戰隊Alpha敏捷衝刺4

召開迭代會議照片: 會議內容:總結前三天衝刺做的不足的地方,討論如何將系統資料庫表做的更為詳細,完善。對系統進一步進行功能完善化,具體化。對系統的一些活動行為進行程式碼編寫。 任務分配:宋非隊長:201810812006   ActivityAction程式碼編寫     羅建彪

軟體工程學習方向

企業計算(Enterprise Computing)是稍時髦較好聽的名詞,主要是指企業資訊系統,如ERP軟體(企業資源規劃)、CRM軟體(客戶關係管理)、SCM軟體(供應鏈管理,即物流軟體),銀行證券軟體,財務軟體,電子商務/政務(包括各種網站),資料倉庫,資料探勘,商務智慧等企業資訊管理系

高階軟體工程第七次作業:LLS戰隊Alpha敏捷衝刺5

召開迭代會議照片:   會議內容:繼續對昨天的工作進行完善,將剩下的活動行為完成,並做明天的工作計劃。 任務分配:宋非隊長:201810812006  RuleAction程式碼編寫     羅建彪隊員:201810812005  ScoreAction程式碼編寫

高階軟體工程-------------IP、IC、IQ卡團隊 sprint 6

  Alpha敏捷衝刺第六天      1.  會議照:                2.  daily scrum 6   &