Lecture 3 Software Development Processes Software Engineering ITCS 3155 Fall 2008 Dr. Jamie Payton Department of Computer Science University of North Carolina at Charlotte September 2, 2008
Lecture Overview Conclusion of Chapter 1 A Discipline of Software Engineering Design Terminology Software design as problem solving Abstraction Modeling Software development process (lifecycle) Software engineering design methods 2
The Big Picture: Design Methods Software design method procedure for generating a precise and complete software design solution that meets clients needs and constraints Design method components Design Process Collection of related tasks that transforms set of inputs into set of outputs Design Notations Symbolic representational system Design Heuristics Rules providing guidance, but no guarantee, for achieving some end Design methods also use design principles stating characteristics of design that make them better or worse 3
The Software Development Process A structured set of activities required to develop a software system Specification Design Validation Evolution Software Product Life Cycle Requirements Specification Design Implementation Product Design Engineering Design Validation Evolution Product Redesign and Engineering Redesign 4
Software Process So far, we ve considered common design activities as occurring sequentially Design is not always a purely sequential activity (and shouldn t be!!!) 5
Software Lifecycle Models A software process model is an abstract representation of a process Presents a description of a process from some particular perspective Provides guidance concerning order of and transitions between different phases of a project What should we do next? How long should we continue doing it 6
Generic Software Process Models The waterfall model Separate and distinct phases of specification and development Evolutionary development Specification and development are interleaved Incremental development Distinct phases, product delivered in increments Spiral development Risk-driven iterations that may use different models 7
Waterfall Model Requirements Specification System and Software Design Implementation & Unit Testing Integration & System Testing Evolution 8
Evaluating the Waterfall Model What are some of the issues faced when using this model? So, when is it useful? Software Product Life Cycle Requirements Specification Design Implementation When is it not? Validation Evolution 9
Evolutionary Development Exploratory development Evolve a final system from an initial outline specification Should start with well-understood requirements Throw-away prototyping Understand the system requirements Should start with poorly understood requirements 10
Evolutionary development Concurrent activities Specification Initial version Outline description Development Intermediate versions Validation Final version 11
Evaluating Evolutionary Development Problems Lack of process visibility Why? Resulting systems are often poorly structured Special skills may be required Languages for rapid prototyping Applicability Small or medium-size interactive systems Parts of large systems Short-lifetime systems Why? 12
Evaluating CBSE Fact 16: Reuse-in-the-large (components) remains a mostly unsolved problem, even though everyone agrees it is important and desirable. Robert Glass, F&F Fact 17: Reuse-in-the-large works best in families of related systems and thus is domain-dependent. This narrows the potential applicability of reuse-in-thelarge. -- Robert Glass, F&F 13
Process Iteration System requirements ALWAYS evolve We apply process iteration to deal with changing requirements Earlier stages in the development process are re-examined Iteration can be applied to any of the generic process models Two (related) approaches Incremental delivery Spiral development 14
Process Iteration: Incremental Delivery Development and delivery broken down into increments Each increment delivers part of required functionality Highest priority requirements in early increments Once the development of an increment starts, its requirements are frozen Requirements for later increments can change 15
Comparing Process Models 16
Process Iteration: Extreme Programming An approach to incremental development agile method Principles: Development and delivery of very small increments of functionality Constant code improvement User involvement in the development team Pairwise programming Collective ownership 17
Process Iteration: Spiral Development Process is represented as a spiral Each loop in the spiral represents a process iteration Activities within loops are adjusted based on what is required Risks are explicitly assessed and resolved throughout the process Evaluation at each loop Protoyping sometimes used to address risks Evaluation at milestones Artifacts and conditions Customer can terminate project Combines features of Waterfall and Evolutionary Provides formal phases of requirements, design, testing Supports prototyping at any point to address risks 18
Process Iteration: Spiral Model Image: www.blog.hydro4ge.com 19
Process Iteration: Spiral Model Sectors Objective setting Identify specific objectives for the phase Risk assessment and reduction Assess risk and identify activities to reduce key risks Prototyping may be used to clarify needs Development and validation Choose development model for the system Can be any of the generic process models Develop requirements/design Planning Customer reviews project Designers plan next phase of the spiral 20
Process Iteration: Evaluating Incremental Development Functionality can be delivered with each increment Early increments can act as a prototype Helps elicit requirements for later increments Helps to address risks Lower risk of overall project failure Why? Highest priority system services receive the most testing Why? 21
Specialized Process Models Formal systems development A mathematical system model is formally transformed to an implementation Reuse-based development The system is assembled from existing components 22
Formal Systems Development Transform a mathematical specification through different representations to an executable program Transformations are correctness-preserving Straightforward to show that program conforms to spec Embodied in the cleanroom approach to software development No need to test for defects 23
Evaluating Formal Systems Development Problems Need for specialized skills and training to apply the technique Difficult to formally specify some aspects of the system e.g, user interface Changes require new transformations and proofs Typically does not scale Applicability Critical systems (e.g., in terms of safety or security) 24
Reuse-oriented Development Based on systematic reuse where systems are integrated from existing components or COTS systems Process stages Component analysis Requirements modification System design with reuse Development and integration Requirements specification Component analysis Requirements modification System design with reuse Development and integration System validation 25
Summary Software processes are the activities involved in producing and evolving a software system Specification Design and Implementation Validation Evolution Software process models are a general way of describing specific processes Waterfall model Evolutionary development CBSE Formal specification Iterative process models help with changing requirements Approaches to iterative development Incremental delivery Spiral model 26
Next time Beginning the software development process Requirements elicitation Read Chapter 2 Especially notation for activity diagrams! 27