201771010142-張燕 實驗一 軟件工程準備—<軟件工程的初步瞭解和學習目標>

實驗一 軟件工程準備

||||||| |:--|:--| |項目|內容| |課程班級博客|https://edu.cnblogs.com/campus/xbsf/nwnu2020SE| |做業要求|https://www.cnblogs.com/nwnu-daizh/p/12369881.html| |課程學習目標|使用Markdown排版以寫博客形式來擬定3個準備從課程學習中找到答案的問題| |這個做業在哪些方面幫助我實現學習目標|自主提出問題並解答困惑的能力| |做業正文|①學習博客園軟件開發者學習社區使用技巧和經驗;②瞭解Github的基本操做| |參考文獻|①鄒欣. 構建之法—現代軟件工程[M]. 人民郵電出版社, 2014.②鄒欣老師博客| ###問題一 軟件工程是什麼? ####問 題 :在開始學習軟件工程這門課以前,我最想了解的是軟件工程這門課的性質,以及咱們學這門這門課的用處和意義是什麼? ####解決方案:我先經過學習老師給出的課件,對軟件工程的本質特性及其基本原理有了基本的瞭解,軟件工程包括技術和管理兩方面的內容,是技術與管理緊密結合所造成的工程學科和交叉學科。同時,我還學習了軟件工程方法學的三要素是方法,工具和過程。簡要總結三要素的基本解釋以下:html

  • 方法:完成軟件開發的各項任務的技術方法,回答「怎樣作」的問題。
  • 工具:爲運用方法而提供的自動的或半自動的軟件工程支撐環境。
  • 過程:爲了得到高質量的軟件所須要完成的一系列任務的框架,它規定了完成各項任務的工做步驟。 課件上的內容雖然專業,但語言不夠通俗易懂,我又去閱讀了鄒欣老師的相關博客,其中有篇文章《現代軟件工程講義 1 軟件工程概論》,下面這段話對軟件工程的核心部分作了詳細的解釋

程序,在這裏指的是源程序,就是一行一行的代碼。仔細看過去,它們的確是創建在數據結構上的一些算法。可是光有代碼仍是不行的,這些一行一行的代碼不會本身運行,得有人編譯成機器能懂的目標代碼,而編譯不只僅是 cc 和 link 命令,對於一個複雜的軟件,咱們不但要有合理的軟件架構(Software Architecture), 軟件設計和實現 (Software Design & Implementation), 咱們還要用各類文件來描述各個程序文件之間的依賴關係,編譯參數,連接參數,等等。這些都是軟件的構建。 軟件團隊的各我的員天天都在不斷地修改各類源代碼,怎麼保證軟件在不斷的修改中能保證質量,不至於崩潰? 有些時候,咱們要爲某個需求寫一些特殊功能,而後不久要把這些功能再合併回主要版本。有些程序還有32 位版本, 64位版本, 等等。 這是源代碼管理 (Source Code Control) 的問題 – 有時候也叫配置管理 (Software Configuration Management)。咱們還有一系列的工具和程序來保證程序的正確性,這些工具和程序自己應該更正確,才能保證別的軟件的質量,對麼? 這質量保證的工做叫Quality Assurance, 也叫軟件測試 (Testing). 一個軟件要有人買,就得先找到顧客,顧客有各類需求,有些靠譜,有些不靠譜,咱們要把這些靠譜的需求都實現了,一羣人要從需求分析 (Requirement Analysis) 開始,忙碌各類事情, 例如設計(軟件架構),實現(寫數據結構和算法),測試,到最後發佈軟件, 軟件在運行過程當中還會出這樣那樣的問題, 也許咱們要時不時給軟件打一個補丁, 這叫軟件的維護(Software Maintenance)。這一系列過程就是軟件的生命週期 (Software Life Cycle, SLC), 有人得負責軟件項目的管理 (Software Project Management)。git

上面的這些和軟件開發活動(構建管理源代碼管理軟件設計, 軟件測試項目管理)是軟件工程的核心部分。普遍意義上的軟件工程也包用戶體驗 (User Experience), 用戶界面設計 (User Interface Design) 等。因此,我以爲能夠理解爲:軟件 = 程序 + 軟件工程 一個擴展的理論是:軟件企業 = 軟件 + 商業模式 此外,我想知道咱們以前所學的計算機類課程和軟件工程課的不一樣在哪 ,託尼·霍爾關於計算機工程和軟件工程的不一樣側重點分析解答了我這一疑惑,以下圖所示: github

###問題二 軟件工程學習方法 ####問題:如今已經步入大三第二學期的學習,總結以前兩年半的學習,雖然學習了不少的專業課和實驗課,好像編程能力並無太大的提高。儘管有學過c語言和Java兩門編程語言,但只是瞭解了基本的算法和數據結構。尤爲是以前的不少課程設計要求作軟件時,不知從何下手,也不知道怎麼把學到的書面知識運用進去,只能參照別人的模板閱讀代碼作出修改。因此,針對本學期的軟件工程這門課,很想提高本身相應的代碼編寫及應用能力。 ####解決方案:所以,我去閱讀了鄒欣老師的相關文章,想了解這門課正確的學習方法和側重點,心裏有個基本的框架和認知。 其中,有篇文章《對大學 IT 專業教育的反饋》, 講到了爲何,學生上了不少課,反而以爲很迷茫,這些課的意義是什麼? 爲何有這麼多的原理,殊不知道我學的東西有什麼用,怎麼用。更不瞭解這些課程在實踐中的意義。咱們大多都是經過只有死記硬背來應付考試,考試後全忘記。IT 教育不光是代碼! 軟件教育不是孤立體,但願在軟件教育中把文科的知識聯繫進來,和設計聯繫起來; 把軟件/IT 行業有趣的發展歷史放進來。培養學生對這個行業的興趣、熱情和敏感。 提倡互動,介紹同窗上相關的論壇,網站,開拓視野。 其中有個關於軟件工程設計的三文魚模型,針對學校教育安排和企業要求的不一樣,爲提升學生的綜合能力提出的關於軟件工程授課的方法流程:算法

  • 開始維護之前同窗開發出來的程序,理解程序。
  • 找bug,改bug,重構小部分代碼,以知足用戶的需求。
  • 一部分同窗能夠開發測試用例
  • 在現有版本的基礎上作增量開發
    • a) 理解需求 (這個時候理解了客戶需求是什麼)
    • b) 設計
    • c) 開發
    • d) 迴歸測試 (用到上面開發的測試用例來保證軟件質量)

###問題三 關於團隊項目分工問題的疑問 ####問題:上了大學以後,最深入的感覺就是除了要提升實踐能力以外,必不可少的還有對團隊協做能力的考覈和提高。基本全部課的課程設計都是經過分組的形式去完成,老師的想法是經過分組的方法能夠提高咱們的團隊協做能力而且能夠提高項目的質量。但就我本身而言,這方面的能力並未獲得太大的提高其中主要存在兩方面的問題。編程

  • ####①不知道該如何協調分工合做的問題,即分工合做的不明確。
  • ####②在協做的過程當中,總會出現較多的問題和矛盾,不知道該怎樣去協調處理。即團隊成員之間不可避免的矛盾衝突。

####解決方案:我但願能夠在這門課的學習中,能夠對團隊項目分工問題獲得相應的解決,可以在之後的項目設計中對大概的框架和每一步的計劃都有較爲合理並明確的計劃分工。所以,我去學習參考了鄒欣老師的博客,但願從中找到對本身這個疑惑的解答。其中有篇文章《現代軟件工程講義 11 項目管理 - 過後諸葛亮會議》,有一個現代軟件工程 項目Postmortem 模板詳細的介紹了軟件設計中分工合做的內容,以下所示: 設想和目標數據結構

  • 咱們的軟件要解決什麼問題?是否認義得很清楚?是否對典型用戶和典型場景有清晰的描述?
  • 咱們達到目標了麼(原計劃的功能作到了幾個? 按照原計劃交付時間交付了麼? 原計劃達到的用戶數量達到了麼?)
  • 和上一個階段相比,團隊軟件工程的質量提升了麼? 在什麼地方有提升,具體提升了多少,如何衡量的?
  • 用戶量, 用戶對重要功能的接受程度和咱們事先的預想一致麼? 咱們離目標更近了麼?

團隊的角色,管理,合做架構

  • 團隊的每一個角色是如何肯定的,是否是人盡其才?
  • 團隊成員之間有互相幫助麼?
  • 當出現項目管理、合做方面的問題時,團隊成員如何解決問題?
  • 有什麼經驗教訓? 若是歷史重來一遍, 咱們會作什麼改進?

這些問題對我有很大的幫助,尤爲是設想和目標解答了我對項目初期如何合理地制定計劃的困惑,首先必定要從軟件自己出發,對要解決的問題,需求,目標等作深刻的分析討論。我仔細對比思考了以前分工合做時存在的問題,所暴露出來的分工合做的不明確以及不可避免的衝突矛盾這兩類問題。我我的以爲,最後產生的衝突矛盾很大一部分是由於前期分工合做存在必定的不合理,所以我認爲在項目制定初期,具體的任務分配要考慮到每一個成員的可能性和優點,作到人盡其才,獲得一個較爲合理的安排。此外,在項目推進的過程當中,最重要的是溝通交流,一旦出現問題要及時的和團隊成員反饋,虛心接受意見並作出改變,團隊成員之間還要可以互幫互助,盡力去推進項目的完成。但願在之後進行設計的時候,可以把這些想法都落實,逐漸提高團隊協做方面的能力。 ###總結 這是軟件工程這門課的第一個實驗,首先進行了博客園班級加入,github的註冊及基本功能的瞭解這些基本的準備。此外,以前雖然有博客園的使用經驗,但Markdown寫博客是第一次實踐,經過結合老師給的基本功能的介紹和實踐,對Markdown寫博客這個方法已經有了更多的使用經驗,體會到了Markdown工具帶來的便利和頁面美觀性的提高。 這次實驗最重要的就是瀏覽鄒欣老師博客,參照參考文章的提問模板,擬定了3個準備從課程學習中找到答案的問題。我經過結合老師給出的課件和鄒欣老師的相關博客,對這門課有了大概的構想並作出了三個想從課程學習中獲得問題的答案。在這個過程當中,最重要的是提出問題的過程,由於以前的學習太沒作過這樣的訓練,我深入感覺到了這種提出問題能力的重要性。經過自主思考解答困惑是一個逐漸進步的過程,隨着不斷提出新的問題,通過主動思考以後,可以解答本身的困惑,這樣的提問對培養思考能力會很是有價值,之後會按照這種思惟去處理更多的問題。框架

相關文章
相關標籤/搜索