View
276
Download
1
Category
Preview:
Citation preview
Demo!
❖ 先來看個實際範例
➢ https://github.com/cobaltchang/ovff
12
找出瓶頸
❖ 讀檔是瓶頸,WHY?
❖ C
➢ char * fgets ( char * str, int num, FILE * stream );
❖ C++
➢ istream &getline( char *buffer, streamsize num, char delim );
❖ 線性搜尋,O(N)
13
Outline
❖ What are programs?
❖ Web application developing
➢ Database
❖ Modern software development
➢ NO programming? Not Only programming
➢ Agile development
➢ DevOps
15
資料庫軟體
❖ SQLite
➢ 常用於嵌入式系統
❖ MySQL
➢ 容易入門
➢ 學習資源多
❖ PostgreSQL, or Postgres
➢ 物件導向資料庫
❖ Oracle
➢ 商用大型資料庫
18
Outline
❖ What are programs?
❖ Web application developing
➢ Database
➢ Web framework
❖ Modern software development
19
軟體開發實例
PythonJavascript
DjangoAngularJS
$resource ($http) Django REST framework
RESTful API (JSON)
HTML / CSS
DatabaseORM
Front-end Back-end
Language Framework Module / App20
Outline
❖ What are programs?
❖ Web application developing
❖ Live coding!
➢ 任務目標:把檔案搜尋換成資料庫搜尋
❖ Modern software development
22
Outline
❖ What are programs?
❖ Web application developing
❖ Live coding!
❖ Modern software development
➢ NO programming? Not Only programming
➢ Agile development
➢ DevOps
23
Not Only programming
❖ 軟體開發是…
➢ coding
➢ compiling
➢ debugging
➢ building
❖ 那叫寫程式,那不是軟體工程,甚至不能稱為軟體產品。
24
測試驅動開發
❖ Testing
➢ Unit testing
➢ Integration testing
❖ Refactor 重構
❖ TDD是一種開發方法,不是測試
➢ 將規格以可執行的「測試案例」來表達
27
敏捷式軟體開發
❖ Test-Driven Development 測試驅動開發
❖ Continuous Integration 持續整合
❖ Refactoring 重構
❖ Stand up 站立會議
❖ Frequent Releases 頻繁發佈
❖ Minimal Documentation 測試即文件
❖ Collaborative Focus 代碼共用
❖ Customer Engagement 現場客戶
❖ Automated Testing 自動化測試
❖ Adaptive Planning 可調整計劃
❖ Pair-Programming 結對編程
敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟體項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特性。 29
DevOps
❖ 軟體工程劃分為兩個維度
➢ 一個是代表流程的[開發]、[維運]
➢ 一個是代表資源的[人力]、[設備]
❖ 開發就是研發設計與產出軟體程式的過程
❖ 維運就是讓軟體真正成為產品所需的流程
❖ 再加上QA
30
Outline
❖ What are programs?
❖ Web application developing
❖ Live coding!
❖ Modern software development
❖ What are programs?
33
Recommended