軟體工程三部曲

2021-08-26 16:38:55 字數 2549 閱讀 8554

經常在反覆的做一件事情,但是沒有停下來總結的習慣,而只是處於乙個當局者的位置忘了自己的初衷,所以經常停下來想想當初做這件事情的想法,可能會更能理順我們的思路。從開始接觸軟體工程巨理論的知識,到雲山霧罩的畫uml設計圖,再到設計模式的深入學習,接著是三層架構的理解,最後是運用這些學到的東西將機房收費系統重構完成,一直在懵懵懂懂中體會著。我想把我的軟體工程分為三部曲:霧裡看花、衣帶漸寬終不悔,為伊消得人憔悴、山重水複疑無路,柳暗花明又一村。

霧裡看花

軟體工程:初識軟體工程,翻翻原來的筆記,稍稍總結了一下這個階段的知識點。軟體工程主要是知道軟體設計人員如何高效的設計軟體。中國有位領導人說過:科學技術發展是第一生產力,而我認為軟體工程的指導才是第一生產力。軟體工程就是讓軟體開發人員如何多快好省的,如何高效低碳節能的開發出軟體。軟體工程學科包含為完成軟體需求、設計、構建、測試和維護所需的知識、方法和工具。軟體工程幫助軟體組織協調團隊、運用有限的資源,遵守一定的規範,在正確的指導思想下,完成的軟體專案和既定的目標。這是一張軟體工程概述圖:

uml:起初的學習階段就是學習了uml語言的基礎:基本概念,模型元素,體系結構。用uml對系統結構家魔技師:類,關係,圖,類圖,物件圖,介面,例項等。用uml對系統行為建模技術:用例圖,序列圖,協作圖,活**,狀態圖等。熟悉了rose工具提供的不同試圖和配置使用者介面,針對問題需求描述建立rose的用例檢視,序列圖以及協作圖等九種圖。

設計模式:程式設計師思維具體化的一種方式,是思考如何解決問題的過程,設計模式是在解決問題的過程中,一些良好思路的經驗繼承。《大話設計模式》這本書共講了23個設計模式,前幾章主要講解了物件導向的意義、好處以及幾個重要的設計原則;中間幾章講解了一些重要的設計模式,最後一章是對設計模式的全面總結。最後的附錄部分是通過乙個例子的演變為初學者介紹了物件導向的基本概念。通過有趣的小故事的講解,巧妙合理的將生活中的道理融入到設計模式中。

下面是我對設計模式的分類:

不知道剛剛開始學習設計模式的時候是不是有這種感覺:好像有些設計模式都是一樣的。比如說,你看第乙個簡單工廠模式和外觀模式,都是有乙個類下邊掛了幾個小類,然後又另乙個類通過呼叫這個類而是用這個小類。起初看這些確實沒有什麼意思,我也充滿了很多疑問,埋怨編書的讓我「浪費」這麼多不該浪費的時間。但是想想,設計模式已經是乙個很成熟的東西,所以就想著先用用再說。

mvc:有人說「mvc不是一種設計模式,而是一種架構模式」。但是我理解mvc也是一種設計模式,它只不過是應用在了架構上,從學習設計模式到學習mvc看似是兩個不相干的學科,但是對於在應用他們的好處方面是一樣的。至於他們的好處部分,接下來接著說。

衣帶漸寬終不悔,為伊消得人憔悴

重構——蛻變

機房收費系統的重構是一次蛻變。從面向過程到物件導向的轉變,從介面和資料庫直接打交道到幾層架構的設計,從沒有設計模式的概念到能將幾種設計模式應用到其中,從**實現的時候想一出是一出到用uml圖的設計。

先說說對物件導向的理解,對於物件導向的理解主要是對於類的理解。打個比方來說,對於「人類」這個東西,我是這麼理解的:這個類包括一些特徵,有靜態的屬性(也就是一些值),也有動態的方法(一些行為,能幹什麼!)每個人都有身高、年齡、體重這樣的屬性,也有行走,思考,勞動的方法。人之所以區別於其他的東西,是因為他具有這些屬性和方法。「人類」只是乙個抽象概念,而所有具有這樣的屬性和方法的個體就叫做人。類在程式中我理解為是一種資料型別。《大話設計模式》上的第乙個例子「活字印刷」就非常形象的介紹了物件導向的概念。當然物件導向好處就是通過封裝、繼承、多型把程式的耦合性降低。

uml圖的設計:

如果說第一階段是屬於區域性範圍的應用,那麼到第二階段,則是全域性的利用uml了。在這個階段,開始初窺uml的奧妙,不僅可以借助於uml的用例圖、時序圖來完成和人的溝通,而且在此基礎上,可以使用uml的類圖、時序圖來知道程式設計師進行開發。

接下來就是對於設計模式的運用,對於設計模式的運用,當然首先要考慮某乙個設計模式適於應用在什麼地方,用上了設計模式會帶來什麼樣的好處。帶著這兩個問題,才有利於真正的理解設計模式。到底什麼是設計模式,我簡單的把它理解為程式設計的時候的一種「公式」。現在回過頭來看看這些設計模式,就是他們只不過是多了乙個中間層,多了一段距離,「距離產生美」嗎。現在再想想三層架構,開始的時候我們是介面和資料庫直接打交道,但是現在是多了乙個中間層「業務邏輯層」。業務邏輯層就是將介面和資料庫分開了,避免了兩者之間直接打交道。說到了他們的共性,但是為什麼要把他們分成23種設計模式,而且還有不同的命名呢?原因就是在對於具體問題的處理上是不一樣的。中間層的使用也帶來了很大的好處,比如**的重用、提高了**的靈活性、解耦等等。說到設計模式,就不禁要說設計模式的原則了:開閉原則,黎克特制原則,依賴倒置原則,介面原則等等。

山重水複疑無路,柳暗花明又一村

整合這一套的設計過程,總結出了一下幾個方面

一、uml圖的設計可以說是對於想象力的培養

讓您在一切都還沒有的時候,生動地想象出系統將來的樣子。乙個偉大的設計師,必是具有超凡想像力的人。uml是渡河的筏,對於已在河對岸的人,自然不需要;對於未渡而想渡的人,卻是非常需要的東西。

二、設計模式和mvc本是相通的

無非是為了增加乙個中間層從而達到解耦的目的。做到設計模式的活學活用,我認為還要做到以解決問題為中心,將設計模式融合使用,避免為了設計而模式。當然這是建立在對各種設計模式瞭如指掌的情況下。

軟體工程革命三部曲 軟體工程

相信在,大部分是工程師,而不是科學家。同時,本文是軟體工程革命的三部曲系列之一,當第三部結束後 預計10年底 您將能領會到我提出的,尚未有人涉足的乙個新的工程革命!原始開發模式 我乙個人開發了乙個mis系統,部署到客戶端。客戶提出需求,我直接在源 上修改編譯,然後提著usb,或者直接傳個packag...

linux安裝軟體三部曲

一般來講在linux下安裝軟體,要經過三個步驟 configure make make install 但是會有麻煩,比如,r裡面,如果按照以上操作安裝,預設安裝r包的路徑會變成你的 home 下,這是我們不願看到的,因為home下空間一滿,你可能進都進不去了。因此正確命令的應該是這樣 config...

人生三部曲

人生三部曲 童年沙丁魚罐頭似的公共汽車在曬的發燙的柏油路上緩慢地爬著。我 瘦瘦小小的個子在擁擠的人群中喘不過氣來。還要多久呀?人們煩躁而沉悶的氣氛充斥著整個車廂。忽然,我看見一位打扮入時的西裝人士,正悄悄地把手伸入一位老人的口袋。我第一反應就是有小偷!於是大聲脫口而出,一車人都回頭驚悸地看著我,西裝...