Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

The talk about web application and agile software development in Southern Taiwan University of Science and Technology on 2016/12/02.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

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

  1. 1. What are programs? 兼談現代化軟體開發 Speaker: Cobalt Chang 2016/12/02
  2. 2. 自我介紹 ❖ 張惇育 ❖ 成功大學資訊工程博士 ❖ 經歷 ➢ 宏普科技 (現為樺漢集團樺賦科技) ➢ 新漢股份有限公司 ❖ 專長與興趣 ➢ 嵌入式系統開發 ➢ 分散式軟體架構設計 ➢ 機器學習 2
  3. 3. Outline ❖ What are programs? ❖ Web application developing ❖ Modern software development 3
  4. 4. What are programs? 4
  5. 5. 5 起點 終點 如何描述一個問題? 回 到 原 點
  6. 6. 6 每個岔路 標記起來 每個死路也 標記起來
  7. 7. 7
  8. 8. 8
  9. 9. 9 第一層 第二層 第三層 第四層 深 度 優 先 探 索
  10. 10. 10 What are programs? Be a Learner!
  11. 11. Outline ❖ What are programs? ❖ Web application developing ❖ Modern software development 11
  12. 12. Demo! ❖ 先來看個實際範例 ➢ https://github.com/cobaltchang/ovff 12
  13. 13. 找出瓶頸 ❖ 讀檔是瓶頸,WHY? ❖ C ➢ char * fgets ( char * str, int num, FILE * stream ); ❖ C++ ➢ istream &getline( char *buffer, streamsize num, char delim ); ❖ 線性搜尋,O(N) 13
  14. 14. 功夫 ❖ 有什麼方式可以加速? 14
  15. 15. Outline ❖ What are programs? ❖ Web application developing ➢ Database ❖ Modern software development ➢ NO programming? Not Only programming ➢ Agile development ➢ DevOps 15
  16. 16. 資料庫索引 ❖ B-Tree ❖ B+-Tree ❖ B*-Tree 16An example of B-Tree
  17. 17. 17
  18. 18. 資料庫軟體 ❖ SQLite ➢ 常用於嵌入式系統 ❖ MySQL ➢ 容易入門 ➢ 學習資源多 ❖ PostgreSQL, or Postgres ➢ 物件導向資料庫 ❖ Oracle ➢ 商用大型資料庫 18
  19. 19. Outline ❖ What are programs? ❖ Web application developing ➢ Database ➢ Web framework ❖ Modern software development 19
  20. 20. 軟體開發實例 PythonJavascript DjangoAngularJS $resource ($http) Django REST framework RESTful API (JSON) HTML / CSS Database ORM Front-end Back-end Language Framework Module / App 20
  21. 21. Django ❖ Model-Template-View, or MTV ❖ Object-relational mapper, or ORM ❖ Template engine 21
  22. 22. Outline ❖ What are programs? ❖ Web application developing ❖ Live coding! ➢ 任務目標:把檔案搜尋換成資料庫搜尋 ❖ Modern software development 22
  23. 23. Outline ❖ What are programs? ❖ Web application developing ❖ Live coding! ❖ Modern software development ➢ NO programming? Not Only programming ➢ Agile development ➢ DevOps 23
  24. 24. Not Only programming ❖ 軟體開發是… ➢ coding ➢ compiling ➢ debugging ➢ building ❖ 那叫寫程式,那不是軟體工程,甚至不能稱為軟體產品。 24
  25. 25. 人月神話 25
  26. 26. 軟體開發流程 26
  27. 27. 測試驅動開發 ❖ Testing ➢ Unit testing ➢ Integration testing ❖ Refactor 重構 ❖ TDD是一種開發方法,不是測試 ➢ 將規格以可執行的「測試案例」來表達 27
  28. 28. Co-work ❖ Version control ❖ Issue tracking ❖ Documenting ❖ Code review 28
  29. 29. 敏捷式軟體開發 ❖ Test-Driven Development 測試驅動開發 ❖ Continuous Integration 持續整合 ❖ Refactoring 重構 ❖ Stand up 站立會議 ❖ Frequent Releases 頻繁發佈 ❖ Minimal Documentation 測試即文件 ❖ Collaborative Focus 代碼共用 ❖ Customer Engagement 現場客戶 ❖ Automated Testing 自動化測試 ❖ Adaptive Planning 可調整計劃 ❖ Pair-Programming 結對編程 敏捷開發是一種以人為核心、迭代、循序漸進的開 發方法。在敏捷開發中,軟體項目的構建被切分成 多個子項目,各個子項目的成果都經過測試,具備 集成和可運行的特性。 29
  30. 30. DevOps ❖ 軟體工程劃分為兩個維度 ➢ 一個是代表流程的[開發]、[維運] ➢ 一個是代表資源的[人力]、[設備] ❖ 開發就是研發設計與產出軟體程式的過程 ❖ 維運就是讓軟體真正成為產品所需的流程 ❖ 再加上QA 30
  31. 31. 為什麼會出現DevOps? 10+ Deploys per Day:Dev and Ops Cooperation at Flickr 31
  32. 32. DevOps就是持續交付 32
  33. 33. Outline ❖ What are programs? ❖ Web application developing ❖ Live coding! ❖ Modern software development ❖ What are programs? 33
  34. 34. What are programs? 34
  35. 35. 35 練功三階段
  36. 36. Questions? 36

    Be the first to comment

    Login to see the comments

The talk about web application and agile software development in Southern Taiwan University of Science and Technology on 2016/12/02.

Views

Total views

511

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

14

Shares

0

Comments

0

Likes

0

×