©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes  Coherent sets of activities for specifying, designing, implementing and testing software systems
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 2 Objectives  To introduce software process models  To describe a number of different process models and when they may be used  To describe outline process models for requirements engineering, software development, testing and evolution  To introduce CASE technology to support software process activities
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 3 Topics covered  Software process models  Process iteration  Software specification  Software design and implementation  Software validation  Software evolution  Automated process support
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 4 The software process  A structured set of activities required to develop a software system • Specification • Design • Validation • Evolution  A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 5 Generic software process models  The waterfall model • Separate and distinct phases of specification and development  Evolutionary development • Specification and development are interleaved  Formal systems development • A mathematical system model is formally transformed to an implementation  Reuse-based development • The system is assembled from existing components
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 6 Waterfall model R e q u i r e m e n t s d e f i n i t i o n S y s t e m a n d s o f t w a r e d e s i g n I m p l e m e n t a t i o n a n d u n i t t e s t i n g I n t e g r a t i o n a n d s y s t e m t e s t i n g O p e r a t i o n a n d m a i n t e n a n c e
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 7 Waterfall model phases  Requirements analysis and definition  System and software design  Implementation and unit testing  Integration and system testing  Operation and maintenance  The drawback of the waterfall model is the difficulty of accommodating change after the process is underway
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 8 Waterfall model problems  Inflexible partitioning of the project into distinct stages  This makes it difficult to respond to changing customer requirements  Therefore, this model is only appropriate when the requirements are well-understood
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 9 Evolutionary development  Exploratory development • Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements  Throw-away prototyping • Objective is to understand the system requirements. Should start with poorly understood requirements
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 10 Evolutionary development V a l i d a t i o n F i n a l v e r s i o n D e v e l o p m e n t I n t e r m e d i a t e v e r s i o n s S p e c i f i c a t i o nI n i t i a l v e r s i o n O u t l i n e d e s c r i p t i o n C o n c u r r e n t a c t i v i t i e s
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 11 Evolutionary development  Problems • Lack of process visibility • Systems are often poorly structured • Special skills (e.g. in languages for rapid prototyping) may be required  Applicability • For small or medium-size interactive systems • For parts of large systems (e.g. the user interface) • For short-lifetime systems
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 12 Formal systems development  Based on the transformation of a mathematical specification through different representations to an executable program  Transformations are ‘correctness-preserving’ so it is straightforward to show that the program conforms to its specification  Embodied in the ‘Cleanroom’ approach to software development
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 13 Formal systems development R e q u i r e m e n t s d e f i n i t i o nF o r m a l s p e c i f i c a t i o nF o r m a l t r a n s f o r m a t i o nI n t e g r a t i o n a n d s y s t e m t e s t i n g
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 14 Formal transformations R 2 F o r m a l s p e c i f i c a t i o n R 3E x e c u t a b l e p r o g r a m P 2P 3P 4 T 1T 2T 3T 4 P r o o f s o f t r a n s f o r m a t i o n c o r r e c t n e s s F o r m a l t r a n s f o r m a t i o n s R 1 P 1
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 15 Formal systems development  Problems • Need for specialised skills and training to apply the technique • Difficult to formally specify some aspects of the system such as the user interface  Applicability • Critical systems especially those where a safety or security case must be made before the system is put into operation
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 16 Reuse-oriented development  Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems  Process stages • Component analysis • Requirements modification • System design with reuse • Development and integration  This approach is becoming more important but still limited experience with it
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 17 Reuse-oriented development R e q u i r e m e n t s s p e c i f i c a t i o nC o m p o n e n t a n a l y s i s D e v e l o p m e n t a n d i n t e g r a t i o n S y s t e m d e s i g n w i t h r e u s e R e q u i r e m e n t s m o d i f i c a t i o n S y s t e m v a l i d a t i o n
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 18 Process iteration  System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems  Iteration can be applied to any of the generic process models  Two (related) approaches • Incremental development • Spiral development
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 19 Incremental development  Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality  User requirements are prioritised and the highest priority requirements are included in early increments  Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 20 Incremental development V a l i d a t e i n c r e m e n t D e v e l o p s y s t e m i n c r e m e n t D e s i g n s y s t e m a r c h i t e c t u r e I n t e g r a t e i n c r e m e n t V a l i d a t e s y s t e m D e f i n e o u t l i n e r e q u i r e m e n t sA s s i g n r e q u i r e m e n t s t o i n c r e m e n t s S y s t e m i n c o m p l e t e F i n a l s y s t e m
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 21 Incremental development advantages  Customer value can be delivered with each increment so system functionality is available earlier  Early increments act as a prototype to help elicit requirements for later increments  Lower risk of overall project failure  The highest priority system services tend to receive the most testing
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 22 Extreme programming  New approach to development based on the development and delivery of very small increments of functionality  Relies on constant code improvement, user involvement in the development team and pairwise programming
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 23 Spiral development  Process is represented as a spiral rather than as a sequence of activities with backtracking  Each loop in the spiral represents a phase in the process.  No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required  Risks are explicitly assessed and resolved throughout the process
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 24 Spiral model of the software process R i s k a n a l y s i s R i s k a n a l y s i s R i s k a n a l y s i s Risk anal ysis P r o t o - t y p e 1 P r o t o t y p e 2 P r o t o t y p e 3 O p e r a - t i o n a l p r o t o y p e C o n c e p t o f O p e r a t i o n S i m u l a t i o n s , m o d e l s , b e n c h m a r k s S / W r e q u i r e m e n t s R e q u i r e m e n t v a l i d a t i o n D e s i g n V & V P r o d u c t d e s i g n D e t a i l e d d e s i g n C o d e U n i t t e s t I n t e g r a t i o n t e s t A c c e p t a n c e t e s t S e r v i c e D e v e l o p , v e r i f y n e x t - l e v e l p r o d u c t E v a l u a t e a l t e r n a t i v e s i d e n t i f y , r e s o l v e r i s k s D e t e r m i n e o b j e c t i v e s a l t e r n a t i v e s a n d c o n s t r a i n t s P l a n n e x t p h a s eI n t e g r a t i o n a n d t e s t p l a n D e v e l o p m e n t p l a n R e q u i r e m e n t s p l a n L i f e - c y c l e p l a n R E V I E W
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 25 Spiral model sectors  Objective setting • Specific objectives for the phase are identified  Risk assessment and reduction • Risks are assessed and activities put in place to reduce the key risks  Development and validation • A development model for the system is chosen which can be any of the generic models  Planning • The project is reviewed and the next phase of the spiral is planned
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 26 Software specification  The process of establishing what services are required and the constraints on the system’s operation and development  Requirements engineering process • Feasibility study • Requirements elicitation and analysis • Requirements specification • Requirements validation
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 27 The requirements engineering process F e a s i b i l i t y s t u d yR e q u i r e m e n t s e l i c i t a t i o n a n d a n a l y s i sR e q u i r e m e n t s s p e c i f i c a t i o n R e q u i r e m e n t s v a l i d a t i o n F e a s i b i l i t y r e p o r t S y s t e m m o d e l sU s e r a n d s y s t e m r e q u i r e m e n t sR e q u i r e m e n t s d o c u m e n t
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 28 Software design and implementation  The process of converting the system specification into an executable system  Software design • Design a software structure that realises the specification  Implementation • Translate this structure into an executable program  The activities of design and implementation are closely related and may be inter-leaved
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 29 Design process activities  Architectural design  Abstract specification  Interface design  Component design  Data structure design  Algorithm design
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 30 The software design process Ar chitectur al design Abstr act specific tion Interfa design Com desig Da ta stru e des A d System ar chitectur eSoftw ar e specific tion Interfa specifi tion Com spec tion Da ta stru e spe tio A sp ti R equir ements specifica tion Desig vitie Desig oduc
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 31 Design methods  Systematic approaches to developing a software design  The design is usually documented as a set of graphical models  Possible models • Data-flow model • Entity-relation-attribute model • Structural model • Object models
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 32 Programming and debugging  Translating a design into a program and removing errors from that program  Programming is a personal activity - there is no generic programming process  Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 33 The debugging process L o c a t e e r r o r D e s i g n e r r o r r e p a i rR e p a i r e r r o r R e - t e s t p r o g r a m
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 34 Software validation  Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer  Involves checking and review processes and system testing  System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 35 The testing process S u b - s y s t e m t e s t i n g M o d u l e t e s t i n g U n i t t e s t i n g S y s t e m t e s t i n gA c c e p t a n c e t e s t i n g C o m p o n e n t t e s t i n gI n t e g r a t i o n t e s t i n gU s e r t e s t i n g
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 36 Testing stages  Unit testing • Individual components are tested  Module testing • Related collections of dependent components are tested  Sub-system testing • Modules are integrated into sub-systems and tested. The focus here should be on interface testing  System testing • Testing of the system as a whole. Testing of emergent properties  Acceptance testing • Testing with customer data to check that it is acceptable
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 37 Testing phases R e q u i r e m e n t s s p e c i f i c a t i o nS y s t e m s p e c i f i c a t i o nS y s t e m d e s i g nD e t a i l e d d e s i g nM o d u l e a n d u n i t c o d e a n d t e s s S u b - s y s t e m i n t e g r a t i o n t e s t p l a n S y s t e m i n t e g r a t i o n t e s t p l a n A c c e p t a n c e t e s t p l a n S e r v i c eA c c e p t a n c e t e s t S y s t e m i n t e g r a t i o n t e s tS u b - s y s t e m i n t e g r a t i o n t e s t
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 38 Software evolution  Software is inherently flexible and can change.  As requirements change through changing business circumstances, the software that supports the business must also evolve and change  Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 39 System evolution A s s e s s e x i s t i n g s y s t e m s D e f i n e s y s t e m r e q u i r e m e n t s P r o p o s e s y s t e m c h a n g e sM o d i f y s y s t e m s N e w s y s t e m E x i s t i n g s y s t e m s
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 40 Automated process support (CASE)  Computer-aided software engineering (CASE) is software to support software development and evolution processes  Activity automation • Graphical editors for system model development • Data dictionary to manage design entities • Graphical UI builder for user interface construction • Debuggers to support program fault finding • Automated translators to generate new versions of a program
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 41 Case technology  Case technology has led to significant improvements in the software process though not the order of magnitude improvements that were once predicted • Software engineering requires creative thought - this is not readily automatable • Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 42 CASE classification  Classification helps us understand the different types of CASE tools and their support for process activities  Functional perspective • Tools are classified according to their specific function  Process perspective • Tools are classified according to process activities that are supported  Integration perspective • Tools are classified according to their organisation into integrated units
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 43 Functional tool classification
Activity-based classification R e e n g i n e e r i n g t o o ls T e s ti n g t o o ls D e b u g g in g to o l s P r o g r a m a n a l y s is to o l s L a n g u a g e - p r o c e s s in g to o l s M e t h o d s u p p o r tto o l s P r o t o t y p in g t o o ls C o n f ig u r a ti o n m a n a g e m e n tto o l s C h a n g e m a n a g e m e n tt o o ls D o c u m e n t a ti o n t o o ls E d i ti n g t o o ls P la n n i n g t o o ls S p e c if i c a ti o n D e s i g n I m p le m e n ta ti o nV e r i f ic a ti o n a n d V a li d a t io n
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 45 CASE integration  Tools • Support individual process tasks such as design consistency checking, text editing, etc.  Workbenches • Support a process phase such as specification or design, Normally include a number of integrated tools  Environments • Support all or a substantial part of an entire software process. Normally include several integrated workbenches
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 46 Tools, workbenches, environments S i n g l e - m e t h o d w o r k b e n c h e sG e n e r a l - p u r p o s e w o r k b e n c h e s M u l t i - m e t h o d w o r k b e n c h e s L a n g u a g e - s p e c i f i c w o r k b e n c h e s P r o g r a m m i n gT e s t i n g A n a l y s i s a n d d e s i g n I n t e g r a t e d e n v i r o n m e n t sP r o c e s s - c e n t r e d e n v i r o n m e n t s F i l e c o m p a r a t o r s C o m p i l e r s E d i t o r s E n v i r o n m e n t s W o r k b e n c h e s T o o l s C A S E t e c h n o l o g y
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 47 Key points  Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model  General activities are specification, design and implementation, validation and evolution  Generic process models describe the organisation of software processes  Iterative process models describe the software process as a cycle of activities
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 48 Key points  Requirements engineering is the process of developing a software specification  Design and implementation processes transform the specification to an executable program  Validation involves checking that the system meets to its specification and user needs  Evolution is concerned with modifying the system after it is in use  CASE technology supports software process activities

Software Process Models in Software Engineering

  • 1.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes  Coherent sets of activities for specifying, designing, implementing and testing software systems
  • 2.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 2 Objectives  To introduce software process models  To describe a number of different process models and when they may be used  To describe outline process models for requirements engineering, software development, testing and evolution  To introduce CASE technology to support software process activities
  • 3.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 3 Topics covered  Software process models  Process iteration  Software specification  Software design and implementation  Software validation  Software evolution  Automated process support
  • 4.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 4 The software process  A structured set of activities required to develop a software system • Specification • Design • Validation • Evolution  A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
  • 5.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 5 Generic software process models  The waterfall model • Separate and distinct phases of specification and development  Evolutionary development • Specification and development are interleaved  Formal systems development • A mathematical system model is formally transformed to an implementation  Reuse-based development • The system is assembled from existing components
  • 6.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 6 Waterfall model R e q u i r e m e n t s d e f i n i t i o n S y s t e m a n d s o f t w a r e d e s i g n I m p l e m e n t a t i o n a n d u n i t t e s t i n g I n t e g r a t i o n a n d s y s t e m t e s t i n g O p e r a t i o n a n d m a i n t e n a n c e
  • 7.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 7 Waterfall model phases  Requirements analysis and definition  System and software design  Implementation and unit testing  Integration and system testing  Operation and maintenance  The drawback of the waterfall model is the difficulty of accommodating change after the process is underway
  • 8.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 8 Waterfall model problems  Inflexible partitioning of the project into distinct stages  This makes it difficult to respond to changing customer requirements  Therefore, this model is only appropriate when the requirements are well-understood
  • 9.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 9 Evolutionary development  Exploratory development • Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements  Throw-away prototyping • Objective is to understand the system requirements. Should start with poorly understood requirements
  • 10.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 10 Evolutionary development V a l i d a t i o n F i n a l v e r s i o n D e v e l o p m e n t I n t e r m e d i a t e v e r s i o n s S p e c i f i c a t i o nI n i t i a l v e r s i o n O u t l i n e d e s c r i p t i o n C o n c u r r e n t a c t i v i t i e s
  • 11.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 11 Evolutionary development  Problems • Lack of process visibility • Systems are often poorly structured • Special skills (e.g. in languages for rapid prototyping) may be required  Applicability • For small or medium-size interactive systems • For parts of large systems (e.g. the user interface) • For short-lifetime systems
  • 12.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 12 Formal systems development  Based on the transformation of a mathematical specification through different representations to an executable program  Transformations are ‘correctness-preserving’ so it is straightforward to show that the program conforms to its specification  Embodied in the ‘Cleanroom’ approach to software development
  • 13.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 13 Formal systems development R e q u i r e m e n t s d e f i n i t i o nF o r m a l s p e c i f i c a t i o nF o r m a l t r a n s f o r m a t i o nI n t e g r a t i o n a n d s y s t e m t e s t i n g
  • 14.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 14 Formal transformations R 2 F o r m a l s p e c i f i c a t i o n R 3E x e c u t a b l e p r o g r a m P 2P 3P 4 T 1T 2T 3T 4 P r o o f s o f t r a n s f o r m a t i o n c o r r e c t n e s s F o r m a l t r a n s f o r m a t i o n s R 1 P 1
  • 15.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 15 Formal systems development  Problems • Need for specialised skills and training to apply the technique • Difficult to formally specify some aspects of the system such as the user interface  Applicability • Critical systems especially those where a safety or security case must be made before the system is put into operation
  • 16.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 16 Reuse-oriented development  Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems  Process stages • Component analysis • Requirements modification • System design with reuse • Development and integration  This approach is becoming more important but still limited experience with it
  • 17.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 17 Reuse-oriented development R e q u i r e m e n t s s p e c i f i c a t i o nC o m p o n e n t a n a l y s i s D e v e l o p m e n t a n d i n t e g r a t i o n S y s t e m d e s i g n w i t h r e u s e R e q u i r e m e n t s m o d i f i c a t i o n S y s t e m v a l i d a t i o n
  • 18.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 18 Process iteration  System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems  Iteration can be applied to any of the generic process models  Two (related) approaches • Incremental development • Spiral development
  • 19.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 19 Incremental development  Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality  User requirements are prioritised and the highest priority requirements are included in early increments  Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve
  • 20.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 20 Incremental development V a l i d a t e i n c r e m e n t D e v e l o p s y s t e m i n c r e m e n t D e s i g n s y s t e m a r c h i t e c t u r e I n t e g r a t e i n c r e m e n t V a l i d a t e s y s t e m D e f i n e o u t l i n e r e q u i r e m e n t sA s s i g n r e q u i r e m e n t s t o i n c r e m e n t s S y s t e m i n c o m p l e t e F i n a l s y s t e m
  • 21.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 21 Incremental development advantages  Customer value can be delivered with each increment so system functionality is available earlier  Early increments act as a prototype to help elicit requirements for later increments  Lower risk of overall project failure  The highest priority system services tend to receive the most testing
  • 22.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 22 Extreme programming  New approach to development based on the development and delivery of very small increments of functionality  Relies on constant code improvement, user involvement in the development team and pairwise programming
  • 23.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 23 Spiral development  Process is represented as a spiral rather than as a sequence of activities with backtracking  Each loop in the spiral represents a phase in the process.  No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required  Risks are explicitly assessed and resolved throughout the process
  • 24.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 24 Spiral model of the software process R i s k a n a l y s i s R i s k a n a l y s i s R i s k a n a l y s i s Risk anal ysis P r o t o - t y p e 1 P r o t o t y p e 2 P r o t o t y p e 3 O p e r a - t i o n a l p r o t o y p e C o n c e p t o f O p e r a t i o n S i m u l a t i o n s , m o d e l s , b e n c h m a r k s S / W r e q u i r e m e n t s R e q u i r e m e n t v a l i d a t i o n D e s i g n V & V P r o d u c t d e s i g n D e t a i l e d d e s i g n C o d e U n i t t e s t I n t e g r a t i o n t e s t A c c e p t a n c e t e s t S e r v i c e D e v e l o p , v e r i f y n e x t - l e v e l p r o d u c t E v a l u a t e a l t e r n a t i v e s i d e n t i f y , r e s o l v e r i s k s D e t e r m i n e o b j e c t i v e s a l t e r n a t i v e s a n d c o n s t r a i n t s P l a n n e x t p h a s eI n t e g r a t i o n a n d t e s t p l a n D e v e l o p m e n t p l a n R e q u i r e m e n t s p l a n L i f e - c y c l e p l a n R E V I E W
  • 25.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 25 Spiral model sectors  Objective setting • Specific objectives for the phase are identified  Risk assessment and reduction • Risks are assessed and activities put in place to reduce the key risks  Development and validation • A development model for the system is chosen which can be any of the generic models  Planning • The project is reviewed and the next phase of the spiral is planned
  • 26.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 26 Software specification  The process of establishing what services are required and the constraints on the system’s operation and development  Requirements engineering process • Feasibility study • Requirements elicitation and analysis • Requirements specification • Requirements validation
  • 27.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 27 The requirements engineering process F e a s i b i l i t y s t u d yR e q u i r e m e n t s e l i c i t a t i o n a n d a n a l y s i sR e q u i r e m e n t s s p e c i f i c a t i o n R e q u i r e m e n t s v a l i d a t i o n F e a s i b i l i t y r e p o r t S y s t e m m o d e l sU s e r a n d s y s t e m r e q u i r e m e n t sR e q u i r e m e n t s d o c u m e n t
  • 28.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 28 Software design and implementation  The process of converting the system specification into an executable system  Software design • Design a software structure that realises the specification  Implementation • Translate this structure into an executable program  The activities of design and implementation are closely related and may be inter-leaved
  • 29.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 29 Design process activities  Architectural design  Abstract specification  Interface design  Component design  Data structure design  Algorithm design
  • 30.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 30 The software design process Ar chitectur al design Abstr act specific tion Interfa design Com desig Da ta stru e des A d System ar chitectur eSoftw ar e specific tion Interfa specifi tion Com spec tion Da ta stru e spe tio A sp ti R equir ements specifica tion Desig vitie Desig oduc
  • 31.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 31 Design methods  Systematic approaches to developing a software design  The design is usually documented as a set of graphical models  Possible models • Data-flow model • Entity-relation-attribute model • Structural model • Object models
  • 32.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 32 Programming and debugging  Translating a design into a program and removing errors from that program  Programming is a personal activity - there is no generic programming process  Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process
  • 33.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 33 The debugging process L o c a t e e r r o r D e s i g n e r r o r r e p a i rR e p a i r e r r o r R e - t e s t p r o g r a m
  • 34.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 34 Software validation  Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer  Involves checking and review processes and system testing  System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system
  • 35.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 35 The testing process S u b - s y s t e m t e s t i n g M o d u l e t e s t i n g U n i t t e s t i n g S y s t e m t e s t i n gA c c e p t a n c e t e s t i n g C o m p o n e n t t e s t i n gI n t e g r a t i o n t e s t i n gU s e r t e s t i n g
  • 36.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 36 Testing stages  Unit testing • Individual components are tested  Module testing • Related collections of dependent components are tested  Sub-system testing • Modules are integrated into sub-systems and tested. The focus here should be on interface testing  System testing • Testing of the system as a whole. Testing of emergent properties  Acceptance testing • Testing with customer data to check that it is acceptable
  • 37.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 37 Testing phases R e q u i r e m e n t s s p e c i f i c a t i o nS y s t e m s p e c i f i c a t i o nS y s t e m d e s i g nD e t a i l e d d e s i g nM o d u l e a n d u n i t c o d e a n d t e s s S u b - s y s t e m i n t e g r a t i o n t e s t p l a n S y s t e m i n t e g r a t i o n t e s t p l a n A c c e p t a n c e t e s t p l a n S e r v i c eA c c e p t a n c e t e s t S y s t e m i n t e g r a t i o n t e s tS u b - s y s t e m i n t e g r a t i o n t e s t
  • 38.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 38 Software evolution  Software is inherently flexible and can change.  As requirements change through changing business circumstances, the software that supports the business must also evolve and change  Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new
  • 39.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 39 System evolution A s s e s s e x i s t i n g s y s t e m s D e f i n e s y s t e m r e q u i r e m e n t s P r o p o s e s y s t e m c h a n g e sM o d i f y s y s t e m s N e w s y s t e m E x i s t i n g s y s t e m s
  • 40.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 40 Automated process support (CASE)  Computer-aided software engineering (CASE) is software to support software development and evolution processes  Activity automation • Graphical editors for system model development • Data dictionary to manage design entities • Graphical UI builder for user interface construction • Debuggers to support program fault finding • Automated translators to generate new versions of a program
  • 41.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 41 Case technology  Case technology has led to significant improvements in the software process though not the order of magnitude improvements that were once predicted • Software engineering requires creative thought - this is not readily automatable • Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these
  • 42.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 42 CASE classification  Classification helps us understand the different types of CASE tools and their support for process activities  Functional perspective • Tools are classified according to their specific function  Process perspective • Tools are classified according to process activities that are supported  Integration perspective • Tools are classified according to their organisation into integrated units
  • 43.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 43 Functional tool classification
  • 44.
  • 45.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 45 CASE integration  Tools • Support individual process tasks such as design consistency checking, text editing, etc.  Workbenches • Support a process phase such as specification or design, Normally include a number of integrated tools  Environments • Support all or a substantial part of an entire software process. Normally include several integrated workbenches
  • 46.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 46 Tools, workbenches, environments S i n g l e - m e t h o d w o r k b e n c h e sG e n e r a l - p u r p o s e w o r k b e n c h e s M u l t i - m e t h o d w o r k b e n c h e s L a n g u a g e - s p e c i f i c w o r k b e n c h e s P r o g r a m m i n gT e s t i n g A n a l y s i s a n d d e s i g n I n t e g r a t e d e n v i r o n m e n t sP r o c e s s - c e n t r e d e n v i r o n m e n t s F i l e c o m p a r a t o r s C o m p i l e r s E d i t o r s E n v i r o n m e n t s W o r k b e n c h e s T o o l s C A S E t e c h n o l o g y
  • 47.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 47 Key points  Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model  General activities are specification, design and implementation, validation and evolution  Generic process models describe the organisation of software processes  Iterative process models describe the software process as a cycle of activities
  • 48.
    ©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 48 Key points  Requirements engineering is the process of developing a software specification  Design and implementation processes transform the specification to an executable program  Validation involves checking that the system meets to its specification and user needs  Evolution is concerned with modifying the system after it is in use  CASE technology supports software process activities