Software Development a Practical Approach!
Total Page:16
File Type:pdf, Size:1020Kb
Software Development A Practical Approach! Hans-Petter Halvorsen https://www.halvorsen.blog https://halvorsen.blog Software Development A Practical Approach! Hans-Petter Halvorsen Software Development A Practical Approach! Hans-Petter Halvorsen Copyright © 2020 ISBN: 978-82-691106-0-9 Publisher Identifier: 978-82-691106 https://halvorsen.blog ii Preface The main goal with this document: • To give you an overview of what software engineering is • To take you beyond programming to engineering software What is Software Development? It is a complex process to develop modern and professional software today. This document tries to give a brief overview of Software Development. This document tries to focus on a practical approach regarding Software Development. So why do we need System Engineering? Here are some key factors: • Understand Customer Requirements o What does the customer needs (because they may not know it!) o Transform Customer requirements into working software • Planning o How do we reach our goals? o Will we finish within deadline? o Resources o What can go wrong? • Implementation o What kind of platforms and architecture should be used? o Split your work into manageable pieces iii • Quality and Performance o Make sure the software fulfills the customers’ needs We will learn how to build good (i.e. high quality) software, which includes: • Requirements Specification • Technical Design • Good User Experience (UX) • Improved Code Quality and Implementation • Testing • System Documentation • User Documentation • etc. You will find additional resources on this web page: http://www.halvorsen.blog/documents/programming/software_engineering/ iv Information about the author: Hans-Petter Halvorsen The author currently works at the University of South-Eastern Norway. The author has been working with Software Engineering for more than 20 years. For more information, visit my web site: https://halvorsen.blog v Table of Contents Preface .................................................................................................. iii Part 1 : Introduction ............................................................................ 18 1 Introduction ................................................................................... 19 1.1 Background .................................................................................................. 23 1.2 Topics ........................................................................................................... 24 1.3 Tools ............................................................................................................ 26 2 Software History ............................................................................ 30 2.1 Introduction ................................................................................................. 30 2.2 Software Trends ........................................................................................... 32 3 Software Development ................................................................. 34 3.1 Challenges .................................................................................................... 35 3.2 Software Systems......................................................................................... 35 3.3 Documentation ............................................................................................ 37 3.4 Iterations and Releases ................................................................................ 38 Part 2 : Software Engineering ............................................................. 40 4 Development Teams ..................................................................... 41 4.1 Teams .......................................................................................................... 42 4.2 Roles ............................................................................................................ 42 4.2.1 Stakeholders ..................................................................................................................... 43 4.2.2 Project Manager ............................................................................................................... 43 4.2.3 System Architect............................................................................................................... 43 viii 4.2.4 UX Designer ...................................................................................................................... 43 4.2.5 Programmer ...................................................................................................................... 43 4.2.6 Software Tester ................................................................................................................ 43 5 Software Development Phases ..................................................... 45 5.1 Requirements .............................................................................................. 46 5.2 Design .......................................................................................................... 47 5.2.1 Technical Design ............................................................................................................... 48 5.2.2 UX Design .......................................................................................................................... 48 5.3 Implementation ........................................................................................... 48 5.4 Testing ......................................................................................................... 49 5.5 Deployment ................................................................................................. 49 6 Software Development Process .................................................... 50 6.1 Plan-driven models ...................................................................................... 52 6.1.1 Waterfall model................................................................................................................ 52 6.1.2 V-model ............................................................................................................................. 53 6.2 Agile Software Development ....................................................................... 54 6.2.1 Waterfall vs. Agile ............................................................................................................ 58 6.2.2 eXtreme Programming (XP) ............................................................................................. 59 6.2.3 Scrum ................................................................................................................................ 61 6.2.4 Kanban .............................................................................................................................. 63 6.3 Hybrid Process Models................................................................................. 64 6.3.1 Unified Process (UP)/ Rational Unified Process (RUP) .................................................. 64 6.4 Summary ...................................................................................................... 65 6.5 Exercises ...................................................................................................... 65 7 Scrum ............................................................................................. 67 ix 7.1 The Scrum Process ....................................................................................... 67 7.2 Scrum Events ............................................................................................... 68 7.2.1 Daily Scrum Meeting ........................................................................................................ 69 7.3 Scrum Artifacts............................................................................................. 70 7.4 The Scrum Team .......................................................................................... 70 7.5 Scrum Meetings ........................................................................................... 71 7.6 Scrum Terms ................................................................................................ 72 7.7 Tips and Tricks.............................................................................................. 74 8 Project Management..................................................................... 75 8.1 Project Planning ........................................................................................... 76 8.2 Kick-off/Brainstorming ................................................................................. 76 8.3 Software Development Plan (SDP) ............................................................... 78 8.3.1 Gantt Chart ....................................................................................................................... 79 8.4 Meetings ...................................................................................................... 80 8.4.1 Meeting Agenda ............................................................................................................... 81 8.4.2 Minutes of Meeting.......................................................................................................... 81 8.5 Agile Project Planning and Tracking ............................................................. 82 8.6 Summary ...................................................................................................... 84 9 Requirements Engineering ...........................................................