Software Development Process Models

Software Development Process Models

Software Development Process Models From classical notions to more agile approaches Torsten Hahmann [email protected], BA8134 “Code & Fix” or “Cowboy Coding” 1) Write program 2) Test and fix program Problems: • program users not satisfied with program: definition phase (requirements & analysis) • fixing programs requires extensive program redesign: design phase • ill-prepared tests: test phase + implementation phase 29/09/06 Models of Software Development 2 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering What defines a development process? • Who does what at what time? • tasks • starting condition • documents (artefacts) received • output from previous stage • end conditions: finish criteria • final documents produced • input for next stage • order of tasks • who is involved • qualification • responsibility 29/09/06 Models of Software Development 3 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Development process models • Static process models • Waterfall model • V-Model • Incremental process model • Modern approaches • Iterative/Incremental process model • eXtreme Programming • Prototypic development • Test-driven development 29/09/06 Models of Software Development 4 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Waterfall model Software specification Design document 29/09/06 Models of Software Development 5 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Software specification I • 1. Goal • MUST • MAY • MUST NOT Software requirements • 2. Use of the product Analysis • Purpose • Target Group • Environment 29/09/06 Models of Software Development 6 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Example: Use Case diagram ehotel hotel reservation system inform <<actor>> book Pegasus Customer book book by book by online phone fax/email settle up ehotel clerk cancel cancel cancel by cancel by cancel online phone fax/email at Hotel Hotel (ehotel) (ehotel) (ehotel) clerk 29/09/06 Models of Software Development 7 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Software specification II • 3. Functionality • Can do a time estimate per „feature“ • Can track progress Software • 4. Data (persistent) requirements • 5. Performance Analysis • 6. User Interface • 7. Non-functional requirements & qualities Not too much details: -No implementation details (algorithms, data structure) -No technical solution (database, language, infrastructure) 29/09/06 Models of Software Development 8 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering V-model Use-case scenarios Acceptance Requirements test Validation Test cases System Analysis test Test cases Integration Design test Verification Coding Test Module (Modules) cases test 29/09/06 Models of Software Development 9 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Classical process models in a nutshell • problems of classical process models: • successive steps • document-driven • limited customers/users involvement • changing requirements in real world • pros: • customer gets a defined process (feasibility study) at the beginning of a project • can be good for large project-based developments • cons: • hard to think of all requirements at the beginning • documentation seems more important than program 29/09/06 Models of Software Development 10 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Scope • Project-based: contract between customer and contractor • clearly-defined overall goal • requirements: system functionality • non-functional requirements & qualities • e.g. large-scale software, e.g. logistics, industry, etc. • Commercial-of-the-shelf (COTS) product • constantly improving/changing releases • e.g. end-customer software (office, etc.) • Open-goal projects • e.g. academic research, prototypes, demos 29/09/06 Models of Software Development 11 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Incremental process model Initial definition complete software changes specification X=0 Design Define extended modefied model version X functionality X=X+1 changes partial architecture changes Code & test new ideas & wishes version X Product version X Use version X 29/09/06 Models of Software Development 12 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Agile development processes • Practices for every-day development required • focus on small and medium-sized software projects (small teams) • progressing, not spending too much time on design and specifications that might be useless • Agility • adaptable instead of predictable • “light-weight methodology” • minimizing risk by short-term focus (1-8 weeks) • being able to release a product after each cycle 29/09/06 Models of Software Development 13 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering „Agile Manifesto“ • Individuals and interactions over processes and tools • close, daily cooperation (possibly face-to-face) • self-organizing teams • trust in motivated individuals • Working software over comprehensive documentation • Working software is the principle measure of progress • Simplicity • Customer collaboration over contract negotiation • Responding to change over following a plan see http://www.agilemanifesto.org/ 29/09/06 Models of Software Development 14 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Development process models • Static process models • Waterfall model • V-Model • Incremental process models • Modern approaches (Agile) • eXtreme Programming • Prototypic development • Test-driven development 29/09/06 Models of Software Development 15 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering eXtreme Programming (XP) • Communication • questions instead of assumptions • „coach“ helps to overcome communication issues • Simplicity • try not to think of every eventuality in future • just implement what is really necessary • refactoring after iterations • Feedback • everybody gives and receives feedback • everybody is a little bit happier ☺ • Courage • try and compare alternative designs • no problem to throw away code 29/09/06 Models of Software Development 16 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Planning in XP • Plan by priorities (feature, defect tracking) • Plan for the next iteration • Take responsibility, do not delegate it • Use techniques like “story cards” 29/09/06 Models of Software Development 17 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Methods of XP • Pair programming • Best form of communication • Coding and Thinking • „Two pairs of eyes see more“ • Testing • No feature without test • Independent, automated tests • Extensive refactoring after each iteration • Strict coding conventions 29/09/06 Models of Software Development 18 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Software Prototypes • Software prototype different from „Product prototype“ • Help to elicit requirements • Paper prototypes (GUI) • Fake GUI • Basis for discussion • Experimental: can try & show alternatives • Practical experience & feasibility 29/09/06 Models of Software Development 19 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Categories of prototypes • Demonstration • for project acquisition • Explorative prototype • for analysis • Experimental prototype • evaluate design alternatives • show technical feasibility • Pilote system (evolutionary) • e.g. selected customer 29/09/06 Models of Software Development 20 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Horizontal vs. vertical prototype vertical prototype horizontal prototype 29/09/06 Models of Software Development 21 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Explorative Prototyping • Paper • Usability Engineering • try to find a good user interface design with prospective users • use: paper, post-it notes, colors • one developer: „plays“ software • one developer: takes notes • Software • fake GUI (Visual Basic, C#) • discuss it with customers • what do they expect will happen • what do they miss 29/09/06 Models of Software Development 22 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Test-driven development (TDD) • Principle 1: Test-First-Development (TFD) • For each feature: • write test first (including automation) • code afterwards • Principle 2: Refactoring • try to remove duplicate code • essential for keeping code simple • improve code quality • make it maintainable 29/09/06 Models of Software Development 23 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Test-driven development If it's worth building, it's worth testing. If it's not worth testing, why are you wasting your time working on it? 29/09/06 Models of Software Development 24 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Test-driven development (TDD) • Advantages of TFD • immediate checking gives more confidence • can write several tests at the beginning of each release cycle • give a good overview of remaining effort • forces developers to write tests • But requires: Refactoring • otherwise software becomes unmaintainable TDD = TFD + Refactoring 29/09/06 Models of Software Development 25 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering When using agile methods? • Previously just „Code & Fix“ • A little bit more order, planning • Easier step than introduction of classical model • Small- & Medium-sized teams • About a dozen developers • Approaches • Volatile requirements • Motivated developers • Customers wish to be integrated 29/09/06 Models of Software Development 26 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering Classical vs. agile processes • Classical processes (anticipating) • Disciplined, detailed plan • Emphasis on long-term planning Focus: process Plan-driven • Agile processes (adaptive) • Compromise between no and too much process • Short-term focus • Less documentation, code is documentation Focus: humans Agile 29/09/06 Models of Software Development 27 Torsten Hahmann CSC444H, Fall 2006 – Software Engineering.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    27 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us