SlideShare a Scribd company logo
1 of 54
哥寫的不是程式,是軟體
從嵌入式系統看軟體工程全貌
Agenda
❖ Embedded system v.s. Software engineering
➢ What is embedded system?
➢ An overview of embedded system software architecture
❖ Getting start from modern application
➢ Web based application
➢ Talent tree for web developers
❖ Modern software development
➢ NO programming? Not Only programming
➢ Agile development
➢ DevOps
❖ What is our future?
2
Introduction to my self
❖張惇育
❖成功大學資訊工程博士
❖經歷
➢ 宏普科技 (現為 樺漢集團樺賦科技)
➢ 新漢股份有限公司
❖專長
➢ 嵌入式系統開發
➢ 分散式軟體架構設計
3
Outline
❖Embedded system v.s. Software engineering
➢ What is embedded system?
➢ An overview of embedded system software architecture
❖Getting start from modern application
❖Modern software development
❖What is our future?
4
What is embedded system?
❖完全嵌入受控器件內部,為特定應用而設計的專用計算機系統
➢ 被嵌入的系統通常是包含硬體和機械部件的完整裝置。
➢ 其關鍵特性是專用於處理特定的任務
❖與個人電腦這樣的通用電腦系統不同,嵌入式系統通常執行的是帶有特定要
求的預先定義的任務。
5
生活週邊的嵌入式設備
6
更多嵌入式設備
7
Embedded system software architecture
Bootloader
Linux kernel
Init ramdisk
RootFS
Application Application Application
Library Library
8
Bootloader 做什麼?
❖bootstrapping / booting
➢ to pull oneself up by one’s bootstraps
9
Kernel
❖monolithic kernel
➢ Linux
➢ Unix (MAC)
❖microkernel
➢ Windows
❖driver
➢ builtin
➢ module
10
11
Initrd & Rootfs
❖Root file system
➢ OS 所需要的 file system
➢ C library, shell, etc.
❖系統ready
❖等待使用者輸入
12
Application
13
Software engineering?
❖嵌入式系統的架構,相當於整個軟體工業的微縮模型
❖軟體開發包含:
➢ Application
➢ SDK & IDE
➢ Operate system
➢ Kernel & driver
➢ Bootloader
❖今天只談Application裡的web based application
你平時寫的程式
都是軟體開發
14
Outline
❖Embedded system v.s. Software engineering
❖Getting start from modern application
➢ Web based application
➢ Talent tree for web developers
❖Modern software development
❖What is our future?
15
Web based application
❖server-client architecture
❖跨平台
❖標準化協定
❖不用另外安裝程式
❖適用於cloud service
16
軟體開發實例
PythonJavascript
DjangoAngularJS
$resource ($http)
Django REST
framework
RESTful API
(JSON)
HTML / CSS
Database
ORM
Front-end Back-end
Language Framework Module / App
17
Python
Life is short. You need Python.
18
寫個Web server有多難?
19
Don’t repeat yourself
❖Web framework
➢ Django
➢ CherryPy
➢ Flask
➢ Tornado
➢ etc...
20
Django
❖Model-Template-View, or MTV
❖Object-relational mapper, or ORM
❖Template engine
21
Python高級特性知多少?
❖ functional programming
➢ map()
➢ filter()
➢ reduce()
➢ list comprehensions 串列綜合運算
❖ lambda functions
❖ Closures 閉包
❖ Iterators 迭代器
❖ generators 生成器
❖ Object Oriented Programming
❖ Abstract base classes 抽象物件
➢ Inheritance
➢ super()
❖ Mixins/Multiple Inheritance
➢ Method Resolution Order, or MRO
❖ Decorator 裝飾器
➢ @classmethod
➢ @staticmethod
➢ @property
22
Python進階議題
❖ Global Interpreter Lock, or GIL
❖ C10K problem
➢ Multi-thread 多線程
➢ Multi-process 多進程
➢ Coroutine 協程
➢ async-io 非同步IO
❖ 快,還要更快
➢ cython
➢ numba
➢ pypy
➢ numpy
➢ scipy
23
Database
❖SQLite
➢ 常用於嵌入式系統
❖MySQL
➢ 容易入門
➢ 學習資源多
❖PostgreSQL, or Postgres
➢ Object-oriented database
24
Javascript
❖Web技術的發展史
➢ 網頁互動效果
➢ DOM(Document Object Model) API操作
➢ Ajax (Asynchronous JavaScript and XML)的發明與普及
➢ NodeJS 的出世 => npm誕生
■ Javascript 進入套件管理的時代
➢ 各種framework推陳出新
25
AngularJS
❖關注點分離
➢ 控制器 (Controllers) 與 檢視 (Views) 之間切割的非常乾淨
❖以習慣取代配置
➢ Directives
❖DOM Templates
❖Dependency injection 依賴注入
❖Two-way data binding 雙向資料綁定
26
Model-View-Controller
❖Model
➢ 管理(商務)邏輯、資料、 狀態
❖View
➢ 視覺呈現
➢ 只顯示資料,不處理資料
❖Controller
➢ 介於Model 和 View之間的連結
➢ Model 和 View 之間的所有溝通都要經過Controller
27
Model-View-Controller
❖Example
➢ iPhone SDK
➢ Android
➢ Qt
28
Web MVC
❖Model 2
❖Example
➢ Django
➢ Rails
➢ Yii
29
Model-View-Presenter
❖Example
➢ Swing
➢ SWT
➢ JavaFX
30
Model-View-ViewModel
❖AngularJS
31
MV-Whatever 大家族
❖Model-View-Controller
❖Web MVC
❖Model-View-Presenter
❖Model-View-ViewModel
❖Model-View-Whatever
32
RESTful API - REST
❖REST, Representational State Transfer (具象狀態傳輸)
➢ Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種軟體架構風格。
➢ 應用程式的狀態跟功能拆成 resources
■ 每一個 resource 由一個 global identifier (即URI)所表示
➢ 資源的表現形式則是XML或者HTML,取決於讀者是機器還是人,當然也可以是任何其他
的格式。
➢ 所有 resources 共用一致的介面轉換狀態
■ 一組有限的良好定義操作 well-defined operations
33
RESTful API - RESTful
❖REST的要求:
➢ 使用者端/伺服器端 Client/Server
➢ 狀態無關 Stateless
➢ 可以快取 Cacheable
➢ 分層的 Layered
➢ 標準化的介面 Uniform interface
❖符合以上原則(principles)的系統稱做RESTful。
34
RESTful API - APIs
❖應用於Web服務
➢ 符合REST設計風格的Web API稱為RESTful API
➢ 直觀簡短的資源地址:URI,比如:http://example.com/resources/。
➢ 傳輸的資源:Web服務接受與返回的網際網路媒體類型,JSON,XML,YAML等。
➢ 對資源的操作:Web服務在該資源上所支持的一系列請求方法。
資源 GET PUT POST DELETE
一組資源的URI,比如
http://api.example.com/resources/
列出URI,以及該資
源組中每個資源的詳
細資訊。
使用給定的一組資源
替換當前整組資源。
創建/追加一個新的資
源。該操作往往返回
新資源的URL。
刪除整組資源。
單個資源的URI,比如
http://api.example.com/resources/i
tem17/
獲取指定資源的詳細
資訊,格式可以是
XML、JSON等。
替換/創建指定的資源
。
在指定的資源下創建/
追加一個新的元素。
刪除指定的元素。
35
RESTful API - 有什麼優點
❖支援快取 caching 將改善反應時間跟server的負載能力。
❖因為不必維持連結狀態,大大改善 server 的 scalability 能力。這表示不同
server可以處理同一串 requests。
❖一個瀏覽器就可以存取任一應用程式跟資源,client 端不需使用別的軟體。
❖在HTTP之上不依存其他機制跟軟體。
❖跟其他連結方式相比(如RPC),可以提供相等的功能。
❖不需要其他的 discovery 機制,因為使用超連結了。
36
Talent tree for web developers
37
38
Outline
❖Embedded system v.s. Software engineering
❖Getting start from modern application
❖Modern software development
➢ NO programming? Not Only programming
➢ Agile development
➢ DevOps
❖What is our future?
39
Not Only programming
❖你想象中的軟體開發是…
➢coding
➢compiling
➢debugging
➢building
❖那叫寫程式,那不是軟體工程,甚至不能稱為軟體產品。
40
軟體開發流程
41
Test-driven development
❖Testing
➢ Unit testing
➢ Integration testing
❖Refactor 重構
❖TDD是一種開發方法,不是測試
➢ 將規格以可執行的「測試案例」來表達
42
Co-work
❖Version control
❖Issue tracking
❖Documenting
❖Code review
43
Agile development
❖ Test-Driven Development 測試驅動開發
❖ Continuous Integration 持續整合
❖ Refactoring 重構
❖ Stand up 站立會議
❖ Frequent Releases 頻繁發佈
❖ Minimal Documentation 測試即文件
❖ Collaborative Focus 代碼共用
敏捷開發是一種以人為核心、迭代、循序漸進的開
發方法。在敏捷開發中,軟體項目的構建被切分成
多個子項目,各個子項目的成果都經過測試,具備
集成和可運行的特性。 44
DevOps
❖軟體工程劃分為兩個維度
➢一個是代表流程的[開發]、[維運]
➢一個是代表資源的[人力]、[設備]
❖開發就是研發設計與產出軟體程式的過程
❖維運就是讓軟體真正成為產品所需的流程
❖再加上QA
45
為什麼會出現DevOps?
10+ Deploys per Day:Dev and Ops Cooperation at Flickr
46
DevOps就是持續交付
47
Outline
❖Embedded system v.s. Software engineering
❖Getting start from modern application
❖Modern software development
❖What is our future?
48
找到適合你的工作
❖十萬青年十萬肝,GG輪班救台灣
❖你想找怎麼樣的工作?以軟體產業來說
➢ IT
➢ FAE
➢ QA / QC (測試)
➢ RD
49
我要學什麼語言?
50
開獎… (僅供參考)
❖ 重點不是在於什麼語言、工具,而是你解決什麼問題
51
如何學習新程式語言
❖我只會寫Java,不會寫C
❖正確的學習方式
➢ Copy & Paste 臨摩
➢ 看文件
➢ 學習使用 library
❖不要鑽牛角尖,不要花時間在你”目前”看不懂的東西上
52
成為高手沒有捷徑
❖Don’t repeat yourself.
➢ 學習使用框架、第三方套件
➢ 理解原理與架構
❖看文件!看文件!看文件!很重要所以說三次。
❖自我精進
❖參與社群、OpenSource
53
Questions?
54

More Related Content

What's hot

MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)NTT DATA Technology & Innovation
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~真乙 九龍
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめKenichi Sonoda
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜MicroAd, Inc.(Engineer)
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2Takashi Hoshino
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 

What's hot (20)

MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 

Similar to 哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌

从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
SRE CH27 - Reliable Product Launches at Scale
SRE CH27 - Reliable Product Launches at Scale SRE CH27 - Reliable Product Launches at Scale
SRE CH27 - Reliable Product Launches at Scale Rick Hwang
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Open erp python-快速数据库应用开发
Open erp python-快速数据库应用开发Open erp python-快速数据库应用开发
Open erp python-快速数据库应用开发Yan Junyi
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationnetdbncku
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)My own sweet home!
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划mysqlops
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划colderboy17
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計Amigo 陳兆祥
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?Kirk Chen
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系Ken Liu
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系Ken Liu
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconYiwei Ma
 

Similar to 哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌 (20)

从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
SRE CH27 - Reliable Product Launches at Scale
SRE CH27 - Reliable Product Launches at Scale SRE CH27 - Reliable Product Launches at Scale
SRE CH27 - Reliable Product Launches at Scale
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Open erp python-快速数据库应用开发
Open erp python-快速数据库应用开发Open erp python-快速数据库应用开发
Open erp python-快速数据库应用开发
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
 
專題-2017Linux Driver 實現
專題-2017Linux Driver 實現專題-2017Linux Driver 實現
專題-2017Linux Driver 實現
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
App house
App houseApp house
App house
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 

More from Tun-Yu Chang

Development environment
Development environmentDevelopment environment
Development environmentTun-Yu Chang
 
改變未來的物聯網
改變未來的物聯網改變未來的物聯網
改變未來的物聯網Tun-Yu Chang
 
What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發Tun-Yu Chang
 
淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享Tun-Yu Chang
 
Auth of restful_api
Auth of restful_apiAuth of restful_api
Auth of restful_apiTun-Yu Chang
 

More from Tun-Yu Chang (6)

Development environment
Development environmentDevelopment environment
Development environment
 
改變未來的物聯網
改變未來的物聯網改變未來的物聯網
改變未來的物聯網
 
A.I. And I
A.I. And IA.I. And I
A.I. And I
 
What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發
 
淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享
 
Auth of restful_api
Auth of restful_apiAuth of restful_api
Auth of restful_api
 

哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌

Editor's Notes

  1. 相傳在十八世紀,德國 Baron Münchhausen 男爵常誇大吹噓自己的英勇事蹟,其中一項是「拉著自己的頭髮,將自己從受陷的沼澤中提起」,此事後來收錄於德國《吹牛大王歷險記》,則改寫為「用拔靴帶把自己從海中拉起來」,這裡的「拔靴帶」(bootstrap) 指的是長統靴靴筒頂端後方的小環帶,是用以輔助穿長統靴。
  2. 因為嵌入式系統包含你從開機按下power那一剎那,bootloader involve開始,到kernel、device driver載入,到OS進入,OS上面進行的service,以及application等等,相當於整個軟體工業的微縮模型。 軟體工程領域所需要用到的技術,在嵌入式系統裡都能看到,只是深度和廣度的差別,所以從嵌入式系統的架構,可以看出整個軟體領域所含概的各種範疇。 平時你們在寫的程式,就軟體開發域領而言,只在application 這塊,但軟體並不是只有application而已,包含讓application 可以運作的os,是軟體寫出來的;os底下的kernel, driver,也是軟體寫出來的;讓電腦可以開機的bios,也是軟體寫出來的
  3. https://www.youtube.com/watch?v=2X3VgOmge2E
  4. http://blog.ez2learn.com/2010/07/17/talk-about-coroutine-and-gevent/
  5. http://www.infoq.com/cn/news/2014/04/sqlite-mysql-postgresql
  6. http://www.beyondjava.net/blog/model-view-whatever/
  7. http://www.cnblogs.com/slark/p/mvc-5-get-started-controller.html
  8. http://rix0r.nl/blog/2014/07/15/model-view-whatever/
  9. REST, Representational State Transfer Resource Uniform Resource Identifier (URI) Representation html, xml, json, etc. State Transfer well-defined operations https://ihower.tw/blog/archives/1542
  10. The formal REST constraints are Client–server Stateless Cacheable Layered system Uniform interface It's RESTful.
  11. http://www.dungeonsanddevelopers.com/
  12. http://skill.phodal.com/
  13. https://msdn.microsoft.com/zh-tw/library/dn167673.aspx
  14. http://wiki.mbalib.com/zh-tw/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91
  15. 薪水、興趣、工作環境