Announcements/Assignments

Slides:



Advertisements
Similar presentations
Software Processes.
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chap 2. Software Processes
What is software? Computer programs and associated documentation
1 Chapter 4 - Part 1 Software Processes. 2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing,
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
 © Ian Sommerville A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.
Chapter 2 – Software Processes
ISNE101 Dr. Ken Cosh. Recap  We’ve been talking about Software…  Application vs System Software  Programming Languages  Vs Natural Languages  Syntax,
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Software Processes Coherent sets of activities for specifying, designing, implementing and testing software systems.
SYSC System Analysis and Design
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 3Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
©Ian Sommerville 2000 Software Engineering, 6th edition Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 3 Software Processes.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Lecture 2 Software Processes CSC301-Winter 2011 Hesam C. Esfahani
Software Processes Sumber dari : cc.ee.ntu.edu.tw/~farn/courses/SE/ch4.ppt.
Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Lecture 3 Software Engineering Models (Cont.)
1 SWE Introduction to Software Engineering Lecture 4.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
An Introduction to Software Engineering
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
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.
Software Engineering Saeed Akhtar The University of Lahore Lecture 3 Originally shared for: mashhoood.webs.com.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Chapter 2 – Software Processes
Methodologies and Algorithms
Chapter3:Software Processes
Lecture 3 Prescriptive Process Models
CS 389 – Software Engineering
Chapter 2: Software Processes
Chapter 2 – Software Processes
Software Processes (a)
V-Shaped SDLC Model Lecture-6.
Chapter 2 SW Process Models
Chapter 2: Software Process Models
Software Processes.
Requirements and the Software Lifecycle
Chapter 2 – Software Processes
Chapter 2 Software Processes
Software life cycle models
Process Models Coming up: Prescriptive Models.
An Overview of Software Processes
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Processes.
Chapter 2: Software Process Models
SNS College of Engineering Coimbatore
Chapter 2 Software Processes
Chapter 2 – Software Processes
Presentation transcript:

Announcements/Assignments Beginning on Friday, this class will meet in Architecture Hall, room 127 (this is on the East side of the building) I asked you to read Ghezzi Chapter 1 for today Be sure to attend class Friday to discuss the project and do team selection

This Class

Problems of Scale in Engineering Built by one person Requires minimal to no planning Design and implementation blend Simple tools & construction Faults have small consequences Teams with different roles Scheduling and dependencies Models & abstraction Specialized languages and tools Formal communication Large impact of changes and faults Domain knowledge

Problems of Scale in Engineering Built by one person Requires minimal to no planning Design and implementation blend Simple tools & construction Faults have small consequences Teams with different roles Scheduling and dependencies Models & abstraction Specialized languages and tools Formal communication Large impact of changes and faults Domain knowledge These same problems of scale apply when transitioning from coding to software engineering

Scaling Up Requires Systematic Engineering Processes of Many Types Requirements elicitation and analysis Requirements specification Requirements verification Architectural design Lower-level design Coding and unit testing Integration testing System testing Evolution and maintenance

What This Class is About Building complex software systems Interacting with other stakeholders Building the right system (getting system requirements right) Creating extensible architectures and system designs Making sure you’ve built the system right (verification and validation) It is only minimally about “coding”

Goal Begin to prepare you for: Large-scale software development including group dynamics, management Working with other people coordination of effort requirements elicitation and specification design techniques software processes quality assurance approaches sophisticated tools

Software Lifecycle and Process Models

Software Lifecycle & Process Models Abstract representations of software development processes Provide guidance for project management What major tasks should be tackled next? How long should we spend on this task? What kind of progress has been made? Provide guidance for project staff Am I doing the right thing? Am I on schedule?

“Monolithic” Processes

Problems The assumption is that an informal understanding of requirements prior to development is enough This assumption almost never holds; requirements change as our understanding of the system grows, and informality leads to errors Interaction with the customer occurs only at the beginning (requirements) and end (after delivery) Limiting interaction makes it difficult to correctly understand requirements in a timely manner

“Staged” Processes

Advantages Reduce risks by improving visibility Allow project changes as the project progresses based on feedback from the customer based on domain knowledge gained

Software Process Models Waterfall model Linear, distinct phases of specification and development Reuse-based model The system is assembled from existing components Incremental model The system is built in distinct increments Agile / XP model Takes the incremental model to extremes Formal systems model A mathematical system model is formally transformed to an implementation

Simple Waterfall Process Model Requirements Analysis and Specification Design and Specification Coding and Unit Testing Integration and System Testing Delivery and Maintenance

Historical Notes The waterfall model is based on development models used in manufacturing. In such cases, changes in product and requirements are prohibitively expensive, so the model works. Also known as a “Big Design up Front” model First known presentation, 1956, Herbert Benington at a Symposium on programming methods First formalization, Winston Royce, as an example of a “flawed” model.

Waterfall Model Phases Requirements analysis and specification Often preceded by feasibility or “market” study Identify “what” must be built, including functionality and constraints Document requirements in user terms and in terms appropriate for designers/developers Requires interaction with customers, and domain knowledge Various models for expressing requirements are available

Waterfall Model Phases Design and specification Specifies the “how”, not the “what” Often split into architectural and detailed design Architectural design expresses overall system organization, decomposes system into modules Detailed design provides further details Considers reuse Various models for expressing designs are available

Waterfall Model Phases Coding and unit testing System is coded to meet the design specification Unit testing is applied to individual modules, usually by developers

Waterfall Model Phases Integration and system testing Integration testing tests modules as they are put together, using stubs and drivers System testing tests the entire system, including hardware and software (perhaps with simulators) These phases may be conducted by developers and/or dedicated test engineers

Waterfall Model Phases Delivery and maintenance System is packaged for delivery; this includes all code, documentation, and other deliverables System goes into “maintenance”, where it continues to be perfected, adapted, and corrected When systems are evolving (as opposed to just being “corrected”), maintenance means revisiting the requirements, design, implementation and testing phases again.

Waterfall Model Advantages Simple, disciplined, structured Time spent well early in the project increases the chance it will succeed and decreases some risks Emphasizes documentation, important in long-term larger projects Requirements Analysis and Specification Design and Specification Coding and Unit Testing Integration and System Testing Delivery and Maintenance

Waterfall Model Disadvantages Each phase must be complete before the next can be begun Difficult to accommodate change after the process is underway Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements The model is appropriate only when the requirements are well-understood Requirements Analysis and Specification Design and Specification Coding and Unit Testing Integration and System Testing Delivery and Maintenance

Waterfall Model with “Feedback” Requirements Analysis and Specification Design and Specification Coding and Unit Testing Integration and System Testing Delivery and Maintenance

Reuse-Oriented Development Model Based on systematic reuse where systems are integrated from existing components Process stages Component analysis Requirements modification System design with reuse Development and integration

Reuse-Oriented Development Model Advantages Can save time and effort Builds on reliability of existing systems Drawbacks Can lead to unfortunate compromises Building with future reuse in mind can slow effort, as we try to build things that are more general

Incremental Development Model (a.k.a. Feature Driven Development) Development/delivery is broken into increments Each increment delivers part of the required functionality Identifying self-contained functional units (“features”) that may be delivered to customers is crucial

Incremental Development Model User requirements are prioritized Highest priority requirements are included in early increments Once development of an increment is started, the requirements are frozen Requirements for later increments can still evolve some

Incremental Development Model Advantages Customer value is delivered with each increment so system functionality is available earlier Early increments act as prototypes Higher priority system services tend to receive the most testing (not necessarily a bad thing for non-critical systems) Disadvantages Expectation that most requirements can be known early in the process

“Agile” Development Models Development and delivery of very small increments of functionality Teams of 5-10 spend 2-4 weeks per increment Needs to begin with a relatively clear view of requirements, and a sound architecture/design Relies (mostly) on well validated principles Pair programming (reviews) Revisiting and refactoring (iteration and refinements) Test first (test before programming)

Agile Development Models Advantages Provides functionality quickly Allows fast response to changing requirements Allows early and frequent feedback Early functionality gets more testing Disadvantages Focuses on working software at the expense of documentation Development can get off track if customer is not clear about ultimate goals Future system maintainability depends on how well requirements/architecture can be expressed initially

Formal Systems Development Model Based on the transformation of a mathematical specification through different representations to an executable program Transformations are “correctness-preserving” straightforward to show that the program conforms to its specification

Formal Transformations Small increments

Formal Systems Development Advantages Produces highly reliable systems Disadvantages Requires specialized skills and training Difficult to formally specify some aspects of systems Applicability Critical systems (or subsystems), especially those where a safety or security case must be made before the system is put into operation

Software Process Models Waterfall model Linear, distinct phases of specification and development Reuse-based model The system is assembled from existing components Incremental model The system is built in distinct increments Agile / XP model Takes the incremental model to extremes Formal systems model A mathematical system model is formally transformed to an implementation