1. 程式人生 > >【作業】2020年高等軟體工程系統設計階段思考

【作業】2020年高等軟體工程系統設計階段思考

首先,按照國際慣例,好久不見。咋說呢,這波我自己感覺彷彿過了一年,但是翻回去一看日期才大半個月。為啥呢,這陣子太忙了,事情一個接一個,而且大都還是自己完全不擅長卻又不得不做還得做的像樣點的那種。不說別的,程式碼都基本上沒時間肝,只能向後一靠眼皮一合呼嚕一響的時候寫點,還真有點尷尬。不過放心,之前挖的部落格坑,總會填上的。而且不久的未來,筆者也將會有新的開源專案正式上線,各位大可放心,筆者不會鴿的:smile:。 然後接下來,進入正題,現在軟工系統設計環節也已經算是告一段落了。對筆者自己而言,實際上還是早已熟悉的內容居多,所以筆者在本文中,還是主要著重說下對設計的一些粗略之見。 ## 設計的路子 其實呢,說到這個,對於筆者本人而言,不算是啥陌生玩意。不是因為別的,而是因為乾的太多了,啥玩意好使啥玩意外強中乾啥玩意根本胡扯,早就爛熟於心,當然相對應的,也沒少踩過坑,甚至付出過慘痛的代價。不僅如此,在我們本科的OO課裡頭,也沒少接觸過這類內容,具體可以參考下筆者寫於2018年的一些文章,在本文中不做展開。在本文中,筆者將著重對“設計的路子”這個詞進行解析,談一談個人的理解與看法。 看了下其他同學寫的這次作業,有說注意架構規範的,也有說注意留好專案文件之類的。不過個人理解,**總而言之一句話——規範性,用一個更加文藝且浪漫主義的詞,叫做按圖索驥**。 咱們也都是計算機專業的學生,小到數分高代離散,大到計算機組成原理、作業系統、編譯原理,應該人人都爛熟於心。在這裡頭,如果你學習之餘喜歡和我一樣瞎琢磨的話,肯定也會產生不少的疑問,例如: * CPU的設計,為啥需要四級流水線?二級三級不行麼?序列不行麼?ALU那種簡單玩意幹啥單獨拎出來?裝置控制直接閘電路玩起來好不好為啥一定得走DM? * 作業系統的程序,為啥需要拆成時間片?為啥得按照四種基本狀態來排程?我直接排著隊來不行麼?還有為啥要分核心態和使用者態?直接平推到底不行麼? * 設計一門新的程式語言的時候,為啥一定非得去幹淨文法中的左遞迴?咱別遞迴下降好不?暴力大迴圈大遞迴不香嗎?就算實在不行,咱不從左邊遞迴下降,從右邊咋的就不行了呢? * 即便在OO課,也有一堆同學有著五花八門的質疑:OO是啥玩意?OO能幹啥?這程式不用OO不能寫了是咋的?總而言之一句話:OO有啥用。 如果你想過這些問題的話,那恭喜你,你發現了問題的所在。在咱們的考試中,顯然但凡不按照這些來,那就是錯的,就會少不少分,這個人還會被貼上“學渣”、“學藝不精”等精緻的標籤。但是從實際意義上來說,這些真的就不對了麼?並非如此!實際上,**能解決問題的一切辦法,都是好的,甭管黑貓白貓抓著耗子就是好貓,這一點毫無疑問**。 不過既然如此,那麼設計的路子,重要性何在呢?問得好,我自己也想過很久,也順帶思考過更深層次上的相關問題。以下是我個人的一點理解: * **設計的路子是一種可以以可控的成本,尋找出一種較優設計的方法** 劃一下重點: * **尋找設計的方法** * **成本可控** 首先,**設計的路子,指的是尋找設計的方法,而不是設計本身**。這一點算是基本中的基本,這個概念有些類似於元(meta)的概念,換個更通俗的解釋,那就是,設計的路子,是“漁術“,而非一筐或幾簍子蹦躂著的魚。在計算機行業,有不少類似的例子,例如計算機組成原理中用到的卡諾圖,提供了一種尋找符合對應真值結果的邏輯結構的方法;在編譯原理中,我們有一整套的理論,來基於一個文法規則,構造出一個用於舒舒服服解構原始碼的有限狀態自動機,實際上我們北航這的編譯課上,一大半內容都在圍繞這個。這些內容有個共同的特點,那就是用**構造用於構造的方法**。而設計的路子,本質上也只是這一思路在軟體工程設計中的體現。 而之後,也是**最為關鍵的一點,就是成本可控**。這意味著,我們只需要按照路子來走,就不再需要通過一系列踩坑來提高設計品質。結合現實開發環境來說,雖然學校裡頭,你可以學習試錯,但是在生產環境下,可沒那麼多時間給你走彎路。你的甲方等著要demo,你的投資人等著一個實底,你的上頭等著成果,你的下面等著吃口熱乎的,緊俏得很。而尋找較優設計這件事,要是不能在可控的人力物力時間成本內完成,那麼設計將真正的成為玄學,變得不可捉摸且難以大規模投入產業。**實際上,成本可控,個人理解,這某種意義上,也是一切理論所存在的意義**。比如,我們想研究一件事情,在現在看來,似乎沒那麼困難,但是實際上,我們早就踩在了前人的肩膀上,他們為我們提供了一套經過歲月不斷完善的理論體系。試想,如果你研究一個東西的物理化學性質,而你沒有任何理論,需要從底層一步步開始,從敲石頭,到基本世界觀,到力學三定律,到電子交換規則,再到相對論,再到測不準理論,一步步來,其規模可想而知,基本上規模以幾何級數增長。而這一關鍵問題不能得以解決的話,那麼人類的技術、生產力、社會的發展,遲早將面臨全面瓶頸。**而設計的路子,乃至於其他的一切路子,則是發展的基本保證**。 ## 胡言的亂語 好了,又到了一文一度的傳統藝能時間了,這次說點啥好呢,emmm。 (負能量預警,望讀者們選擇性閱讀,必要時可以跳過,感謝:heart:) 首先,還是得總結下這門課程迄今為止的一切吧。總體來說還行,但是依然離配得上優秀二字,相差甚遠。首先呢,我覺得自己的隊友們都相當不錯,有一定的能力,且基本上還算是靠得住,最起碼在幾度磨合後,變得靠得住了。單純從事情的角度來看,每次都還算是平穩的度過了,而且根據老師的點評來看,似乎問題不算多,當然了,也可能是因為本就貧乏的內容確實沒啥好說。可是,瞭解筆者我的人,都知道,筆者一直希望能幹票大的,往小了說不滿足於完成課程的那點要求,往大了說希望能遇到有共同信仰的人。但是,事實證明筆者的能力還是欠佳,單獨做一件事還行,但是事情一多,那怕真正比較棘手的只有一件,也會很容易陣腳大亂,戰鬥力跳水式滑坡。而我們這學期的努力,雖然從課程角度來說或許還行,但是也就僅此而已了,終究還是沒能跳出這樣的小格局。而這件事情,我認為怪不得別人,只能怪自己能力太差,各方面都不咋地,顧頭不顧腚。這事真怨不得別人,而且正好相反,自己的這般狼狽恰恰是對組員一次一次努力的最大褻瀆。我一直認為,將軍者,帶來勝利才是一切,可事實是證明,我恰恰還不具備擁有這一切的能力。而且事到如今,木已成舟,怨念也沒啥用,能做的只有好好反思,以後別記吃不記打了。 說完課程這邊,該說說自己了。想起來半年前自己的所想,以及現在的狼狽相,真的覺得有些糟糕。不,不是有些糟糕,而是糟透了。不說別的,我記得我在本科入學的時候,寫過一張卡片,上面寫著對自己四年的期許,這個應該我們系的人都有寫過。然後四年過去,到了2020年,我再次翻出這張卡片,感覺還行,甚至某些地方還算是超額完成了任務,更有一系列的意外收穫。可是現在呢,回想起半年前給自己的期望,自己基本沒完成啥,把半年時間全都用來顧頭不顧腚,用來瞎忙活白忙活,用來丟人現眼了。人的一生超級短,一共也沒幾個半年,可是自己成年前浪費了那麼一大堆時間不說,現在依然繼續霍霍,我真的不明白自己到底何以至此。我記得,我和老師,在半年前還定過讀研一年的整體計劃,但是現在呢,完全沒有像是完成了一半的樣子。不僅如此,自己還並沒有閒著,一天到晚團團轉。或許有些人會覺得盡力而為如何如何,但是我只覺得,這除了充分說明了自己的弱小和愚蠢外,啥也不能說明,私以為,這些“優良品質”,恰恰是一個人的原罪,畢竟,弱小和愚蠢遠比邪惡更能害人害己,更加流毒無窮。 好了好了,繼續吐槽也沒啥用,止增笑耳。真要是想要挽回的話,那就得拿出點行動來改變,**種一棵樹,最好的時機是昨天,其次今天**,大概就是這樣吧。 如果您一直讀到了這裡,那請允許我深深的表示感謝,真的,感謝您能聽我說完這些話,並且我誠摯地希望,能與君共勉。 好的,我得溜了,總得做點啥挽回下不是麼。До скор