SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
What are programs?
兼談現代化軟體開發
Speaker: Cobalt Chang
2016/12/02
自我介紹
❖ 張惇育
❖ 成功大學資訊工程博士
❖ 經歷
➢ 宏普科技 (現為樺漢集團樺賦科技)
➢ 新漢股份有限公司
❖ 專長與興趣
➢ 嵌入式系統開發
➢ 分散式軟體架構設計
➢ 機器學習 2
Outline
❖ What are programs?
❖ Web application developing
❖ Modern software development
3
What are programs?
4
5
起點
終點
如何描述一個問題?
回
到
原
點
6
每個岔路
標記起來
每個死路也
標記起來
7
8
9
第一層
第二層
第三層
第四層
深
度
優
先
探
索
10
What are programs?
Be a Learner!
Outline
❖ What are programs?
❖ Web application developing
❖ Modern software development
11
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
功夫
❖ 有什麼方式可以加速?
14
Outline
❖ What are programs?
❖ Web application developing
➢ Database
❖ Modern software development
➢ NO programming? Not Only programming
➢ Agile development
➢ DevOps
15
資料庫索引
❖ B-Tree
❖ B+-Tree
❖ B*-Tree
16An example of B-Tree
17
資料庫軟體
❖ 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
Database
ORM
Front-end Back-end
Language Framework Module / App
20
Django
❖ Model-Template-View, or MTV
❖ Object-relational mapper, or ORM
❖ Template engine
21
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
人月神話
25
軟體開發流程
26
測試驅動開發
❖ Testing
➢ Unit testing
➢ Integration testing
❖ Refactor 重構
❖ TDD是一種開發方法,不是測試
➢ 將規格以可執行的「測試案例」來表達
27
Co-work
❖ Version control
❖ Issue tracking
❖ Documenting
❖ Code review
28
敏捷式軟體開發
❖ 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
為什麼會出現DevOps?
10+ Deploys per Day:Dev and Ops Cooperation at Flickr
31
DevOps就是持續交付
32
Outline
❖ What are programs?
❖ Web application developing
❖ Live coding!
❖ Modern software development
❖ What are programs?
33
What are programs?
34
35
練功三階段
Questions?
36

Contenu connexe

Tendances

Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事Yihua Huang
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC
 
程式交易面面觀
程式交易面面觀程式交易面面觀
程式交易面面觀Philip Zheng
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC
 
認識程式交易
認識程式交易認識程式交易
認識程式交易Philip Zheng
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC
 
Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架foxgem
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017Hamilton Wong
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)Duran Hsieh
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗Taien Wang
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack昱安 周
 
台指Tick大數據與程式化交易
台指Tick大數據與程式化交易台指Tick大數據與程式化交易
台指Tick大數據與程式化交易Shih-chang Feng
 
OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOrange Tsai
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式Kai Feng Zhang
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606Fionsu
 
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的DevopsEdward Kuo
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作Philip Zheng
 
Android Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityAndroid Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityTaien Wang
 

Tendances (20)

Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
 
程式交易面面觀
程式交易面面觀程式交易面面觀
程式交易面面觀
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
 
認識程式交易
認識程式交易認識程式交易
認識程式交易
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
 
Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
 
台指Tick大數據與程式化交易
台指Tick大數據與程式化交易台指Tick大數據與程式化交易
台指Tick大數據與程式化交易
 
OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit Documentation
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606
 
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Android Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityAndroid Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps Security
 

En vedette

淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享Tun-Yu Chang
 
API Token 入門
API Token 入門API Token 入門
API Token 入門Andrew Wu
 
領域驅動設計
領域驅動設計領域驅動設計
領域驅動設計Pei-Hsun Kao
 
REST to RESTful Web Service
REST to RESTful Web ServiceREST to RESTful Web Service
REST to RESTful Web Service家弘 周
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材teddysoft
 
大型 Web Application 轉移到 微服務的經驗分享
大型 Web Application 轉移到微服務的經驗分享大型 Web Application 轉移到微服務的經驗分享
大型 Web Application 轉移到 微服務的經驗分享Andrew Wu
 

En vedette (7)

淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享
 
API Token 入門
API Token 入門API Token 入門
API Token 入門
 
領域驅動設計
領域驅動設計領域驅動設計
領域驅動設計
 
RESTful API Design
RESTful API DesignRESTful API Design
RESTful API Design
 
REST to RESTful Web Service
REST to RESTful Web ServiceREST to RESTful Web Service
REST to RESTful Web Service
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
 
大型 Web Application 轉移到 微服務的經驗分享
大型 Web Application 轉移到微服務的經驗分享大型 Web Application 轉移到微服務的經驗分享
大型 Web Application 轉移到 微服務的經驗分享
 

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

【跨界思考工作坊】课程行销方案 (简体)
【跨界思考工作坊】课程行销方案 (简体)【跨界思考工作坊】课程行销方案 (简体)
【跨界思考工作坊】课程行销方案 (简体)Yeong-Long Chen
 
【跨界思考工作坊】課程行銷方案 (繁體)
【跨界思考工作坊】課程行銷方案 (繁體)【跨界思考工作坊】課程行銷方案 (繁體)
【跨界思考工作坊】課程行銷方案 (繁體)Yeong-Long Chen
 
Drbl clonezilla.basic v15
Drbl clonezilla.basic v15Drbl clonezilla.basic v15
Drbl clonezilla.basic v15hs1250
 
沒有所謂的end user:一個open source project網站的改版計畫
沒有所謂的end user:一個open source project網站的改版計畫沒有所謂的end user:一個open source project網站的改版計畫
沒有所謂的end user:一個open source project網站的改版計畫Wan Jen Huang
 
20150717 從網頁開發到android app行動應用開發 發佈版
20150717 從網頁開發到android app行動應用開發   發佈版20150717 從網頁開發到android app行動應用開發   發佈版
20150717 從網頁開發到android app行動應用開發 發佈版Yung-Ting Chen
 
20141030 ntustme computer_programmingandbeyond_share
20141030 ntustme computer_programmingandbeyond_share20141030 ntustme computer_programmingandbeyond_share
20141030 ntustme computer_programmingandbeyond_shareTing-Shuo Yo
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航Edward Kuo
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生Rick Hwang
 
OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030Rex Tsai
 
将bug尽可能扼杀在开发阶段
将bug尽可能扼杀在开发阶段将bug尽可能扼杀在开发阶段
将bug尽可能扼杀在开发阶段fangdeng
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學National Cheng Kung University
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習Kyle Lin
 
Building Chatbot With Huggging Face
 				Building Chatbot With Huggging Face 				Building Chatbot With Huggging Face
Building Chatbot With Huggging FaceKo Ko
 
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合Rick Hwang
 
Sdnds tw-meetup-1
Sdnds tw-meetup-1Sdnds tw-meetup-1
Sdnds tw-meetup-1Fei Ji Siao
 
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作kewuc
 
浅谈灰度发布在贴吧的应用 支付宝 20130909
浅谈灰度发布在贴吧的应用 支付宝 20130909浅谈灰度发布在贴吧的应用 支付宝 20130909
浅谈灰度发布在贴吧的应用 支付宝 20130909liqiang xu
 
給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班台灣資料科學年會
 

Similaire à What are programs? 兼談現代化軟體開發 (20)

【跨界思考工作坊】课程行销方案 (简体)
【跨界思考工作坊】课程行销方案 (简体)【跨界思考工作坊】课程行销方案 (简体)
【跨界思考工作坊】课程行销方案 (简体)
 
【跨界思考工作坊】課程行銷方案 (繁體)
【跨界思考工作坊】課程行銷方案 (繁體)【跨界思考工作坊】課程行銷方案 (繁體)
【跨界思考工作坊】課程行銷方案 (繁體)
 
Drbl clonezilla.basic v15
Drbl clonezilla.basic v15Drbl clonezilla.basic v15
Drbl clonezilla.basic v15
 
沒有所謂的end user:一個open source project網站的改版計畫
沒有所謂的end user:一個open source project網站的改版計畫沒有所謂的end user:一個open source project網站的改版計畫
沒有所謂的end user:一個open source project網站的改版計畫
 
20150717 從網頁開發到android app行動應用開發 發佈版
20150717 從網頁開發到android app行動應用開發   發佈版20150717 從網頁開發到android app行動應用開發   發佈版
20150717 從網頁開發到android app行動應用開發 發佈版
 
20141030 ntustme computer_programmingandbeyond_share
20141030 ntustme computer_programmingandbeyond_share20141030 ntustme computer_programmingandbeyond_share
20141030 ntustme computer_programmingandbeyond_share
 
OOP Basic
OOP BasicOOP Basic
OOP Basic
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生
 
OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030
 
将bug尽可能扼杀在开发阶段
将bug尽可能扼杀在开发阶段将bug尽可能扼杀在开发阶段
将bug尽可能扼杀在开发阶段
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習
 
42qu thrift1
42qu thrift142qu thrift1
42qu thrift1
 
Building Chatbot With Huggging Face
 				Building Chatbot With Huggging Face 				Building Chatbot With Huggging Face
Building Chatbot With Huggging Face
 
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
 
Sdnds tw-meetup-1
Sdnds tw-meetup-1Sdnds tw-meetup-1
Sdnds tw-meetup-1
 
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
 
浅谈灰度发布在贴吧的应用 支付宝 20130909
浅谈灰度发布在贴吧的应用 支付宝 20130909浅谈灰度发布在贴吧的应用 支付宝 20130909
浅谈灰度发布在贴吧的应用 支付宝 20130909
 
給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班
 

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