本文是作者在學習了軟體工程(C編碼實踐篇)課程後的學習總結性質的文章 希望能通過自己的一些理解和經驗幫助大家更好地理解軟體工程的有關內容。。 學生 戢祥 課程地址《軟體工程(C編碼實踐篇)》MOOC課程http://mooc.study.163.com/course/USTC-1000002006 ...
本文是作者在學習了軟體工程(C編碼實踐篇)課程後的學習總結性質的文章
希望能通過自己的一些理解和經驗幫助大家更好地理解軟體工程的有關內容。。
學生 戢祥
課程地址《軟體工程(C編碼實踐篇)》MOOC課程http://mooc.study.163.com/course/USTC-1000002006
原創作品轉載請註明出處。。謝謝。
眾所周知,軟體工程涉及的範圍十分寬泛,從軟體的生命周期來看,分為:問題的定義及規劃、需求分析、軟體設計、程式編碼、軟體測試、運行維護。這六個階段。
而說起軟體工程,我的理解是用系統的規範化工程化的方法來指導開發和維護高質量軟體產品的過程。
並且對於代碼層面而言,軟體工程中有個概念叫高內聚低耦合。它是判斷設計好壞的標準,主要是看系統的內聚性是否高,耦合度是否低。
由於軟體工程中一個重要的設計思想就是模塊化的思想,而耦合性指的是模塊間的聯繫,是軟體系統結構中各模塊間相互聯繫緊密程度的一種度量。
內聚性指的是模塊內的聯繫,是模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。
那麼我們便可以得出一個結論:
在代碼層面上的軟體工程就是力求通過一系列的設計思想和規範的方法論來讓系統能夠達到高內聚,低耦合的效果。
我們要說的這門課程便是從一個menu菜單小程式入手,逐步重構和細化,最終成為一個可以嵌入其他程式中的一個可重用的模塊。
是從代碼層面來介紹軟體工程的一些設計思想。下麵從每次實驗的角度來總結這門課程的大致內容以及個人的一些心得。
註:課程實驗主要是在實驗樓提供的Linux虛擬機環境中完成的。
主要採用的是C語言來完成實驗,當然我們也可以用其他語言來複現實驗效果,比如go語言等。
1.從簡單做起,熟悉環境
這次實驗主要是熟悉實驗環境,熟悉linux的一些常用的命令,如ls,cd,mkdir等,以及vim編輯器三種模式和gcc編譯器的使用。
2.搭建基本的框架
這次實驗是按照代碼規範簡單地搭建一個menu小程式。
值得註意的是for語句是c99中的規範,如果我們用到的話,需要用c99規範來編譯。
編譯語法是:
gcc helo.c -std=c99 -o hello
3.實現業務邏輯和數據存儲之間的分離
這次實驗是在上次實驗的基礎上,實現業務邏輯模塊和數據存儲模塊之間的分離。(模塊化的思想)
4.將通用的模塊集成到項目中
這次實驗中,我們發現了linklist可以重新分離出一個可重用的模塊linktable,然後再將這個通用的介面集成到我們的系統中。(介面設計)
5.活用callback函數使介面更加通用
用callback增強鏈表模塊來實現命令行菜單小程式V2.8
這次實驗中,我們要實現介面中的信息隱藏,用回調函數來使介面更加的通用。(信息隱藏,通用化,多態)
6.將項目重構成一個模塊,供其它模塊使用
這次實驗中,我們為menu系統設計介面,將menu系統重構成一個可重用的模塊。這樣我們就可以把menu模塊嵌入其他系統中。
課程總結:
學完本次課程我最大的收穫是瞭解到了一個可重用的模塊是如何被建立起來的,以及我們每次在重構這個模塊時的意義。
並且認識到了設計的方法論就是不斷地重構,同時也熟悉了很多設計原則,如模塊化,通用的思想,介面如何設計,信息隱藏,增量開發,線程安全等方面。
遺憾的是本門課程主要是從代碼層面來講解軟體工程的,對軟體工程流程方法的介紹上稍顯欠缺。