軟體工程(C編碼實踐篇)學習總結

来源:http://www.cnblogs.com/john-smith/archive/2017/06/12/6980497.html
-Advertisement-
Play Games

本文是作者在學習了軟體工程(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.從簡單做起,熟悉環境

寫一個hello world小程式 

這次實驗主要是熟悉實驗環境,熟悉linux的一些常用的命令,如ls,cd,mkdir等,以及vim編輯器三種模式和gcc編譯器的使用。

 

2.搭建基本的框架

命令行菜單小程式V1.0

這次實驗是按照代碼規範簡單地搭建一個menu小程式。

值得註意的是for語句是c99中的規範,如果我們用到的話,需要用c99規範來編譯。

編譯語法是:

gcc helo.c -std=c99 -o hello

 

3.實現業務邏輯和數據存儲之間的分離

內部模塊化的命令行菜單小程式V2.0

這次實驗是在上次實驗的基礎上,實現業務邏輯模塊和數據存儲模塊之間的分離。(模塊化的思想)

 

4.將通用的模塊集成到項目中

用可重用的鏈表模塊來實現命令行菜單小程式V2.5

 這次實驗中,我們發現了linklist可以重新分離出一個可重用的模塊linktable,然後再將這個通用的介面集成到我們的系統中。(介面設計)

 

5.活用callback函數使介面更加通用

用callback增強鏈表模塊來實現命令行菜單小程式V2.8

這次實驗中,我們要實現介面中的信息隱藏,用回調函數來使介面更加的通用。(信息隱藏,通用化,多態)

 

6.將項目重構成一個模塊,供其它模塊使用

將menu設計為可重用的子系統

這次實驗中,我們為menu系統設計介面,將menu系統重構成一個可重用的模塊。這樣我們就可以把menu模塊嵌入其他系統中。

 

課程總結:

學完本次課程我最大的收穫是瞭解到了一個可重用的模塊是如何被建立起來的,以及我們每次在重構這個模塊時的意義。

並且認識到了設計的方法論就是不斷地重構,同時也熟悉了很多設計原則,如模塊化,通用的思想,介面如何設計,信息隱藏,增量開發,線程安全等方面。

 

遺憾的是本門課程主要是從代碼層面來講解軟體工程的,對軟體工程流程方法的介紹上稍顯欠缺。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MyBatis緩存 我們知道,頻繁的資料庫操作是非常耗費性能的(主要是因為對於DB而言,數據是持久化在磁碟中的,因此查詢操作需要通過IO,IO操作速度相比記憶體操作速度慢了好幾個量級),尤其是對於一些相同的查詢語句,完全可以把查詢結果存儲起來,下次查詢同樣的內容的時候直接從記憶體中獲取數據即可,這樣在某 ...
  • 第一節 Python文件類型 源代碼 Python源代碼的文件以“py”為擴展名,由Python程式解釋,不需要編譯 位元組代碼 Python源文件經編譯後生成的擴展名為“pyc”的文件 編譯方法 優化代碼 經過優化的源文件,擴展名為“.pyo” 以上三種均可直接運行 第二節 Python變數 變數的 ...
  • 繼承定義一個類B時,發現已有類A與要定義的類B相似,並且類B屬於類A的一種時,可以將類B定義為類A的子類。 當多個類有著共性內容,可以將共性內容向上抽取,抽取到一個新的類中,這個新類和多個類形成一個關係叫做繼承。 子類繼承父類後,自動擁有父類所有可繼承的屬性和功能。 註意事項 java只支持單繼承, ...
  • 基本語法 shell的if語法和C語言等高級語言非常相似,唯一需要註意的地方就是shell的if語句對空格方面的要求比較嚴格(其實shell對所有語法的空格使用都比較嚴格),如果在需要空格的地方沒有打上空格,都會報錯。如if [ $1x == "ip"x ];then echo "abc";fi中少 ...
  • 今天上午找資料,發現了mongodb,閑來無事就研究了下,本人用的是phpstudy集成包添加mongodb擴展。 1.添加mongo、mongodb擴展 phpstudy集成環境一般用的是32位php,去官網下載32位的mongo、mongodb擴展 mongo:http://pecl.php.n ...
  • 期末複習比較忙過段時間來專門寫scrapy框架使用,今天介紹如何用python生成詞雲,雖然網上有很多詞雲生成工具,不過自己用python來寫是不是更有成就感。 今天要生成的是勵志歌曲的詞雲,百度文庫裡面找了20來首,如《倔強》,海闊天空是,什麼的大家熟悉的。 所要用到的python庫有 jieba ...
  • 鍵盤錄入(Java): 1.導包 格式 import java.util.Scanner; 位置 在class上面 2.創建鍵盤錄入對象 格式 Scanner sc = new Scanner(System.in); 3.通過對象獲取數據 格式 int x = sc.nextInt(); impor ...
  • 最近看了看JavaWeb的書籍,才感覺到大二時候學的JavaWeb才僅僅只是個入門。最尷尬的當初還沒咋學一直在看.NET,現在看起來JavaWeb,各種框架各種頭疼啊。看了幾個例子之後覺得,還是自己動手做個項目試試。邊做邊學才能學的快一點。做的時候用博客園記錄下過程,省得以後忘。之所以選圖書館管理系 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...