《構建之法》——第一次做業

這個做業 系統分析與設計
做業要求 在這裏
我在本課程的目標 瞭解真正的軟件工程,認識軟件開發的流程,學會團隊合做開發、測試的模式,知曉構建一個完整的軟件流程
課程在哪裏幫助我 通讀教材,明白完成一個完整的軟件不只僅靠的是技術,還須要前期的需求分析,設計,以及長期測試,維護等等

1、簡單介紹一下吧

      初次見面,先報個名號:我叫魏家田!哈哈哈!自我剖析一下,別人都叫我老幹部。html

      不知不覺就到了別人口中的大三老學長,瞬間感受本身又老了。。。回首過去,稍有慚愧,做爲一名軟件工程專業學生,在即將面對人生又一個岔路口的我在技術方面仍然拿不出手,總結緣由,三個字,練得少;展望將來,前端

2、閱讀與思考

1. 回想一下你初入大學時對軟件工程專業的設想

  • 當初你是如何作出選擇軟件工程專業的決定的?java

        其實在報志願的時候也沒想那麼多,最初只是選定了兩個大類,一個是材料類,一個是計算機類,剛好在西南石大的專業志願裏面軟件工程排在了第一志願,因此就來到了這個專業。git

  • 你認爲過去兩年中接觸到的課程是否符合你對軟件工程專業的期待,爲何?github

        在總體上仍是比較符合個人期待,可是隨着學習的深刻,愈發以爲僅僅侷限於老師上課所講的知識是遠遠不夠的,書本上的內容只能算是一個小Demo,可能書本上更側重於定義的理解,可是把書本上的知識轉化爲實戰經驗還須要多多練習。好比,在暑期集訓期間的JAVA實訓,就是經過一個完整項目把死的知識利用了起來,纔能有一個更深入的理解。
  • 你以爲軟件工程是你喜歡的領域嗎,它是你擅長的領域嗎?spring

        嗯。。雖說目前來看還不足以勝任軟件開發的工做,可是,對於軟件工程領域來講我仍是抱有很大興趣的,尤爲是看到一步步設計出來的功能正常實現的時候,那種愉悅知足的心情令我很是享受。
  • 未來你會選擇從事軟件開發相關的工做嗎?是的話給出你想去的城市、公司和崗位,否的話給出緣由後端

        之後必然是要從事軟件開發相關工做的。之後應該就是留在成都吧,這是一座來了就不想走的城市。公司的話可能會選擇一個石油相關的企業作開發相關工做緩存

2. 對照前人們走過的路和描述將來發展,如今的你

  • 自我感受你已經具有的專業知識、技能、能力有哪些?已經寫過的代碼量是多少?描述你作的最複雜的項目/做業。安全

        從進入這個領域也有兩年時間了,可是說到專業知識也只有C/C#語言,數據結構了,並且數據結構也漸漸淡忘了內容。談專業能力應該爲時尚早,技能的話,應該可以實現一些前端開發,和部分後端代碼內容。代碼量的話,提及來真正能夠算得上真正項目代碼量也沒有太多,可能也僅僅千行。最複雜的項目,emmmmm,就是今年暑假期間技能實習作的一個基於Dubbox的分佈式電商系統的開發吧。服務器

        這個項目搭建了商城端,以及兩個角色的管理系統。在商城界面設計了購買商品、購物車、搜索、支付、訂單等相關功能,採用了spring-boot框架+Redis緩存+Solr搜索引擎集羣分佈技術,加入了CAS單點登陸設計、Spring-Security安全框架和Freemarker網頁靜態化技術。
  • 離成爲一個合格的本科畢業生,在專業知識、技能、能力上還差距哪些?

        做爲一名本科生,要經歷大學四年的系統化培養,在和一些培訓機構的「速成Coder」競爭的時候,咱們的優點是對於整個專業的系統化視野,以及有着良好教育基礎的學習能力,可是咱們欠缺的是大量的實戰代碼量積累,因此在編碼能力上,咱們還須要增強!

3. 目前是一我的生選擇的十字路口,考研、工做、考公、出國,不一樣的選擇在大三就有不一樣的努力方向。而不管考研仍是工做的每條路徑,也有許多不一樣的分支。

  • 對照以上你閱讀的前人們的經歷,你的選擇是什麼?

        經過品讀前人經驗分享,以及兩年來總結思考,發如今當今社會大環境下,做爲一名普通高校的本科畢業生,要想進入理想單位,拿到理想的薪水,確實有必定難度,因此,要想在本專業領域內有必定的建樹,仍是有必要繼續攻讀研究生,只有在這個領域不斷深刻,不斷學習,才能在競爭日趨激烈的社會中佔據一席之地!
  • 在這種選擇下,你認爲你相比其餘同窗來講有何優點,有何劣勢?

        優點:這兩年在實驗室和老師也作了一些工做,積累了必定的成果,相比於其餘人要在競賽經驗上有着更深的熟悉。

        劣勢:代碼量太少了!英語也是弱項!
  • 針對你的選擇,你給本身的大三設定的規劃安排是什麼?

        多動手,主動加入老師項目組,承擔編碼任務,積累更多的實戰經驗。深刻了解java語言,除了作一個代碼搬運工,還應該去了解和思考一下java技術體系中這些技術是如何實現的,認清這些技術的運做本質,是本身思考程序這樣寫好很差的基礎和前提,當咱們在使用一門技術時,若是再也不依賴書本和他人救能獲得這個問題的答案,那纔算是昇華到了不惑的境界。
  • 你對於實現本身的夢想已經作了或者計劃作什麼樣的準備?

        參加高質量賽事;加入實驗室老師開發項目組,而且已經承擔起部分編碼任務

    3、提有質量的問題

    問題一

  • 在第二章的《我的技術流程》P25頁中,提到「單元測試必需要由最熟悉代碼的人(程序的做者)來寫」

    我的見解:我想說,對於這句話,在一些簡單的項目中,單元測試能夠由做者本人來寫測試,可是對於一個大的團隊來講,應該會有相關的測試團隊吧(雖然沒有深刻了解過大規模軟件開發團隊模式嘿嘿嘿)可是不是有時候每每會由於這代碼是本身寫的,本身的想法就已經侷限在這裏面了,就沒有意識到某些問題呢?這時候是否是就須要有其餘人來提供他們的幫助或者是關於這個代碼的測試意見呢?

    問題二

  • 在第四章的《兩人合做》P70頁中,提到了斷言,可是斷言就是斷點嗎??仍是一個輸出驗證語句??

    我的見解:編寫代碼時,咱們老是會作出一些假設,斷言可能就是用於在代碼中捕捉這些假設 能夠將斷言看做是異常處理的一種高級形式 斷言表示爲一些布爾表達式,編碼人員相信在程序中的某個特定點該表達式值爲真 能夠在任什麼時候候啓用和禁用斷言驗證,所以能夠在測試時啓用斷言而在部署時禁用斷言。一樣,程序投入運行後,最終用戶在遇到問題時能夠從新起用斷言。

    問題三

  • 在第六章的《敏捷流程》P111頁中,提到「若是團隊成員都對某個任務不感興趣……團隊成員小飛想認領任務A,可是A的實現要依賴於任務B,可是B沒有人認領,小飛也不具有足夠的知識去完成B,怎麼辦」

    我的見解:我想說,在整個團隊開發過程當中不是應該先分析整個流程中所須要的技術支持以及知識嗎,因此這種狀況應該是不多見的,若是像書上所說,那豈不是有可能在工做進行到一半的時候發現有一個任務沒有人能完成,那整個工做豈不是白費,或者再招來能完成任務的技術人員,這樣會嚴重拖慢開發進度。

    問題四

  • 在第十四章的《質量保障》P304頁中,提到「軟件的開發過程有三個主要的特徵:好、快、便宜」可是,咱們如何才能在這三個特徵之間尋求一個平衡點呢?

    我的見解:我以爲,不管是在軟件工程項目中,仍是在平常生活中,都會遇到某些事情須要做出權衡,在不能全部方面都取最優的狀況下,要在各個關係之中取得一個平衡。因此,在軟件開發過程當中,能夠經過質量成本控制,明確量化出開發過程當中的成本,例如後面介紹的CMMI理論,即實現了一個定量的軟件工程質量等級劃分。

    問題五

  • 在第十六章的《IT行業的創新》P350頁中,提到「成功的團隊更能創新」

    我的見解:創新,意味着改變,若是是一個團隊或者公司已經作到了成功,那麼上層領導可能就是認爲我這種方式方法是正確的,甚至會造成一種圈子惰性,你們都習覺得常,前輩這麼作已經取得了成功,那麼我就按照這個成功的方法繼續完成工做就OK了,並且,若是一旦有人冒頭提出改變,阻力可想而知。可是,對於一個初生的團隊來講,作出改變的成本就會下降不少,並且想去改變的人也會有不少,由於他們還在摸索一個獨特的操做以及運做流程,偏偏是更能創新的。

    4、瞭解目前主流源程序版本管理工具

  • Git

    1.什麼是Git

    Git是一款開源的分佈式版本控制工具,在世界上全部的分佈式版本控制工具中,Git是最快、最簡單、最流行的;做者是Linux之父:Linus Benedict Torvalds,當初開發git僅僅是爲了輔助Linux內核的開發(管理源代碼)。Git在國外已經很是普及,國內慢慢普及愈來愈多的開源項目已經轉移到Git

    2.優勢

    分佈式的版本管理,對比集中式的版本管理系統來講不會出現中心服務器死機就影響工做,而是能夠先存儲在本地,等服務器修改好還能夠接着進行工做,而且Git的社區靈活,擁有豐富的資料來進行學習查閱,而且Git是開源的,它強調個體,而且對於公共服務器壓力不會太大,大小項目都可管理,擁有良好的分支機制, Git的分支只要不提交合並,對其餘人沒有任何影響,而且Git是統一管理元數據,存放在稱爲.git的文件目錄裏面。

    3.缺點

    Git的版本之間的兼容性很差,可能在上個版本的項目內容放到另外一個Git版本會出錯。
  • GitHub

    1.什麼是Github

    Github是一個代碼託管平臺和開發者社區,開發者能夠在Github上建立本身的開源項目並與其餘開發者協做編碼。創業公司能夠用它來託管軟件項目,開源項目能夠免費託管,私有項目需付費。

    2.優勢

    使用github原生的功能,就能夠進行相似評論的功能,強調我的,符合hacker更看重名譽/成就感的天性,在功能設計簡潔實用上手很快,可用性好,已有不少至關質量的各種項目和優秀開發者在上面。

    3.缺點

    國內訪問速度太慢,常常出現connect time-out,並且不能很好的解決GB2312/GBK,對中文不夠友好,wiki功能太弱,直接致使文檔(對於開源項目很重要)常常被分離到一個獨立站點

  • SVN

    1.什麼是SVN

    SVN(Subversion)是近年來崛起的版本管理工具,被譽爲cvs的接班人。目前,絕大多數開源軟件都使用svn做爲代碼版本管理軟件。

    2.優勢

    它的客戶機 / 服務器存取方法使得開發者能夠從任何因特網的接入點存取最新的代碼;它的無限制的版本管理檢出 (checkout)的模式避免了一般的由於排它檢出模式而引發的人工衝突;它的客戶端工具能夠在絕大多數的平臺上使用。一樣,SVN 也不提供對變動流程的自動管理功能。

    3.缺點

    SVN 安裝和使用多采用命令行方式,學習曲線高,同時不提供對變動管理的功能

    [參考資料]http://www.javashuo.com/article/p-zcaiapir-gq.html

相關文章
相關標籤/搜索