The Software Development Process (SDLC)
Total Page:16
File Type:pdf, Size:1020Kb
http://home.hit.no/~hansha/?page=software_development poke.com - and - The Software http://geek Development . Available: Process geek&poke (SDLC) O. Widder. (2013). Hans-Petter Halvorsen IT System B. Lund. (2013). Lunch. Available: http://www.lunchstriper.no, http://www.dagbladet.no/tegneserie/lunch/ Planning Deployment Maintenance Testing The Software Development Requirements Lifecycle Analysis (SDLC) Implementation Design 4 5 The Development Process The Development Process involves different phases, e.g.: In this case the overall Requirements are given by the Teacher in the The Requirements may be Assignment. given by the Customer Requirements The details are written by you! Design The Design phase is important, but make sure you have time left for all the other tasks as Are the Design wrong? Go well) back and correct it! Implementation Errors? Improve your code and fix the bugs Testing Make sure everything work as expected When you are finished, you deploy and test the solution Deployment on the Customer Site 6 Functionality Requirements Initial User Interface Planning Technology Platform Selection Technical Architecture Support Requirements Installation Project Plan Application Architecure Detailed Specifications System Interface Deployment/ Design Maintenance Design Deployment Finalize User Interface Acceptance Test Plans Testing Application Code Development System Testing Testing Implementation System Interface Development Unit Testing RegressionTesting Integration Testing Integration with existing Apps O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com 8 Software Releases Start Alpha Release Beta Releases RC (Release Candidate) RTM (Release To Manufacturing) Finished Note! other terms are also used 9 Software Releases Before the software is released • Alpha Release(s) (Internal release, not public) • Beta Release(s) (“Developer Preview”, “Consumer Preview”) • RC - Release Candidate(s) (“Release Preview”) • RTM – Release To Manufactoring Maintenance (after the software is released) • Patches (small fixes) • SP - Service Packs (lots of small fixes and pathes bundle together), SP1, SP2, R1, R2, .. … Start Planning next Release 10 Teams and Roles Customer/Stakeholders • Customer/Stakeholders • Project Manager • Software Architect Collaboration! • Software Designer • Developer Software Architect Software Tester • Tester • etc. Project Manager Software Designer Programmer 11 Software Teams 12 Software Team Stakeholders Project Manager Software Tester UX Designer System Engineer Programmer Software Architect A System Engineer is a general person that could be a Programmer, Architect, Designer, Tester in different phases in the project, or he could be a tester in one project and a programmer in another project – all in one person. That is usually the case in small companies, while in larger companies these roles (designer, tester, programmer) could be a full-time job. Project Planning and Management Project Planning Tools: Gantt Chart, Backlog, Task Board, Burn Down Chart, etc. B. Lund. (2013). Lunch. Available: http://www.lunchstriper.no, http://www.dagbladet.no/tegneserie/lunch/ 14 How to work in the project period Project Working with Documentation Management Project Tasks (Report, etc.) Start Finish Important: Work with these activities in parallel!!! 15 Brainstorming/Kick Off A Project should always start with a Brainstorming • Involve all in the group • Discuss what you are going to do in the project • How are you going to solve the project? • etc. 16 Deadlines As a software developer you need to deal with lots of deadlines during the software project! Proper Project Planning and Management makes it easier to fulfill these deadlines 17 Software Phases Hans-Petter Halvorsen Software Phases Requirements Deployment Design Testing Implementation Software Development Process – Requirements & Design • The Requirements is normally given by the Customer • SRS – Software Requirements Specification document Software Requirements & Design Requirements (WHAT): • WHAT the system should do • Describe what the system should do with Words and Figures,etc. • SRS – Software Requirements Specification Software Design (HOW): • HOW it should do it • Examples: GUI Design, UML, ER diagram, CAD, etc. • SDD – Software Design Document Many dont separate SRS and SDD documents, but include everything in a Requirements document. In practice, requirements and design are inseparable. Software Development Process - Design How the Software will work • Technical Design (Platform, Architecture, etc.) • UX Design (User eXperience, GUI/HMI) 22 Software Development Process Requirements Plan what you are going to do Design Implementation before you actually do it • Make sure to have the Design ready before you start the Implementation (Coding) • Flow Charts, UML, Database Modelling, etc. • Create Detailed Requirements • GUI/HMI – Start by designing your GUI on the “paper” 23 Software Development Process - Testing Document Test Planning Tests Perform Tests Results 24 Software Development Process - Testing Always test your application! • Test it yourself • Test it on other computers and environments • Make sure others test your application • Eat Your Own Dog Food 25 Software Development Process - Deployment Software deployment is all of the activities that make a software system available for use. • Make sure the Software is well tested • The Software should be easy to install 26 Software Development Methods/Processes How we approach the different phases in software development (Requirements, Design, Implementation, Testing, Deployment) differ depending on what kind of Software Development method we choose. A short overview of the most used/known methods are given on the next slides. Hans-Petter Halvorsen Software Development Methods • Waterfall model • Spiral model • V model • Iterative and Incremental development • Rapid application development (RAD) • Test Driven Development (TDD) • Agile development – eXtreme Programming (XP) – Scrum (the most popular Agile method) • Lean software development • Kanban • etc. 28 29 Software Development Methods Traditional Plan-driven Agile Methods Methods eXtreme Programming Scrum V-Model Waterfall (XP) Method Lean Software Feature Driven Development Development (FDD) Test Driven Kanban Spiral model Development (TDD) 30 Software Development Methods Traditional Plan-driven Methods Agile Methods eXtreme Programming (XP) Waterfall Method Scrum Feature Driven Development (FDD) V-Model Test Driven Development (TDD) Spiral model Lean Software Development Kanban Even if we use different software development methods, we deal with the same phases like Requirements, Design, Coding, Testing and Deployment – but they may have different priority and may be done in different manners and order, etc. 31 Plan-driven vs. Agile Plan-based development Requirements Requirements Design and engineering specification implementation Requirements change requests Agile development Requirements Design and engineering implementation I. Sommerville, Software Engineering: Pearson, 2010. 32 Waterfall method • Sequential process • The Phases Requirements, Design, Implementation, Testing, Deployment and Maintenance poke.com - need to be followed in that order. and - • In a strict Waterfall model, after each phase is finished, it proceeds to the next one. http://geek • Cons: – impossible for any non-trivial project to finish a phase of a . Available: software product's lifecycle perfectly before moving to the next phases geek&poke – For example, clients may not know exactly what requirements they need before reviewing a working prototype and commenting on it O. Widder. (2013). 33 The Waterfall Model Planning to create a new Software Finished Requirement A Sequential Process Finished Not Finished? -Go back and Fixit! Design Finished Not Finished? Implementation -Go back and Fixit! Finished Not Finished? -Go back and Fixit! Testing You cannot go to next phase before Deployment Not Finished? finsihed the previous phase -Go back and Fixit! Maintenance Software Finished V-model 35 V-model • An extension of the waterfall model • More flexible • “The V-Model reflects a project management view of software development and fits the needs of project managers, accountants and lawyers rather than software developers or users.” 36 Spiral model 37 Spiral model • Some key aspecta from Waterfall and RAD • Iterative risk analysis • Suitable for large-scale complex systems 38 Agile Software Development Hans-Petter Halvorsen 40 Agile • A group of software development methods • Iterative approach • Self-organizing and cross-functional Teams Examples: • eXtreme Programming (XP) • Scrum • Kanban 41 Agile Focus on Programmig Focus on Process XP Timebox-based Flow-based Scrum Kanban 42 Scrum Daily Scrum Meetings Sprint Review 43 Scrum • A Framework for Software Development • Agile Software Development method • Simple to understand • Flexible • Exremely difficult to master! • Self-organizing Teams (3-9 persons) • Scrum Team: – Product Owner – Scrum Master – Development Team 44 Kanban • Kanban is based on Lean and Toyota production priciples – Just-in-Time principle • Kanban has fewer “rules” than scrum • Kanban is flow-based, while Scrum is Timebox- based (Sprints) • Limit WIP (Work in Progress) • Less focus on Esitmation 45 Kanban board (Task board) https://kanbanflow.com Similiar to the Taskboard used in Scrum 46 eXreme Programming (XP) • An Agile method • Pair Programming • Code Reviews • Unit Testing • Standup Meetings 47 eXreme Programming (XP) 48 TDD 49 Finally…