CSCI 3428: Software Engineering Tami Meredith Chapter 2 Modeling the Process and Life Cycle.

Slides:



Advertisements
Similar presentations
2003 Mateusz Żochowski, Marcin Borzymek Software Life Cycle Analysis.
Advertisements

SOFTWARE DEVELOPMENT METHODOLOGIES Methodologies Waterfall Prototype model Incremental Iterative V-Model Spiral Scrum Cleanroom RAD DSDM RUP.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
CSE 470 : Software Engineering The Software Process.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Modeling the Process and Life Cycle CSCI 411 Advanced Database and Project Management Monday, February 2, 2015.
29 September Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
CH02: Modeling the process and life cycle Process of developing software (organization and discipline in the activities) contribute to the quality of the.
Software Life Cycles ECE 417/617: Elements of Software Engineering
Agile
 The Rise of Computer Science ◦ Machine Language (1 st Gen) ◦ Assembly Language (2 nd Gen) ◦ Third Generation Languages (FORTRAN, BASIC, Java, C++, etc.)
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Development Process
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 2 The process Process, Methods, and Tools
Agile Software Development Chapter 3 – Lecture 1 Adrián Susinos.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
Software Processes Sumber dari : cc.ee.ntu.edu.tw/~farn/courses/SE/ch4.ppt.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
CS CS 5150 Software Engineering Lecture 3 Software Processes 2.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger Joanne M. Atlee 4 th Edition.
Chapter 2 Modelling the Process and Life Cycle. Pfleeger and Atlee, Software Engineering: Theory and PracticeChapter 2.2 Contents 2.1 The Meaning of Process.
1 SWE Introduction to Software Engineering Lecture 4.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
SOFTWARE PROCESS MODELING Benjamin Dixon U
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
1 Requirements Engineering for Agile Methods Lecture # 41.
Systems Development Life Cycle
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Embedded Systems Software Engineering
Appendix B Agile Methodologies
Software Development methodologies
Introduction to Software Engineering
Methodologies For Systems Analysis.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger Joanne M. Atlee 4th Edition.
Lecture 2 Revision of Models of a Software Process
Software life cycle models
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
Copyright 2006 Pearson/Prentice Hall. All rights reserved.
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Appendix B Agile Methodologies
System Development Methods
Presentation transcript:

CSCI 3428: Software Engineering Tami Meredith Chapter 2 Modeling the Process and Life Cycle

Process A series of steps involving activities, constraints, and resources that produce an intended output of some kind. A. Describes all major activities: a) each has clearly defined entry and exit criteria. b) activities are sequenced in some manner c) each has principles that explain the goals B. Uses resources, subject to constraints to produce intermediate and final products C. Constraints may apply at any time to resources, activities, or output

Software Life Cycle 1. Requirements analysis and definition 2. System design 3. Program design 4. Implementation 5. Unit testing 6. Integration testing 7. System testing 8. Delivery 9. Maintenance

Waterfall Model

 US DoD Standard 2167A: A Procurement Model  Milestones and Deliverables are the foundations  Fundamentally sound! a) Doing the steps in another order would not work b) Skipping steps would be a disaster c) Can do more but never really do less  Major Problem: Software development is very complex and the waterfall model is very simple  Human make mistakes, we miss things, we have to back and fix them, we have to contend with unknowns...

Software Development (Actual)

Prototyping Creation of a partially developed product that allows customers to examine some aspect of the proposed solution Sometimes several prototypes created to assess alternatives Balance needed: Time spent on prototype vs. time saved in actual development Heavily used for User Interfaces (UI) Issues: Customers want to keep the prototype If prototype works, managers want to keep it

Evaluation Validation (Completeness): Have all the requirements been met? We build the right system! Verification (Correctness): Do things work correctly? We build the system right! Justification (Conciseness): Have we added anything extra? We just build the system!

Waterfall Model with Prototyping

The V Model Waterfall model with explicit evaluation German Ministry of Defense More fully integrates testing to evaluation Key Idea: Requirements and design documents are crucial at all stages and should be constantly referenced!

V Model

The Prototyping Model Requires strong client/user input Not agile programming – requirements and design still have a key role Exploring alternatives is one of its strengths Unexpected problems can irritate clients Client pressure to use early prototypes can be problematic Can get stuck in revision cycles (usually due to communication/understanding w.r.t. client)

Prototyping Model

Operational Specification Key: Convert specification to code algorithmically Useful when requirements are complex and/or uncertain Automated approaches require powerful tool support Minimal coding – translation only, if done manually Transformation process often ensures verification, validation, and justification of resulting system Ad-hoc variation uses code as the specification language (cf. prototyping)

Operational Specification

Transformational Development Refinement of operational specification Requires strong tool support (e.g., VHDL, Rhapsody) Very dependent upon notation Minimises programming but very expensive tools and needed experts in the (complex) notations Operational Spec: Does it work the way we want? Focus on the system's operation/functionality cf. Transformational Dev: Focus on getting the specification correct. Let tools do the rest of the job

Transformational Model

Phased Development Intended to get a (minimal) product into consumer's hands fast! Deliver a basic, minimal, system to the client While client uses the system (e.g., finds faults) develop an improved/extended version More of a "Meta-Model" and each release still requires its own development process/model Closely matches "Evolutionary" software development

Phased Development

Incremental & Iterative Models Incremental Development:  Deliver a basic system with few features  Add features in subsequent releases  Each feature is complete when it is released Iterative Development:  Deliver an initial system with all features partly working  Subsequent releases improve the features with better or additional functionality Hybrid (Actual) Development:  Subsequent releases may improve some features or add new ones. Both approaches used

Phased Models

Advantages (Phased Approaches) Early training for clients/users Somewhat like prototyping; minimal functionality can enable things to be easily changed if they are not correct Faster time to market Frequent releases permit fault repair on subsequent releases Earlier finding of faults in core (earliest) features Each release may focus on one area, making tasks easier for programming and development

Spiral Model Combine development with risk management Recognises iterative nature of software development Extra "Concept of Operations" document before requirements analysis and specification Budgeting, planning, exploration of alternatives, risk analysis, and prototyping are all integrated into the model Extremely heavy-weight but detailed and thorough Lots of steps involved for 4 complete iterations

Boehm's Spiral Model

Agile Manifesto Four tenets of software development: 1) Value individuals over processes and tools 2) Focus on the software, not the documents 3) Customer involvement for more than contract negotiations and sign-offs 4) Respond to change rather than a rigid plan

Agile Methods... Adaptive Software Development Agile Modelling Agile Unified Process Crystal Clear Dynamic Systems Development Method Essential Unified Process Extreme Programming Feature Driven Development Graphical System Design Kanban Lean Software Development Open Unified Process Scrum Velocity Tracking

Extreme Programming (Part 1) 1. Planning Game: Client-driven prioritised story-boarding (use-cases) 2. Small Releases: Get it to the user fast and often 3. Metaphor: Selection of common language, metaphors, concepts 4. Simple Design: Design for the current needs, do not plan for tomorrow 5. Write Tests First: Test cases create client-based specifications 6. Refactoring: Reconsider, adapt, and modify existing design/parts

Extreme Programming (Part 2) 7. Pair Programming: Share knowledge, catch mistakes earlier 8. Collective Ownership: Everyone knows all parts of the code 9. Continuous Integration: Small, regular releases without huge changes 10. Sustainable Pace: Tired, overworked programmers are sloppy and make errors 11. On-Site Customer/Client: Client is an active participant for all elements 12. Coding Standards: Needed to support collective ownership

Some Issues for Agile Methods Lack of planning; Dynamic approaches can lead to weak architecture and design Not scalable to large teams due to independence. Customer must be committed to participating Refactoring is often not supported (takes time for no new features) Coding faults often less frequent but design and requirements faults can go unnoticed for longer periods of time Paired programming can fail badly! Can't be forced on programmers Keeping clients close to programmers can be very problematic (see too much, in-the-way, programmers not always good CSRs)

Process Modelling Useful for academia and research Not seen as useful in most industrial settings Value increases as risk and complexity increases Most useful for safety/mission critical software Can be: a) Static – depict the model as a whole b) Dynamic – show the model in action Various notations: Lai notation, Abdel-Hamid approach, Marvel Specification Language Only modelling the process – not the software, requirements, or other development artefacts

Famous Moments in Software Engineering