(一)《構建之法——現代軟件工程》編程
第一章 概論 (計算機相關術語整理)微信
1.1 軟件=程序+軟件工程架構
程序在這裏指源程序,程序還要對數據進行操做,這些操做有時候是靜態的,有時候是動態的。可是光有代碼和靜態數據還不行,工程師要把它們構建成機器能懂的可執行代碼。構建不只僅是cc和link命令,一個複雜的軟件不但要有合理的軟件架構(Software Architecture)、軟件設計與實現(Software Design,Implementation and Debug)、還要有各類文件和數據來描述各個程序文件之間的依賴關係、編譯參數、連接參數等等,這些都是構建的過程。編輯器
怎麼保證軟件在修改過程當中質量不斷提升,至少要維持之前的質量的問題被稱爲源代碼管理(Source Code Control)又叫 配置管理(Software Configuration Management)函數
用一系列高質量的工具、流程、文檔來保證程序的正確性,這就是 質量保障(Quality Assurance),具體的驗證過程叫作軟件測試(Test)工具
把合適的需求梳理出來,而後逐步展開後續工做被叫作需求分析(Requirment Analysis)單元測試
團體裏的新成員要儘快讀懂已有的程序,瞭解程序的設計,這叫 程序理解(Program Conprehension)學習
軟件運行過程當中還會出現這樣那樣的問題,咱們要時不時的給軟件打一個補丁,或者維護衆多的服務,團隊的新老成員要一塊兒修復各類各樣的問題,這叫服務運營(Service Operation)
測試
以上一系列的過程就是軟件的生命週期(Software Life Cycle,SLC)
字體
在這一週期中,有人得負責軟件項目的管理(Project Management)、
一個好的軟件,即便功能和同類軟件區別不大,但卻會讓人感受到很是好用,這就是用戶體驗(User Experience)
軟件還要處理不一樣語言、不一樣地區的用戶對界面和功能的不一樣需求,這叫軟件的國際化和本土化(Globalization&Localization)
廣義上的軟件工程也包括用戶體驗、用戶界面設計(User Interface Design)等
軟件=程序+軟件工程、
軟件企業=軟件+商業模式
軟件開發的不一樣階段:
- 玩具階段
- 業餘愛好階段
- 探索階段
- 成熟的產業階段
1.2 軟件工程是什麼
軟件工程師把系統的有序的,可量化的方法應用到軟件的開發、運營和維護上的過程
軟件工程包括下列領域:軟件需求分析、軟件設計、軟件構件、軟件測試、軟件維護
人們在開發、運營、維護軟件的過程當中有不少技術、作法、習慣和思想體系,將這些相關的技術和過程統一到一個體系中,叫作軟件開發流程
軟件工具:編譯工具、源代碼管理工具、源代碼編輯工具、軟件工具系統(Microsoft Visual Studio、GitHub、Eclipse、CLearCase、ClearQuest等)
1.2.1軟件工程的特殊性
軟件分類方法:
軟件開發過程難點:
1.2.2軟件工程與計算機科學的關係
計算機科學 | 軟件工程 |
發現和研究長期的客觀的真理 | 短時間的實際結果(具體的軟件會過期) |
理想化的 | 對各類因素的折衷 |
肯定性、完美、通用性 | 對不肯定性和風險的管理,足夠好,具體的應用 |
各個學科獨立深刻研究,作出成果 | 關注和應用各個相關學科的知識,解決問題 |
理論的統一 | 百花齊放的實踐方法 |
強調原創性 | 最好的、成熟的實踐方法 |
形式化,追求簡明的公式 | 在實踐中創建起來的靈感和直覺 |
正確性 | 可靠性 |
1.2.3 軟件工程的知識領域
生命週期:
軟件需求、軟件設計、軟件構建、軟件測試、軟件維護
專門領域:
軟件配置管理、軟件工程管理、軟件工程過程、軟件工程模型和方法、軟件質量
理論基礎:
計算基礎、數學基礎、工程基礎
1.2.4 軟件工程的目標——創造「足夠好」的軟件
所謂好軟件,就是沒有缺陷(Bug)
所謂軟件工程,就是把軟件中的Bug都消滅的過程。
Bug的多少能夠直接衡量一個軟件的開發效率、用戶滿意度、可靠性和可維護性
————————————————————————————————————————
(二)P18-2
1.在P27中有一句話,「爲了保證代碼覆蓋率,單元測試必須測試公開的和私有的函數\方法,」對此,我有一點疑惑,對於須要進行單元測試的代碼,咱們應該怎樣選擇進行代碼覆蓋的方法,而且可以保證其代碼覆蓋率達到100%而且涵蓋全部可能性?
2.書中P68中 「註釋(包括全部源代碼)應該只用ASCII字符,不要用中文或者其餘特殊字符,不然會極大的影響程序的可移植性。」但後文中有提到「在現代編程環境中,程序編輯器能夠設置各類美觀得體的字體"若是用中文或其餘特殊字符會影響程序的移植性,爲何現代編程環境還要容許設置各類字體?雖然極大的方便了人們的閱讀和修改,但對於程序自己有影響的作法就應該提倡嗎?或者在現代編程環境中能夠作到忽略其影響?
3.書中P76中提到」作標記是一個不錯的方法,可是若是開發者光記得作標記,最後卻沒有真正去研究和改正這些潛在的問題……「這裏做者表達的意思是否支持作標記這一方法?我以爲是否能夠經過其餘的標記形式來簡化標記含義,從而達到高效快速的目的,從而有時間去考慮對於潛在問題的優化和改進。
4.P77 設計規範部分中 我認爲注意事項裏是否能夠加入「代碼功能是否可以兼容各大主流平臺」這一條內容,以及第五條中」由於源代碼控制已經保存了原來的老代碼「這句話的意思是什麼?是這些被註釋掉的代碼在源代碼中都有記錄不須要在後續相關代碼中展示,仍是說僅僅是保留了目前有用的代碼?
————————————————————————————————————————
(三)P18-3
工具軟件:畫圖、WPS Office、應用寶、高德地圖、去哪兒旅行、滴滴出行、交通銀行、中國工商銀行、工銀e融聯、中國銀行、課程格子、c語言編譯器、訊飛輸入法、周公解夢、計算器、掌上WeGame、百度網盤、百度文庫、qq郵箱、濱州掌上公交、碼碼通、網喵、U淨、美柚、薄荷健康、知網、百度貼吧、有道翻譯官
購物消費:餓了麼、支付寶、手機淘寶、美團、閒魚、省錢快報、網易考拉、
社交軟件:qq、微信、微博
音樂軟件:網易雲音樂、喜馬拉雅FM、酷狗音樂、全民K歌、唱鴨
娛樂軟件:嗶哩嗶哩、愛奇藝、騰訊視頻、芒果TV、韓劇TV、抖音、B612咔嘰
學習軟件:知乎、中國大學MOOC、運動世界校園、駕考精靈、考研幫、扇貝單詞、網易有道詞典、
閱讀軟件:今日頭條、書旗小說、晉江小說、
遊戲軟件:掃雷、布林機、開心消消樂
對於微信的分析
1)界面簡潔、私密性高,最開始並不以盈利爲目的,僅僅爲了提供一個免費的即時通信服務
2)經過下載得到該軟件,當時在上初中,使用下來感受對於傳輸文件這方面還不是很方便,QQ相對而言作得更好一些,並且在登錄帳號這一方面有很大限制,不過在社交通信這一方面給人的使用感仍是很不錯的。
3)經過接受用戶反饋意見及建議上傳至後臺處理,系統會自動更新應用版本。
4)經過不斷更新新的功能,提升軟件的實用性、便利性來提升軟件的競爭力。