2019本科se第一次做業-20194608王嘉悅

1.1軟件=程序+軟件工程

  本章中出現的計算機專業術語:

  源程序、軟件架構(Software Architecture)、軟件設計與實現(Software Design,Implementation and Debug)編程

  源代碼管理(Source Code Control)、配置管理(Software Configuration Management)微信

  質量保障(Quality Assurance)、軟件測試(Test)網絡

  需求分析(Requirement Analysis)、程序理解(Program Comprehension)架構

  軟件維護(Software Maintenance)、服務運營(Service Operation)工具

  軟件的生命週期(Software Life Cycle, SLC)學習

  軟件項目的管理(Project Management)、用戶體驗(User Experience)測試

  國際化與本地化(Globalization & Localization)網站

 

  對於一個軟件其最基本的是源程序,但一個好的軟件不僅僅要有一個較爲完整的源程序代碼還有有着必定量的用戶和需求。ui

  軟甲開發還分不少不一樣的階段:spa

  在本章中筆者列舉了四個階段:

  一、玩具階段:該階段製做出的程序出現的問題只會影響到自身並不會對他人形成影響。

  二、業餘愛好階段:該階段成功與否會影響到的是一我的對於編程方面得興趣。

  三、探索階段:該階段是前人成功和失敗遺留下來的能夠供後人參考的經驗,同時又有着劃時代的意義,表明了新的開始。

  四、成熟的產業階段:該階段生產出的軟件若是出現某些錯誤可能會影響到一家公司甚至一個行業的挫折與失敗,進而致使不少人收到波及。

  商業軟件和業餘愛好者程序的區別:商用軟件通常考慮的較爲全面,即便有萬分之一的可能性都會區考慮到;而業餘愛好者編程出的軟件則引用了機率的問題,節省時間和成原本寫出可執行的程序。

1.2軟件工程是什麼

  一、軟件工程是把系統的、有序的、可量化的方法應用到1軟件的開發、運營和維護上的過程。

 

  二、軟件工程包括如下領域:軟件需求分析、軟件設計、軟件構建、軟件測試、軟件維護

  三、軟件工程和下列學科相關;計算機科學、計算機工程、管理學、數學、項目管理學、質量管理、軟件人體工學、系統工程、工業設計和用戶體驗設計。

  我的的理解就是把無序變爲有序即爲軟件工程的核心所在。

1.2.1軟件的特殊性

  軟件有各類各樣的分類方法,下面就是軟件分類其中一種方法:

  • 系統軟件:操做系統、設備驅動程序、工具軟件等
  • 應用軟件:用戶使用它們來完成工做,從管理核電廠到寫文章,或者是通訊、遊戲、瀏覽網頁、播放視頻等
  • 惡意軟件:軟件病毒等

  軟件的發展會隨着人類社會的發展進步而發展。

  爲何近年來計算機硬件能力飛速發展,而軟件開發流程卻沒有這樣的提速過程而且開發成本也沒有下降:

  一、複雜性(Complexit):軟件能夠說是人類創造的最複雜的系統類型。而對於理解這些的人的智力和記憶力並不會像電腦硬件同樣飛速發展。

  二、不可見性(Invisibility):軟件工程師能直接看見源代碼,可是源代碼不是軟件自己。對於工程師他們能夠看到軟件出現錯誤遺留下的痕跡,

  可是沒法具體明確當時到底發生了什麼,這對於問題的修復能夠說是一個巨大的阻礙。

  三、易變性(Changeability):軟件看上去很容易修改,修改軟件比修改硬件容易多了。人期待軟件能夠去適應新的事物,可是正確修改軟件使其能達到目的是一件很是困難的事情。

  四、服從性(Conformity):軟件不能獨立存在,它老是要運行在硬件上面。,它要服從系統中其餘組成部分的要求,他還要服從用戶的要求,行業系統的要求。

  五、非連續性(Discontinuity):人們比較容易理解連續的系統:增長輸入,就能看到相應的輸出的增長。可是不少軟件在輸入上有很小的變化,輸出時會有天壤之別的差距。

  就像著名的「沒有銀彈(No Silver Bullet)」論斷所闡述的道理同樣,即便網絡上出現了各類各樣的方便快捷的軟件開發流程,又或者出現的各大論壇都不是一個萬能的鑰匙。 

1.2.2軟件工程與計算機科學的關係

 

計算機科學

軟件工程

發現和研究長期的、客觀的真理

短時間的實際結果(具體的軟件會過期)

理想化的

對各類因素的折衷

肯定性,完美,通用性

對不肯定性和風險的管理,足夠好,具體的應用

各個學科獨立深人研究,作出成果

關注和應用各個相關學科的知識,解決問題

理論的統一

百花齊放的實踐方法

強調原創性

最好的、成熟的實踐方法

形式化,追求簡明的公式

在實踐中創建起來的靈感和直覺

正確性

可靠性

   人類要生存,人類文明須要發展,離不開思考、發現、構建

  • Build To Learn : 開發軟件,構建系統的目的是作進一 步的試驗,試圖發現客觀規律或探求某方法的優劣。這些項目常常是科研論文的基礎工做。
  • Build To Show:爲了突出地展示某個技術的做用,開發一些以演示爲目的的軟件,這些項目很吸引眼球,常常得到新聞報道,可是功能未必全面或實用。
  • Build To Serve:爲了服務-定範圍的目標用戶而構建的工具等,有時以公開SDK的形式發佈,讓別的研發人員使用。
  • Build To Win:以在市場上贏得用戶爲目標而構建的軟件。這也是種種科學發現、技術突破最好的試金石。這是我作得最多的項目類型,也是這本書的英文名字。

1.2.3軟件工程的知識領域

  生命週期:軟件需求、軟件設計、軟件構建、軟件測試、軟件維護

  專門領域:軟件配置管理、軟件工程管理、軟件工程過程、軟件工程模型和方法、軟件質量

  理論基礎:計算基礎、數學基礎、工程基礎

1.2.4軟件工程的目標——創造「足夠好」的軟件

  用戶滿意度:用戶在使用時發現了軟件的不少問題,影響了用戶使用軟件的效率。

  可靠性:某個軟件常常崩潰,某個操做系統時不時會死機,某個網站每每最須要的時候登不上去。

  軟件流程的質量:軟件團隊和開發流程的問題太多,致使團隊成員沒法相互協做,按時交付軟件。(軟件團隊最大的Bug)

  可維護性:某個軟件太難維護了,按下葫蘆起了瓢,修復一個問題,另外一個問題又出來了。

  軟件工程的目標不是作到完美而是作好。

1.3練習討論

  P18-2

  通讀本章我有以下幾個問題:

  一、現階段咱們到底是去作業餘愛好者仍是去作商用軟件開發者亦或是二者都不是(商用軟件通常考慮的較爲全面,即便有萬分之一的可能性都會區考慮到;

  而業餘愛好者編程出的軟件則引用了機率的問題,節省時間和成原本寫出可執行的程序。)

  二、一個好的軟件的開發每每離不開一整個團隊的配合,做者將軟件開發團隊比做球隊,其中每個人各司其職,可是這樣的一個團隊每每須要多久的磨合期,

  上網去查閱資料獲得的答案差距甚大,幾周幾個月甚至論年來算的都有。

  三、對於軟件工程這一行業,將來是否須要由一個技術性人才去往管理方面發展,這個問題不是在書中明確寫道的,知識在讀書時候忽然出現的一個想法,去查詢資料

  各類各樣的說法也都有,有的說技術才能纔是本錢,有的說一個程序工程師到了40歲就是一大關,不少人都要去往管理方面轉型。

  四、若是團隊之中工程即將結束,這時候團隊出現了問題致使工程沒法繼續進行這時候應該怎麼作,這個問題上網查閱並無太大的收穫,網上和書上都沒有太仔細寫這方面的內容

  五、咱們究竟應該把用戶想一想成爲一個什麼樣子的人,書上第十二章說到,咱們以爲用戶會懂每每他們不會,可是具體有沒有明確的說,到底該去怎樣理解用戶和他們的需求。

  P18-3

  我手機上的各類軟件

  通信軟件:騰訊QQ、微信

  學習軟件:樂詞、有道詞典

  音樂軟件:QQ音樂、網易雲音樂

  購物軟件:淘寶,京東,閒魚

  視頻軟件:BILIBILI、抖音、愛奇藝

  遊戲軟件:王者榮耀、忍者必須死3

  其餘交互軟件:微博,貼吧

 

  軟件總結:

  這些軟件讓我下載的緣由:由於我我的的需求,以及其餘人的要求。

  目標:多數的軟件都是以盈利爲目的,盈利的手段有的是下載收費,有的是內置收費,有的收取廣告費,而有少部分軟件則以宣傳爲目的。並且因爲目前電子現金較爲發達,消費方式多以電子現金。

  如何到我手上的:大部分是自行下載的,少部分是手機內置,還有一部分是經過別人推薦而後傳過來的。

  使用感受:不一樣的時候須要的軟件也不一樣,用起來順手的會留下,很差的會卸載。

  處理Bug以及更新版本:經過維護而後對這個軟件進行打補丁,有的是強制的有的是可讓用戶自行選擇。

  同一類軟件如何競爭的:前期經過宣傳吸引大批關注者,然後鼓勵玩家幫助他們進行宣傳,好比給出優惠或者福利,而後開始公測,經過進一步的宣傳吸引大批用戶。

相關文章
相關標籤/搜索