專業(yè)導(dǎo)論課的目的是將學(xué)生引入軟件工程專業(yè),并對軟件工程專業(yè)產(chǎn)生濃厚的學(xué)習(xí)興趣,激勵(lì)學(xué)生成為本專業(yè)的高級(jí)人才。本課程是對四年本科學(xué)習(xí)內(nèi)容的引導(dǎo),而不是對某一門課的引導(dǎo)。對此,需要從計(jì)算機(jī)、編程語言、軟件項(xiàng)目開發(fā)、數(shù)字通信網(wǎng)絡(luò)、數(shù)據(jù)與信息處理、音視頻與計(jì)算機(jī)圖形學(xué)、機(jī)器與智能等歷史發(fā)展的角度進(jìn)行論述和引導(dǎo),讓學(xué)生從100多年前的計(jì)算技術(shù)歷史快速地進(jìn)入當(dāng)今社會(huì),并具備面向未來的人工智能和智能制造的眼光,引導(dǎo)學(xué)生能夠從軟件產(chǎn)業(yè)和人才發(fā)展的角度思考自己今后的學(xué)習(xí)與工作。
《軟件工程專業(yè)導(dǎo)論》分為9章正文和4個(gè)附錄。
編寫本書的目的是讓大學(xué)新生快速地了解計(jì)算機(jī)、通信、信息和軟件工程產(chǎn)業(yè)的相關(guān)知識(shí),引發(fā)其對編程和組織小組進(jìn)行軟件開發(fā)的興趣,為后續(xù)理論課、實(shí)驗(yàn)課以及創(chuàng)新創(chuàng)業(yè)等工程活動(dòng)拓寬知識(shí)面,從而培養(yǎng)學(xué)生主動(dòng)學(xué)習(xí)和創(chuàng)新實(shí)踐的能力。
第1章以數(shù)的進(jìn)制開始,講述了人類從手寫計(jì)算到機(jī)械和電子計(jì)算裝置的發(fā)展過程,引發(fā)學(xué)生對自動(dòng)計(jì)算裝置的思考。討論了如何用數(shù)字電路實(shí)現(xiàn)邏輯運(yùn)算和算術(shù)運(yùn)算。
第2章從編程的要素出發(fā)討論了馮·諾依曼機(jī)器的結(jié)構(gòu),說明了集成電路計(jì)算機(jī)器的基本原理,進(jìn)一步探索了量子計(jì)算機(jī)器的原理,引出了系統(tǒng)軟件和應(yīng)用軟件的分類。
第3章,從機(jī)器語言和匯編語言人手,討論了高級(jí)編程語言的基本特征和發(fā)展歷史,論述了多種基本數(shù)據(jù)類型和浮點(diǎn)數(shù)的表達(dá),進(jìn)一步講述了數(shù)組、結(jié)構(gòu)體、對象等復(fù)雜數(shù)據(jù)的表達(dá),引發(fā)學(xué)生創(chuàng)立更高效、更安全的編程語言。
第4章,講述了軟件開發(fā)的集成環(huán)境,論述了操作系統(tǒng)和庫函數(shù)的作用,簡述了移動(dòng)終端和嵌入式開發(fā)的過程,討論了個(gè)體程序員能力的局限性,引導(dǎo)出小組開發(fā)、大型程序開發(fā)的瀑布式和迭代式過程。
第5章的基本觀點(diǎn)是“通信也是計(jì)算”。本章從電報(bào)通信與字符編碼出發(fā),以直觀的郵政通信和傳統(tǒng)的電話交換為例,引導(dǎo)出數(shù)據(jù)包交換的基本原理,討論了基于包交換的互聯(lián)網(wǎng)的構(gòu)成、產(chǎn)業(yè)化和管理問題,進(jìn)一步引出“軟件定義的網(wǎng)絡(luò)”的發(fā)展。
第6章主要呈現(xiàn)的是“數(shù)據(jù)管理和信息交流也是軟件”的主題。本章從學(xué)生信息的表格化(即結(jié)構(gòu)化)管理出發(fā),引出關(guān)系代數(shù)和數(shù)據(jù)庫管理系統(tǒng)。本章還介紹了信息蜘蛛網(wǎng)(Web)的概念,給出了萬維網(wǎng)的發(fā)展和產(chǎn)業(yè)歷程。通過對結(jié)構(gòu)化和非結(jié)構(gòu)化信息的對比,引出了信息通信中信息量的測量問題。
第7章的主題是“音頻與視覺空間也是軟件”。本章從聲音和圖像數(shù)字化人手,討論了圖像和視頻的壓縮,引出了計(jì)算機(jī)圖形學(xué)和虛擬現(xiàn)實(shí)技術(shù)。進(jìn)一步討論了專用處理器的作用。以當(dāng)前常用的一維碼、二維碼、多維碼的發(fā)明和應(yīng)用為例,引導(dǎo)學(xué)生圍繞視覺空間的表達(dá)進(jìn)行發(fā)明創(chuàng)造。
第8章的主題是“機(jī)器與智能”,目的是引導(dǎo)學(xué)生用計(jì)算機(jī)硬件和軟件制造出人工的智能。本章從蒸汽機(jī)替代人的體力勞動(dòng)開始,引出如何用計(jì)算機(jī)程序替代人類的腦力勞動(dòng),從而建立智能系統(tǒng)或產(chǎn)品。討論了圖靈給出的智能評價(jià)標(biāo)準(zhǔn)和不足。從圖靈無組織機(jī)人手,引出了基于人工神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)問題。介紹了當(dāng)前第四次工業(yè)革命中美國、德國和中國智能制造的發(fā)展現(xiàn)狀。
王安生,北京郵電大學(xué)教授。曾任(解放軍)北京系統(tǒng)工程研究所軟件工程研究室主任,多項(xiàng)軍用標(biāo)準(zhǔn)的主編和起草者,或部委科技二等獎(jiǎng)一項(xiàng),立三等功一次。主講軟件工程、軟件過程改進(jìn)等課程。2005~2006年度在英國做訪問學(xué)者。2013年被選舉為軟件學(xué)院教授委員會(huì)主席。著有《軟件工程化》2014年清華大學(xué)出版,93萬字)等書籍。
目錄
第1章從手工計(jì)算到自動(dòng)計(jì)算
1.1數(shù)的表達(dá)
1.1.1十進(jìn)制數(shù)
1.1.2二八十六進(jìn)制數(shù)
1.2手寫計(jì)算
1.3手工計(jì)算工具
1.4巴貝奇機(jī)械自動(dòng)計(jì)算機(jī)器
1.5減法與補(bǔ)碼
1.5.1用減數(shù)的補(bǔ)碼做運(yùn)算
1.5.2用被減數(shù)的補(bǔ)碼做運(yùn)算
1.6邏輯計(jì)算
1.6.1邏輯計(jì)算
1.6.2用電路構(gòu)造邏輯運(yùn)算單元
1.6.3邏輯向量計(jì)算
1.7二進(jìn)制加減法計(jì)算機(jī)器
1.7.1用邏輯電路實(shí)現(xiàn)二進(jìn)制的加法器
1.7.2二進(jìn)制的反碼與補(bǔ)碼器
1.7.3二進(jìn)制加法器/減法器
1.7.4二進(jìn)制數(shù)正負(fù)數(shù)范圍
1.8思考題
第2章從自動(dòng)計(jì)算到可編程計(jì)算機(jī)器
2.1可編程的計(jì)算機(jī)器
2.1.1用巴貝奇機(jī)器做更復(fù)雜的計(jì)算
2.1.2圖靈計(jì)算機(jī)器
2.1.3圖靈機(jī)的形式化
2.2馮·諾依曼的計(jì)算機(jī)器
2.2.1馮·諾依曼機(jī)的結(jié)構(gòu)
2.2.2指令格式和執(zhí)行流程
2.2.3指令集
2.2.4數(shù)據(jù)格式與存儲(chǔ)器編址
2.3集成電路與計(jì)算產(chǎn)業(yè)化
2.3.1半導(dǎo)體的集成電路
2.3.2集成電路產(chǎn)業(yè)與摩爾定律
2.3.3摩爾定律的終結(jié)
2.3.4新材料
2.4量子計(jì)算機(jī)
2.4.1量子運(yùn)動(dòng)原理
2.4.2量子用于計(jì)算的原理
2.4.3量子計(jì)算機(jī)產(chǎn)業(yè)動(dòng)態(tài)
2.5系統(tǒng)軟件
2.5.1操作系統(tǒng)
2.5.2系統(tǒng)軟件與應(yīng)用軟件
2.5.3軟件商業(yè)競爭方式的創(chuàng)新
2.6思考題
第3章編程語言與數(shù)據(jù)表達(dá)
3.1匯編語言
3.1.1用機(jī)器指令編程的困擾
3.1.2匯編語言和編程
3.2高級(jí)語言
3.2.1高級(jí)編程語言簡史
3.2.2高級(jí)語言的執(zhí)行
3.2.3高級(jí)語言分類
3.3高級(jí)語言的特征
3.3.1詞法和語法
3.3.2語法和語義
3.3.3語句
3.4基本數(shù)據(jù)類型與變量運(yùn)算
3.4.1數(shù)值型
3.4.2邏輯型
3.4.3枚舉型
3.4.4字符與字符串
3.4.5指針運(yùn)算
3.4.6不同類型變量之間的運(yùn)算
3.5浮點(diǎn)數(shù)
3.5.1浮點(diǎn)數(shù)的表達(dá)理論
3.5.2運(yùn)算中出現(xiàn)的問題
3.5.3IEEE754浮點(diǎn)數(shù)的范圍
3.6擴(kuò)展的數(shù)據(jù)類型與結(jié)構(gòu)
3.6.1數(shù)組
3.6.2結(jié)構(gòu)體
3.6.3鏈表
3.6.4棧與隊(duì)列
3.6.5樹
3.6.6圖
3.6.7對象與OO語言
3.7編程語言的可靠與安全
3.7.1語言缺陷的例子
3.7.2弱類型與強(qiáng)類型語言
3.7.3創(chuàng)立和設(shè)計(jì)更可靠安全的語言
3.8思考題
第4章軟件開發(fā)環(huán)境與過程
4.1集成開發(fā)環(huán)境
4.1.1代碼編輯器
4.1.2編譯器
4.1.3鏈接器
4.1.4程序加載
4.1.5代碼調(diào)試和安全問題
4.2操作系統(tǒng)與運(yùn)行環(huán)境
4.2.1調(diào)用操作系統(tǒng)的功能
4.2.2庫
4.2.3遠(yuǎn)程調(diào)用
4.3嵌入式與移動(dòng)終端軟件的開發(fā)
4.3.1嵌入式計(jì)算機(jī)
4.3.2移動(dòng)終端設(shè)備
4.3.3交叉開發(fā)環(huán)境
4.4個(gè)體程序員能力
4.4.1程序員個(gè)體能力差異
4.4.2提高個(gè)體能力
4.5項(xiàng)目小組的組織
4.5.1小組的組織協(xié)調(diào)問題
4.5.2首席程序員的組織方式
4.5.3矩陣式的組織方式
4.5.4結(jié)對編程
4.6大項(xiàng)目的開發(fā)過程
4.6.1從程序開發(fā)到軟件開發(fā)
4.6.2瀑布式開發(fā)模型
4.6.3中間產(chǎn)品(文檔)的價(jià)值
4.6.4文檔與圖示化表達(dá)
4.7迭代與敏捷
4.7.1增量式迭代開發(fā)
4.7.2漸進(jìn)式迭代開發(fā)
4.7.3敏捷方法
4.8思考題
第5章數(shù)據(jù)通信與網(wǎng)絡(luò)
5.1數(shù)字化通信與編碼
5.1.1電報(bào)、電傳與ASCII碼
5.1.2漢字編碼與Unicode
5.2通信交換網(wǎng)絡(luò)
5.2.1郵政業(yè)務(wù)網(wǎng)絡(luò)
5.2.2電話交換網(wǎng)絡(luò)
5.3數(shù)據(jù)包交換網(wǎng)絡(luò)
5.3.1基于數(shù)據(jù)包的網(wǎng)絡(luò)原理
5.3.2數(shù)據(jù)包的設(shè)計(jì)
5.3.3數(shù)據(jù)分片與重新組裝
5.3.4路由選擇
5.4互聯(lián)網(wǎng)設(shè)計(jì)
5.4.1網(wǎng)絡(luò)互聯(lián)的需求
5.4.2網(wǎng)絡(luò)互聯(lián)的設(shè)計(jì)模型
5.4.3DoD網(wǎng)絡(luò)互聯(lián)協(xié)議族設(shè)計(jì)
5.5互聯(lián)網(wǎng)發(fā)展與應(yīng)用
5.5.1美國互聯(lián)網(wǎng)的全面發(fā)展
5.5.2中國發(fā)展互聯(lián)網(wǎng)的歷程
5.5.3IETF(互聯(lián)網(wǎng)工程任務(wù)組)
5.5.4互聯(lián)網(wǎng)的管理
5.6軟件定義的網(wǎng)絡(luò)
5.6.1傳統(tǒng)路由器與網(wǎng)絡(luò)管理問題
5.6.2OpenFlow論壇
5.6.3SDN的提出
5.6.4SDN的產(chǎn)學(xué)研究
5.7思考題
第6章從數(shù)據(jù)管理到Web和信息通信
6.1數(shù)據(jù)結(jié)構(gòu)化管理
6.1.1數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)化
6.1.2消除數(shù)據(jù)冗余
6.1.3建立實(shí)體關(guān)聯(lián)
6.2關(guān)系代數(shù)
6.2.1關(guān)系代數(shù)定義
6.2.2“選擇”運(yùn)算
6.2.3“投影”運(yùn)算
6.2.4兩個(gè)表的“笛卡兒積”運(yùn)算
6.2.5“并”運(yùn)算
6.2.6“差”運(yùn)算
6.2.7“交”運(yùn)算
6.2.8兩個(gè)表的“連接”運(yùn)算
6.3關(guān)系數(shù)據(jù)庫
6.3.1關(guān)系數(shù)據(jù)庫管理系統(tǒng)
6.3.2SQL:結(jié)構(gòu)化查詢語言
6.4萬維網(wǎng)
6.4.1WWW的初衷
6.4.2Web基本原理
6.4.3WWW函數(shù)庫
6.4.4早期美國網(wǎng)站的迅速發(fā)展
6.4.5Web服務(wù)器產(chǎn)品
6.4.6Web瀏覽器產(chǎn)品
6.4.7早期中國WWW的發(fā)展
6.5Web搜索
6.5.1爬蟲
6.5.2內(nèi)容整理
6.5.3搜索策略
6.6Web變遷與NoSQL數(shù)據(jù)庫
6.6.1Web應(yīng)用方式的變遷
6.6.2Web對信息管理系統(tǒng)的改變
6.6.3NoSQL對數(shù)據(jù)處理系統(tǒng)的影響
6.6.4大數(shù)據(jù)時(shí)代
6.7信息量
6.7.1單變量的熵定義
6.7.2關(guān)聯(lián)信息的熵定義
6.7.3數(shù)據(jù)、信息與知識(shí)時(shí)代
6.8思考題
第7章數(shù)字音視頻與圖形學(xué)
7.1數(shù)字音頻
7.1.1機(jī)械式留聲機(jī)
7.1.2磁帶錄音機(jī)
7.1.3數(shù)字音頻系統(tǒng)
7.2數(shù)字圖像
7.2.1圖像傳感
7.2.2圖像位圖表示
7.2.3圖像壓縮
7.2.4數(shù)字圖像的應(yīng)用
7.3數(shù)字視頻
7.3.1視頻數(shù)據(jù)與壓縮
7.3.2數(shù)字電視廣播系統(tǒng)
7.3.3視頻識(shí)別的應(yīng)用
7.3.4立體電影與電視
7.4計(jì)算機(jī)圖形學(xué)
7.4.1圖像的矢量表示
7.4.2圖形的運(yùn)算
7.4.3二維圖形
7.4.4三維圖形
7.4.5圖形學(xué)的應(yīng)用
7.4.6虛擬現(xiàn)實(shí)技術(shù)
7.5專用處理器
7.5.1GPU
7.5.2TPU
7.6圖形與符號(hào)編碼
7.6.1一維碼
7.6.2二維碼
7.6.3三維碼
7.7思考題
第8章機(jī)器與智能
8.1可控制的自動(dòng)機(jī)器
8.1.1替代體力的自動(dòng)可控機(jī)器
8.1.2自動(dòng)反饋控制器
8.1.3自適應(yīng)與AI控制器
8.2基于計(jì)算機(jī)的控制器
8.2.1將計(jì)算機(jī)嵌入到控制系統(tǒng)中
8.2.2控制器的設(shè)計(jì)
8.2.3傳感器
8.2.4可編程邏輯控制器
8.2.5社會(huì)系統(tǒng)的控制
8.3人工智能
8.3.1圖靈無組織的機(jī)器
8.3.2人工神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程
8.3.3模擬神經(jīng)元
8.3.4模擬多層神經(jīng)網(wǎng)
8.3.5機(jī)器學(xué)習(xí)
8.3.6其他算法
8.4智能的評價(jià)
8.4.1圖靈測試
8.4.2圖靈測試的消極面
8.4.3智能分級(jí)
8.5智能制造
8.5.1先進(jìn)(制造)工程環(huán)境
8.5.2物聯(lián)網(wǎng)
8.5.3工業(yè)互聯(lián)網(wǎng)
8.6智能制造作為國家戰(zhàn)略
8.6.1德國工業(yè)4.0
8.6.2美國智能制造
8.6.3中國制造2025
8.7思考題
第9章軟件產(chǎn)業(yè)與人才
9.1軟件與產(chǎn)業(yè)
9.1.1軟件與程序
9.1.2軟件作為商品:版權(quán)與許可證
9.1.3云計(jì)算:一切作為服務(wù)
9.2軟件企業(yè)過程能力的改進(jìn)
9.2.1軟件工廠模式
9.2.2軟件過程與改進(jìn)
9.2.3SEI和漢弗萊的貢獻(xiàn)
9.2.4CMM/CMMI模型
9.3產(chǎn)業(yè)生態(tài)、聯(lián)盟、開放與開源
9.3.1軟件產(chǎn)業(yè)生態(tài)
9.3.2產(chǎn)業(yè)聯(lián)盟
9.3.3企業(yè)間的并購
9.3.4開放策略
9.3.5開源策略
9.4軟件危機(jī):永恒的話題
9.4.1國防工業(yè)軟件的指數(shù)級(jí)增長
9.4.2制造業(yè)軟件成本的急速增長
9.4.3超大規(guī)模軟件系統(tǒng)
9.4.4軟件生產(chǎn)率嚴(yán)重不足
9.5中國軟件危機(jī)
9.5.1軟件導(dǎo)致通信與網(wǎng)絡(luò)系統(tǒng)的危機(jī)
9.5.2軟件導(dǎo)致信息化社會(huì)的安全危機(jī)
9.5.3軟件導(dǎo)致制造業(yè)的危機(jī)
9.6軟件產(chǎn)業(yè)人才
9.6.1軟件工廠型人才
9.6.2軟件工程型人才
9.6.3復(fù)合型人才
9.6.4創(chuàng)新創(chuàng)業(yè)思維
9.6.5國際化視野
9.6.6軟件商業(yè)奇才
9.7軟件工程與新工科
9.7.1軟件工程的就業(yè)
9.7.2美國歐洲中國軟件產(chǎn)業(yè)對比
9.7.3軟件與其他產(chǎn)業(yè)500強(qiáng)的對比
9.7.4新工科戰(zhàn)略
9.7.5軟件工程與新工科的融合
9.8思考題
附錄A歷史責(zé)任
A.1工業(yè)革命推動(dòng)力
A.1.1前三次工業(yè)革命
A.1.2第四次工業(yè)革命的基礎(chǔ)
A.2中國工業(yè)革命歷程
A.2.1中國近代危機(jī)與民族解放
A.2.2兩彈一星與國際地位
A.2.3改革開放
A.3軟件產(chǎn)業(yè)教育的歷史責(zé)任
A.3.1軟件人才危機(jī)
A.3.2示范性軟件學(xué)院的歷史責(zé)任
附錄B北京郵電大學(xué)國家示范性軟件學(xué)院本科培養(yǎng)方案
B.1教育部的指導(dǎo)意見
B.2“三六一一”實(shí)踐教學(xué)體系
B.2.1形成過程
B.2.2“三六一一”的內(nèi)涵與外延
B.32017版本科培養(yǎng)方案
B.3.1培養(yǎng)線
B.3.2培養(yǎng)線與課程地圖
B.3.3實(shí)踐課與“三六一一”映射
B.3.4“三六一一”與SWEBOK的映射關(guān)系
附錄C《專業(yè)導(dǎo)論課》的目的
C.1教育理念
C.1.1形而上學(xué)與形而下學(xué)
C.1.2通識(shí)教育與專業(yè)教育
C.1.3領(lǐng)域知識(shí)與軟件工程專業(yè)知識(shí)
C.2本書與北郵軟件學(xué)院2017版培養(yǎng)方案關(guān)聯(lián)
C.2.1對北郵軟件學(xué)院2017版課程的引導(dǎo)
C.2.2通過課程配套實(shí)驗(yàn)引發(fā)學(xué)習(xí)興趣
附錄D國內(nèi)部分示范性軟件學(xué)院課程體系
D.1哈爾濱工業(yè)大學(xué)軟件學(xué)院
D.2清華大學(xué)軟件學(xué)院
D.3重慶大學(xué)大數(shù)據(jù)與軟件學(xué)院
D.4復(fù)旦大學(xué)軟件學(xué)院
D.5華中科技大學(xué)軟件學(xué)院