這個做業屬於哪一個課程 | 課程的連接 |
---|---|
這個做業要求在哪裏 | 做業要求的連接 |
我在這個課程的目標是 | 經過這本書的學習,可以清晰理解軟件工程、程序、和開發過程所須要的知識 |
這個做業在哪一個具體方面幫助我實現目標 | 看書寫博客,在作項目的同時,關注需求分析、設計實現、測試與維護等必要過程 |
我是一個來自計算機科學學院軟件工程專業的大三學生,當初選擇計算機專業時,我就想着要努力把計算機學好學紮實,積極進取,不辜負這大學美好時光。以前選擇計算機專業並非個人本意,當時本想學醫,治病救人,但因爲一些緣由選擇了計算機專業。最開始的時候,本覺得本身對計算機不感興趣,隨着對計算機的深刻了解,也漸漸感覺到計算機的魅力。利用計算機,咱們能夠開發出本身之前作不到的東西,學習HTML、CSS製做前端頁面,js、jquery經過渲染,將頁面的豐富化等等,這些都是咱們學習計算機帶來的好處。
同時,我也是一個性格開朗,對一切新鮮事物都感到好奇的人。我喜歡說話,我也習慣於傾聽。我心裏細膩,可以很好的傾聽別人的話語,所以你們都願意向我傾訴他們的問題,而且我能提出很好的建議,幫助他們。我喜歡傾聽別人經歷的故事,無論是喜仍是悲,我也喜歡聽一些光怪陸離的故事,每一個人都有本身不一樣的成長,都會經歷不同的故事,這些故事能夠是使人難忘的,也能夠是震撼人心的,我喜歡把它們記錄下來,當本身碰到問題感到迷茫的時候,拿出它們,向他們的作法學習,攻克這絲迷茫。別人的經歷是咱們最好的老師。我喜歡聽音樂,喜歡聽一些舒緩的音樂,我也喜歡看書,喜歡逗小孩等等。個人邏輯推理能力比較好,我喜歡在數學、物理方面花時間和功夫,只要我理解了一道題,從此這種相似的題就不會出現問題。而對於專業課,我但願在最後這兩年大學生活裏能學到更多的知識,充實大腦。css
我是一個理科思惟比較好的人,當初高中數理化考試都能獲得一個滿意的分數。當時高三的時候,我就下定決心要考川大的臨牀系,但因爲高考發揮失常,致使高考後分數不夠,沒上到這個學校,所以我爸就提議,要不就學計算機吧,計算機的前景也很好,並且也和數學這些邏輯聯繫的比較緊密,所以就選擇了計算機。當時的我還未從從醫的夢想中醒過來,還想着讀其餘學校的臨牀系,因爲分數的限制,我不得不選擇計算機專業,今後我就踏上了求計算機學之路了。雖然不情願,但隨着對計算機的深刻了解後,我才發現我對計算機的喜好也在逐年增長。經過計算機系統的基層學習,我瞭解到一個程序是如何在計算機中存儲的,其中的數據又是怎樣在寄存器或棧又或者堆中存儲的,這些一切的一切,都是我在努力學習計算機組成原理後獲得的重要知識。
大一大二兩年接觸到不少課程,像C語言、數據結構、計算機系統基礎、軟件設計模式、計算機科學基礎等等專業課,都是技術層面上的專業課,在剛開始還不懂計算機時,覺得計算機課程非常無聊枯燥,天天對着一臺電腦,敲着鍵盤,盯着屏幕,日復一日得生活,而當我真正接觸到計算機時,我才知道計算機底層是多麼得奧妙,計算機全部的內部結構都有它必定的道理,每一個結構對應的功能都是很是有條理的。計算機專業是我喜歡的專業領域,由於它涵蓋的東西不少,多是其餘專業接觸不到同時很難理解,所以若是說高考再有一次機會選擇專業的話,我必定仍是會選計算機專業的。雖然計算機不是我擅長的專業,但倒是我喜歡的專業。若是個人技術學的夠好,可以有機會在騰訊的總部深圳去了解更多關於計算機的奧祕,我願意用更多的時間去了解它。前端的網頁設計是我一直想要學習的,若是能有一個好的前端技術支持的話,我想將個人好的設計理念運用在前端設計中,將個人想法和思考用網頁的形式表達出來。html
大一大二這兩年裏,我學到了不少知識,除了學習計算機的部分語言(C、C#、Java)外,還學了一點專爲web網頁設計的腳本語言HTML,爲了將網頁作的更加美觀大方,又去學習了HTML五、CSS3和JavaScript,學習了這三種腳本語言後,我可以本身獨立的完成一個簡單的網頁設計,好比說,登錄註冊界面、導航欄、下拉列表等一些經過js渲染事後的功能更加多的簡單界面。好比登錄註冊界面選擇使用郵箱驗證或者添加驗證碼來確保用戶的真實信息等驗證方法。爲簡化 JavaScript 編程,我又去學習了jQuery,它封裝JavaScript經常使用的功能代碼,提供一種簡便的JavaScript設計模式,優化HTML文檔操做、事件處理、動畫設計和Ajax交互,具備高效靈活的css選擇器,而且可對CSS選擇器進行擴展,極大簡化了JavaScript的書寫,用起來很是方便。爲了加快網頁的開發效率,我又去學習了Bootstrap框架,Bootstrap框架提供了優雅的HTML和CSS規範,它便是由動態CSS語言Less寫成。它包含了豐富的Web組件,根據這些組件,能夠快速的搭建一個漂亮、功能完備的網站。並且,Bootstrap自帶了13個jQuery插件,對於jQuery的使用,大大加快了網頁的製做。利用Amazing UI跨屏前端框架,更好的瞭解到了網頁製做的樂趣。爲了學習這些web前端的網頁製做,我先要看網上的教程,但在看教程時,我都是用「意念「編程,不多去學習寫本身的網頁,所以當我真正作項目時,我才發現本身不能很流暢快速的寫代碼,所以我開始了學習web網頁製做的代碼之旅,雖然沒學多久,但如今的網頁製做的代碼量也應該有2000以上了。而我作過最複雜的項目則是作一個購物平臺,這個購物平臺不僅是靜態的展現商品,還要動態的從數據庫中添加商品信息到網頁上,並以動態的形式展示出來,出來登錄註冊界面,還要添加商品展現的主界面,每一個商品詳情信息頁面,購物車的信息頁面,每一個商品的分類等一系列的頁面,而購物車不只須要展現個人訂單管理,還要實現數據的增刪改查等功能,難度確實有點大。若要成爲一個合格的本科畢業生,在專業知識、技能、能力上還要有很大的提高。好比說數據庫的運用。當今社會是一個數據量繁重的人工智能時代,而數據除了相互要增刪改查等功能,並且還須要最重要的一點,怎樣去安全的存儲這些數據是咱們須要解決的,所以這學期的目標是但願可以努力將數據庫學好,可以很好的利用數據庫爲咱們作事。一些技術上的知識也還有不少沒有學,所以,除了數據庫之外,我還應該學習有關web網頁的其餘知識,爲本身可以快速有效的作出一個優秀的網頁而努力。前端
我多是一個搖擺不定的人,大一時,目標明確,一心想要開始工做,想着大學畢業後就能找到一份和專業對口的薪酬不錯的工做。大一結束後仍是秉承着畢業就找工做的宗旨,可到了大一暑假實訓才發現本身的能力是多麼的弱,和班上的同窗一比較,就發現本身在專業技術上不達標,一些專業知識也只是學了皮毛,根本沒有深刻了解,所以個人選擇發生了變化 -- 想要考取公務員,獲得一個穩定的工做,安安穩穩度過一輩子。但上了大二,我努力學習專業知識後,才發現計算機的專業知識沒有我想象中的那麼難,只要認真努力肯下功夫肯花時間就必定能學好,所以大二時,我又選擇就業。如今,大三了,我對計算機又有了一個新的認識。計算機是一門新興的學科,因爲以前大一大二花費在專業課上的時間不多,使得個人計算機代碼方面很弱,而高度的考研複習階段能夠幫助本身把大一大二浪費的專業課時間補出來,若是能考上研究生,就能在研究生的這段時間裏更好的瞭解計算機,學習計算的內部結構和組成原理,加強對計算機的認識,固然也能夠在研究生這三年裏把握當今計算機行業局勢,跟隨潮流的變化,把本身學的更增強大,爲本身就業作準備。由於個人邏輯推理能力和算法能力比較好,並且能在短期內接受新興事物,所以我以爲本身能夠嘗試一下考研。爲了順利考上研究生,我須要在大三這一全年裏開始着手準備數學、英語、思想政治、專業課。由於學習英語是個長期的積累過程,所以如今就能夠開始英語的複習了,而數學科目包括高數、現代、機率統計,這些科目也都須要大量的時間去學習,而思想政治對於咱們理工科的學生們來講,可能須要的也仍是時間,合理運用這些時間,爭取考個好的成績,報考好的大學,不負這些年的準備。若是能考上研究生,我想學習web前端頁面的設計,作一個平面UI設計師,這是個人夢想,也是我要努力的方向,爲了實現它,我更應該好好努力,一步一個腳印,不要急功近利。首先我須要努力奮鬥一年考上研究生,考上研究生後,學會合理利用本身的零碎時間,一步一步充實本身,最後實現本身的夢想。jquery
學習了《構建之法》這本書,我瞭解了不少有關軟件工程的模式,文檔的做用是咱們軟件開發者的很是重要的一點。何爲軟件,軟件就是程序加上相關文件,按照特定順序組織的計算機數據和指令的集合。由於鄒欣老師的這本《構建之法》,讓我對程序,軟件、軟件工程、文檔、團隊合做、敏捷開發有了更深一步的瞭解。但仍是有些不懂得地方:linux
敏捷開發是一種新型軟件開發方法,也是一種能應對快速變化需求的軟件開發能力。敏捷開發(AgileDevelopment)是一種以人爲核心、迭代、按部就班的開發方法。它不是一門技術,它是一種開發方法,也就是一種軟件開發的流程,它會指導咱們用規定的環節去 一步一步完成項目的開發;而這種開發方式的主要驅動核心是人;它採用的是迭代式開發。敏捷開發須要每日例會,須要團隊每一個成員在同一時間,同一地點,在相同的地方面對面開會彙報昨天或者當天所作的工做量。但若是 團隊成員不能知足以上條件,那怎麼辦?敏捷每日例會的要求達不到,不能面對面溝通,不能瞭解其餘人在作什麼,當前項目計劃進展如何,是否遇到了問題,減小了發現問題的機會,這個時候又該怎麼作?而書上113頁只提到了這個問題,卻沒有明確的指出該問題的解決方法。雖然須要文檔和其餘輔助工具的幫助,但若是長期不能面對面交流又該怎樣解決?git
需求分析也稱爲軟件需求分析、系統需求分析或需求分析工程等,是開發人員通過深刻細緻的調研和分析,準確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化爲完整的需求定義,從而肯定系統必須作什麼的過程。 但需求分析是軟件開發中很是重要的一步,若咱們的開發模型是按照瀑布開發模型開發的,若咱們對用戶需求沒有一個好的認識和了解,等軟件開發完成後,用戶不能按照本身期待的軟件功能,下降了用戶滿意度,可能致使後面不少補課預料的結果。所以,如何在咱們軟件開發前能更好的瞭解用戶的需求?書中P151中提到軟件團隊能夠分析技術的發展趨勢以及產業的變化,社會的發展趨勢,推測用戶的新需求。那麼應該怎樣設身處地,替用戶着想引出用戶需求呢?咱們又該如何掌握用戶的新需求?若是軟件開發不能一次性知足全部的利益相關者的要求,那咱們又應該怎麼作呢?需求分析相關資料github
一個項目經理能正確的協調團隊內部外部,調配各部門資源和時間,有效的進行風險管理,保證一個項目順利按計劃結項,根據時長和用戶需求,協調各部門資源,正確的把我產品的定位和方向,解決用戶的痛點,持續優化產品。教材P188頁針對項目經理PM須要的能力進行了分析:觀察、理解和快速學習能力;分析管理能力;必定的專業能力。這些能力都是一個項目經理必不可少的能力要求,但我認爲一個優秀的項目經理應該具有更多的能力,如:
1.應變能力:應變能力是指天然人或法人在外界事物發生改變時,所作出的反應,多是本能的,也多是通過大量思考過程後,所作出的決策,對於一個好的項目經理,應該具備隨機應變的應變能力以適應當前社會的變化;
2.影響力:一個良好的影響力,不只能增長團隊成員對項目經理的信服力,還能讓團隊成員將項目經理所提出的建議放在心上,並付諸實踐。
3.項目經理要與明確的目標定位和總體意識。項目是一個錯綜複雜的總體,它可能含有多個分項工程、分部工程、單位工程,若是對整個項目沒有目標定位和總體意識,勢必會顧此失彼。web
根據書上Stone網站中賣家吳石頭經過他兒子吳小石頭在網站上賣石頭的例子告訴咱們,軟件不是爲全部人服務的,因從小部分出發,明確的定義誰是咱們的用戶,最後肯定咱們的用戶羣體(簡稱典型用戶)。利用 吳小石頭和劉蘭的故事,告訴咱們場景的不一樣之處。可是,場景應該怎麼區分?怎樣找到場景的特殊之處?怎樣重點描述場景中的特殊因素?這個場景如何讓用戶滿意?P213中經過講簡單的故事來傳遞信息,那麼,怎樣講故事?講故事的技巧又是什麼?P214中「增量開發,逐漸構件整個系統"中的」增量開發「又是什麼?如何作到增量開發?增量開發的優缺點?爲何不能用瀑布開發?原型開發?它們之間的區別又是什麼?(資料詳看:增量開發 瀑布模型、增量開發、原型化開發、統一過程模型(RUP)之間的區別)算法
表達數據的流動(Data Flow Diagram)簡稱DFD。DFD從數據傳遞和加工角度,以圖形方式來表達系統的邏輯功能、數據在系統內部的邏輯流向和邏輯變換過程,是結構化系統分析方法的主要表達工具及用於表示軟件模型的一種圖示方法。如書中P227頁所示,當咱們關注數據在不一樣的實體之間依賴必定的規則流動的時候,DFD是一個很是合適的工具。P228中提到,DFD能夠將數據分紅不少不一樣的數據流,若是將數據的操做進一步細分,又會造成一個新的、更低層次的DFD,這些數據流能引導設計者全面設計系統的信息處理流程。可是,怎樣合理的將數據中的數據進行劃分來表示不一樣數據的流動?又怎樣將已劃分的數據流進行再一次的細分以獲得安全的系統設計?若盲目的胡亂劃分出現了嚴重的後果後又該如何去作?數據庫
源程序版本管理也稱源代碼版本控制,源代碼版本控制的基本原理以下:
在服務器端創建該項目的數據庫,並保存你選定的項目源文件的第一個版本。客戶端任一用戶要得到某源文件的修改權利,需進行check out操做。以後客戶端通常每完成一個無編譯錯誤的版本想保存的時候,進行check in操做,將當前版本保存在服務器端上併成爲最新版本(注:不是覆蓋之前的)。任一客戶端能夠方便地獲得服務器上的文件的任意版本(若是有權限的話)。通常還實現了一個重要的功能是版本比較,任一客戶端能夠利用版本控制工具對某文件的不一樣版本進行版本比較,它會標記出不一樣版本的同名文件的不一樣點,能夠輕易地看出版本內容的演化。
若是沒有軟件版本管理,最大的麻煩是工做成果沒法回溯,發生工做成果被覆蓋或丟失等問題。隨着工做的進展新的程序覆蓋了老的程序,當忽然發現新程序有問題而老程序正確時怎麼辦?那隻能重寫老的程序來覆蓋新的程序。過一段時間又發現原來的老程序有問題,而解決方法在原來的新程序中……爲了不成果被覆蓋,不少人早期採用手工管理版本的方式,例如當一個新版本產生時用當時的日期來命名文件夾,而後再複製一下之後的修改在複製的文件夾內進行,這樣上一個版本就被保存下來了,周而復始不一樣的版本不會被覆蓋。
1.若是保留結果過於頻繁,將會致使產生大量的有着重複內容的文件夾,龐大的物理空間,管理起來很麻煩;
2.若是保留舊版本的時間間隔太長,可能產生某些有用的老程序沒法回溯;
3.容易產生版本的混亂,若是是團隊開發軟件,這種簡單的方法更難解決問題的本質了。
軟件研發和管理過程當中會產生許許多多的工做成果,例如文檔、程序和數據等,都應當妥善地保管起來,以便查閱和修改。若是把全部文件一股腦的塞進計算機裏,那麼使用起來很麻煩。
凡是歸入版本管理範疇的工做成果統稱爲配置項主要有兩大類:
1.屬於產品的組成部分,例如需求文檔、設計文檔、源代碼、測試用例等等;
2.在管理過程當中產生的文檔,例如各類計劃、報告等。每一個配置項的主要屬性有名稱、標識符、文件狀態、版本、做者、日期等。配置項及歷史紀錄反映了軟件的演化過程。
版本控制的目的是按照必定的規則保存配置項的全部版本,避免發生版本丟失或混亂等現象。配置項的狀態有三種:「草稿」、「正式發佈」和「正在修改」
配置項的版本號與配置項的狀態緊密相關:
(1) 處於「草稿」狀態的配置項的版本號格式爲:0.Y.Z
(2) 處於「正式發佈」狀態的配置項的版本號格式爲:X.Y。 通常只是Y值遞增,當Y值到達必定的範圍時X值才發生變化。
(3) 處於「正在修改」狀態的配置項的版本號格式爲:X.Y.Z。 通常只增大Z值,當配置項修改完畢,狀態從新變成「正式發佈」時,將Z值變爲0,增長X.Y值。
項目管理軟件是指專門用來幫助計劃和控制項目資源、成本與進度的計算機應用程序。主要用於收集、綜合和分發項目管理過程的輸入和輸出。傳統項目管理軟件包括時間進度計劃、成本控制、資源調度和圖形報表輸出等功能模塊,但從項目管理的內容出發,還應包括合同管理、採購管理、風險管理、質量管理、索賠管理、組織管理等功能。若是把這些軟件功能集成、整合在一塊兒,即構成項目管理信息系統。
優勢:
1.Github支持多人同時維護龐大的開源代碼(linux),因此它的分支能力強大,體驗好。
2.Github除了基本的服務之外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協做圖譜(報表)、代碼片斷分享(Gist)等功能。
3.Github使用的基於Web的代碼託管服務.
4.Github支持離線提交,分佈式推送拉取,使得代碼層面的協做至關流暢。
缺點:
1.Github提交大文件沒法成功
2.Github不是捕捉創意過程和記錄創意點子的最佳工具
優勢:
1.Microsoft TFS是一個團隊工具,貫穿需求,開發,測試,發佈各個流程提供自動化工具。(與開發工具無縫集成)
2.Microsoft TFS提供源代碼管理、 數據收集、 報告和項目跟蹤(與Project工具集成,方便任務跟蹤)。
3.Microsoft TFS內置BUG管理工具,提升開發效率
4.開箱即用的Microsoft TFS就集成的自動生成和發佈功能。能夠實現修改代碼之後,生成和發佈自動完成。
5.Microsoft TFS的全部源代碼和版本信息都存儲在數據庫中,在大型軟件研發團隊中,能夠大幅提高數據的查詢和存儲速度。同時,基於數據庫存儲,系統管理員能夠方便的備份和還原Microsoft TFS中的任何數據。
缺點:
優勢:
1.Bitbucket免費支持私有倉庫,提交大文件時速度很快,並且私人項目免費,且不限容量
2.Bitbucket無限制的磁盤空間
3.Bitbucket靈活的權限控制、Bug 跟蹤等優勢
缺點: 1.Bitbucket不開源