Top Banner
What are programs? 兼談現代化軟體開發 Speaker: Cobalt Chang 2016/12/02
36

What are programs? 兼談現代化軟體開發

Jan 22, 2018

Download

Software

Tun-Yu Chang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: What are programs? 兼談現代化軟體開發

What are programs?

兼談現代化軟體開發

Speaker: Cobalt Chang2016/12/02

Page 2: What are programs? 兼談現代化軟體開發

自我介紹

❖ 張惇育

❖ 成功大學資訊工程博士

❖ 經歷

➢ 宏普科技 (現為樺漢集團樺賦科技)

➢ 新漢股份有限公司

❖ 專長與興趣

➢ 嵌入式系統開發

➢ 分散式軟體架構設計

➢ 機器學習2

Page 3: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

❖ Modern software development

3

Page 4: What are programs? 兼談現代化軟體開發

What are programs?

4

Page 5: What are programs? 兼談現代化軟體開發

5

起點

終點

如何描述一個問題?

回到原點

Page 6: What are programs? 兼談現代化軟體開發

6

每個岔路標記起來

每個死路也標記起來

Page 7: What are programs? 兼談現代化軟體開發

7

Page 8: What are programs? 兼談現代化軟體開發

8

Page 9: What are programs? 兼談現代化軟體開發

9

第一層

第二層

第三層

第四層

深度優先探索

Page 10: What are programs? 兼談現代化軟體開發

10

What are programs?

Be a Learner!

Page 11: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

❖ Modern software development

11

Page 12: What are programs? 兼談現代化軟體開發

Demo!

❖ 先來看個實際範例

➢ https://github.com/cobaltchang/ovff

12

Page 13: What are programs? 兼談現代化軟體開發

找出瓶頸

❖ 讀檔是瓶頸,WHY?

❖ C

➢ char * fgets ( char * str, int num, FILE * stream );

❖ C++

➢ istream &getline( char *buffer, streamsize num, char delim );

❖ 線性搜尋,O(N)

13

Page 14: What are programs? 兼談現代化軟體開發

功夫

❖ 有什麼方式可以加速?

14

Page 15: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

➢ Database

❖ Modern software development

➢ NO programming? Not Only programming

➢ Agile development

➢ DevOps

15

Page 16: What are programs? 兼談現代化軟體開發

資料庫索引

❖ B-Tree

❖ B+-Tree

❖ B*-Tree

16An example of B-Tree

Page 17: What are programs? 兼談現代化軟體開發

17

Page 18: What are programs? 兼談現代化軟體開發

資料庫軟體

❖ SQLite

➢ 常用於嵌入式系統

❖ MySQL

➢ 容易入門

➢ 學習資源多

❖ PostgreSQL, or Postgres

➢ 物件導向資料庫

❖ Oracle

➢ 商用大型資料庫

18

Page 19: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

➢ Database

➢ Web framework

❖ Modern software development

19

Page 20: What are programs? 兼談現代化軟體開發

軟體開發實例

PythonJavascript

DjangoAngularJS

$resource ($http) Django REST framework

RESTful API (JSON)

HTML / CSS

DatabaseORM

Front-end Back-end

Language Framework Module / App20

Page 21: What are programs? 兼談現代化軟體開發

Django

❖ Model-Template-View, or MTV

❖ Object-relational mapper, or ORM

❖ Template engine

21

Page 22: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

❖ Live coding!

➢ 任務目標:把檔案搜尋換成資料庫搜尋

❖ Modern software development

22

Page 23: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

❖ Live coding!

❖ Modern software development

➢ NO programming? Not Only programming

➢ Agile development

➢ DevOps

23

Page 24: What are programs? 兼談現代化軟體開發

Not Only programming

❖ 軟體開發是…

➢ coding

➢ compiling

➢ debugging

➢ building

❖ 那叫寫程式,那不是軟體工程,甚至不能稱為軟體產品。

24

Page 25: What are programs? 兼談現代化軟體開發

人月神話

25

Page 26: What are programs? 兼談現代化軟體開發

軟體開發流程

26

Page 27: What are programs? 兼談現代化軟體開發

測試驅動開發

❖ Testing

➢ Unit testing

➢ Integration testing

❖ Refactor 重構

❖ TDD是一種開發方法,不是測試

➢ 將規格以可執行的「測試案例」來表達

27

Page 28: What are programs? 兼談現代化軟體開發

Co-work

❖ Version control

❖ Issue tracking

❖ Documenting

❖ Code review

28

Page 29: What are programs? 兼談現代化軟體開發

敏捷式軟體開發

❖ Test-Driven Development 測試驅動開發

❖ Continuous Integration 持續整合

❖ Refactoring 重構

❖ Stand up 站立會議

❖ Frequent Releases 頻繁發佈

❖ Minimal Documentation 測試即文件

❖ Collaborative Focus 代碼共用

❖ Customer Engagement 現場客戶

❖ Automated Testing 自動化測試

❖ Adaptive Planning 可調整計劃

❖ Pair-Programming 結對編程

敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟體項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特性。 29

Page 30: What are programs? 兼談現代化軟體開發

DevOps

❖ 軟體工程劃分為兩個維度

➢ 一個是代表流程的[開發]、[維運]

➢ 一個是代表資源的[人力]、[設備]

❖ 開發就是研發設計與產出軟體程式的過程

❖ 維運就是讓軟體真正成為產品所需的流程

❖ 再加上QA

30

Page 31: What are programs? 兼談現代化軟體開發

為什麼會出現DevOps?

10+ Deploys per Day:Dev and Ops Cooperation at Flickr

31

Page 32: What are programs? 兼談現代化軟體開發

DevOps就是持續交付

32

Page 33: What are programs? 兼談現代化軟體開發

Outline

❖ What are programs?

❖ Web application developing

❖ Live coding!

❖ Modern software development

❖ What are programs?

33

Page 35: What are programs? 兼談現代化軟體開發

35

練功三階段

Page 36: What are programs? 兼談現代化軟體開發

Questions?

36