軟體工程一:對軟體工程的基本認識

來源:互聯網
上載者:User

軟工的基本認識

這裡主要介紹三類,軟體的分類,軟體工程過程,軟體的生存期模型

軟體的分類

      軟體開發是一個靈活性很強的工作,即使同樣的功能給不同的人使用,需要設計的也不盡相同,比如說,同樣要實現一個圖書搜尋功能,如果是給小學圖書館設計,就要符合小學生的需求,比如說多些圖片的設計,而給老年人設計呢,則需要放大字型等等,就像搜狗IME中會有老年人專用的皮膚,這也體現設計者的用心,好程式的背後總會有用心的設計者。所以軟體的分類是必須的


軟體工程過程

      這是指導整個軟體開發的指南,這裡包括軟體從開始到結束的整個過程,包括制定計劃、

需求分析和定義、軟體設計、程式編寫、軟體測試、運行/維護,這六個步驟每一步的執行是保證項目成功完成的保證,以後將對這六個過程進行一一的分析。

軟體生命週期

      其中包括:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型。

模型特點:

      瀑布模型:周期長,跟使用者見面比較晚,從計划到和使用者一起計劃外,其他的部分使用者和開發人員是分離的,使用者不能直接把問題直接反應過去。

演化模型:由於在項目開發的初始階段人們對軟體的需求認識常常不夠清晰,因而使得開發項目難於做到一次開發成功,出現返工再開發在所難免。做兩次第一次只是實驗開發,其目標只是在於探索可行性,弄清軟體需求第二次則再此基礎上獲得較為滿意的軟體產品

    螺旋模型:多次原型反覆並增加風險評估的開發模型

噴泉模型:有嚴格的數學理論和形式化的支援人員,但目前在所研究實驗階段,不能實現

      智能模型:1.通過領域的專家系統,可使需求說明更加完善、準確和無二義性。2.通過軟體工程的專家系統,提供一個設計庫支援,在開發過程中成為設計者的助手。3.通過軟體工程知識和特定應用領域的知識和規則的應用來提供對開發的協助。但是,要建立適合於軟體設計的專家系統,或建立一個即適合軟體工程又適合應用領域的知識庫都是非常困難的。

當然,用什麼模型不是一成不變的,比如說對於一些簡單的系統,大家都比較熟知裡面應該有什麼樣的功能,瀑布模型就可以了,但是對於一些比較複雜的,或者是之前很少有過類似的系統,就需要結合實際考慮了,所以,要想選擇模型,必須要先分析項目的特點。

 

 

對軟體的基本認識

 i.             開發軟體為什麼要工程化
有很多人,尤其是很多學生存在這樣的誤區,平時感覺自己能用語言寫一個鬧鐘,寫一個記事本等一些小東西,就以為自己一個人就可以完成一個小的項目,所以很不理解為什麼開發軟體有時候不能讓一個人獨立完成,也有個人英雄主義在作怪。其實原因很簡單,比如說,高中我們做題應該很有體會,感覺一張卷子一點問題也沒有,但是等成績下來的時候總不是一百分,為什麼,因為我們很難發現自己的錯誤,哪怕是重複很多次,這是思維定勢。

 ii.             軟體開發與其說是技術活,不如說是規範活.

軟體開發是程式員奇思妙想的時候,用什麼方法都是隨心所欲的,有的人則為了追求速度或者說是彰顯個性而用一些很不福士的演算法,以為這是體現自己高明的地方,恰恰相反,這真是不懂編程的表現,一般的項目一般都不是一個人來完成的,它分為開發階段和維護階段,然而維護階段一般又非開發人員所為,所以如果代碼技術性過於高,反而對後面的維護不利,另外,IT是個跳槽率很高的職業,如果一項工程沒有完成就離開,剩下高明的演算法要讓誰看呢,出於對公司的考慮,最好還是規規矩矩,符合福士的口味。

iii.             文檔的重要性
很多人,尤其是大學生,剛開始學習編程的時候,難免會有一些急功近利的想法,想快點做出點成績,但是往往欲速則不達,就想前段時間做的機房收費系統一樣,在一種完全沒有文檔的情況下,雖然最後做完了,而且也跑起來了,問題似乎也沒有想象的那麼多,但是其中的過程只有自己知道,代碼啦,資料庫啦都不忍心看,可以說是亂七八糟的,想加個資料庫就加,想加個功能就加,很有文檔,就像沒有目的的去雕塑,雕成什麼樣,算什麼樣,而且很多情況是中途發現需要這個樣子了,才發現,那部分材料已經被自己給去掉了,所做的程式自然沒有規律可言,如果現在有人說那個機房收費系統那個功能要修改一下,我估計我的得全盤改動.

 iv.             開發軟體為什麼時間總是那麼緊,開發的人總是那麼累
曾經有過單純的想法,為什麼工作非要加班呢,多用些人不就行了嗎,人多力量大嘛,但是自從軟工看完後便覺得這種想法蕩然無存了,其實,原因並不是說老闆多黑心,而是取決於軟體開發工作的性質,這是一項需要智慧的工作,首先,這不是工廠,沒有機器,只有手工;其次,這裡需要殘雜很大一部分人文因素,比如說個人習慣,同樣輸出一個結果,兩個人的演算法往往就有很大的區別,所以參加人數越多,在項目中的不同因素就越多,因為各個模組之間的銜接問題就越大,所以參加人數應該是少而精,所以這也是為什麼藍精靈體中說程式員是“聰明而辛苦”,聰明在他們每個人都是一個設計師,辛苦在一項任務,自己又無可取代的位置,只能是自己的事情自己幹。

 v.             如果自己無法適應社會中的潛規則,那麼就學編程吧(不知道這樣說對不對)
從我目前的認識來看,突然發現軟體行業是整個社會的一片淨土,這裡不像其他行業一樣靠嘴吃飯,更多的是需要能力,除非老闆想賠錢,不然絕對不會用一個靠關係而不是靠技術的人來當專案經理,因為這個關係到整個項目生存的決定性因素;雖然同事之間保持著微妙的競爭關係,但是一個項目要想如期完成必須要和同事上司好好合作;做軟體開發的每個項目的每個功能,無處不能體現全心全意為人民服務的宗旨,所以開發軟體的人無疑又是心細如絲,必定是善良的,體貼的,嫁人就嫁程式員哦。所以,以此可見,這裡的確是一片淨土。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.