Unit 1
Software Processes
 Software Processes: Process and Project
 Process: Sequence of steps performed to achieve goal
 A software project: One instance, and use development process to
  achieve it
 Development process takes the project from user and develops
  software needed by user
 Other goals: cost schedule and quality, besides delivering software
 Software Processes: Process and Project
 Software Process: The sequence of steps performed to produce
  software with high quality, within budget and schedule
 Process: Covers actions performed
   Actual process, Planned process
 Process specification: A description of the process which
  presumably can be followed in some project to achieve the goal
  for which the process is designed.
 Process model: A general process, optimum
    Use it as project’s process to develop s/w with high Q&P
 Process: A means to reach goals of high quality, low cost, low
  cycle time
 Component Software Processes
 Software Process: Deal with technical and management issues of
  software development
 Two components in a software process:
    Development process – focuses on development activities needed to
     engineer the software
    Project management process – focuses on planning and controlling
     the development process to meet cost, schedule, quality, etc.
 Software configuration control process – Deal with managing change
 Product engineering process: above mentioned three processes
 Process management process – Required to improve the s/w process
    Deals with the whole process of understanding the current process,
      analyzing its properties, determining how to improve, and then
      affecting the improvement
 Component Software Processes
 Development process – Programmers, designers, testers, etc.
 Project management process – Project management
 Software configuration control process – Group- Configuration
  controller
 Process management process – Software engineering process group
  (SEPG)
                              Software process
               Product engineering                   Process management
                    process                                process
     Development     Project management         Software
       process             process            configuration
                                           management process
  Software Development Process Models
 Goal to produce high quality s/w product
 Development process – core of s/w process
 Management process – decided based on development process
 Development process – Defines the tasks of the project that should be
  performed
                        - Order in which they should be performed
 Process model – Specifies a general process
    As set of stages in which project is divided
    Order in which stages should be executed
    Conditions and constraints required for execution
 Basic premise – situation for which it is applicable, use it to lead to
  low cost, high quality and reduced cycle time
 1) Waterfall Model
 Simplest process model, phases organized in linear order
 Proposed by Royce – variations evolved during activities
 Procedure:
  1) Project begins with Feasibility Analysis.
  2) After successful demonstration of feasibility, Requirement Analysis
  & Project Planning begins.
  3) Design starts after requirement analysis is complete.
  4) Coding begins after design is complete.
  5) Once coding is complete, code is Integrated and Testing is done.
  6) Upon successful completion of testing, system is Installed.
  7) After this, regular Operation and Maintenance of system takes place.
  Sofware Process    25
Waterfall    Model
 Waterfall Model
 Basic idea behind phases – separation of concerns
  Each phase deals with a distinct and separate set of concerns.
  So, task of building complex problem divided into smaller tasks
 Linear ordering of activities has important consequence
   Identify end of phase and beginning of next phase
   Employ some certification mechanism at the end of each phase
    Done by some verification and validation means, that ensure output of
  phase is consistent with its input
 After completion of activities of a phase – some product to be generated
 Output of earlier phases – work products
   Present in the form of document
 Waterfall Model
 Advantages:
  1) Simplicity
  2) Straightforward – Divides large task into series of phases
  3) Easy to administer – Work product produced after each phase
       Some amount of money obtained by developing organization
 Disadvantages:
  1) Requirements of system can be frozen
       All requirements to be known upfront
  2) Freezing requirements requires choosing the hardware
  3) Follows big bang approach – entire s/w delivered at the end
       all or nothing delivery
  4) Encourages requirements bloating
       All requirements to be specified at the start, even if not used later
  5) Is document driven process – requires formal documents at the end
  of each phase
 2) Prototyping Model
 Goal- To counter first limitation of waterfall model
 Basic idea-
       Instead of freezing requirements before design or coding proceed,
  build throwaway prototype to help understand the requirements
 Develop prototype based on currently known requirements
 Development undergoes design, coding, testing, but each of these
  phases not done formally or thoroughly
 Using prototype, client get actual feel of system, enabling to better
  understand the requirements of desired system
 Results in more stable requirements that change less frequently
 Act as an attractive idea for complicated and large systems, where
  no manual process or existing system present to help determine the
  requirements
                        Prototyping      Model
                             Sofware Process                      25
 Prototyping
 Procedure:
  1) Development starts when preliminary version of requirement
  specification document is developed.
  2) At this stage, there is reasonable understanding of system and its needs
  and which needs are unclear.
  3) After prototype is developed, end users and clients are given opportunity
  to use and explore the prototype, specifying what is correct, what needs to
  be modified, what is missing, what is not needed.
  4) Based on feedback, prototype is modified to incorporate suggested
  changes, then users are again allowed to use the system.
  5) Cycle repeats until, judgment of prototype developers and analysts
  benefit from further changing the system and obtaining feedback outweigh
  cost and time.
  Prototyping
Based on feedback, initial requirements are modified to get final
  requirements specification, then used to develop the quality system.
Features:
 No point in implementing parts of requirements already understood
 Focus on requirements that are not properly understood
 Minimal documentation to be produced, as prototype to be thrown away
 Another cost cutting measure- reduce testing
 Experience of developing prototype will reduce the cost of actual software
  development.
 Requirements will be more stable due to feedback from the prototype,
  there will be fewer changes in the requirements.
 Quality of final software is likely to be far superior.
 Developing prototype mitigates many risks that exist in a project where
  requirements are not well known.
 3) Iterative Development Model
 Counters third and fourth limitation of waterfall model, and
  combine benefits of both waterfall and prototyping model
 Basic idea-
       Software to be developed in increments, each increment
  adding some functional capability to the system until full
  system is implemented.
 Iterative enhancement model - one approach
 First step- Simple initial implementation done for a subset of
  the overall problem
 Subset- That contains key aspects of the problem, easy to
  understand and implement and forms a usable system
 Iterative Development
 Create project control list- Contains, in order, all tasks that
  must be performed to obtain the final implementation
 PCL gives an idea of how far long the project is at any given
  step from the final system
 Each step consists of:
    Removing the next task from the list
    Designing the implementation for the selected task
    Coding and testing the implementation
    Performing analysis of the partial system obtained after this step
    Updating the list as a result of the analysis
 Three phases- design phase, implementation phase and analysis phase
 Process is iterated until the PCL is empty, at which time the final
  implementation of the system will be available
                  Iterative enhancement Model
                                                Sofware Process         48
 Iterative Development
 Another approach-
   Do requirements and architecture design in waterfall or
    prototyping model, but deliver the software iteratively
 View- one iteration to deliver requirements and architecture
  plan, and further iterations to deliver software in increments.
 At start of each delivery iteration, decide the requirements to be
  implemented in this release, then enhance the design and
  develop code to implement the requirements.
 Iteration ends with delivery of a working software system
 Selecting of requirements done based on the value the
  requirement provides to end users and how critical they are
  for supporting other requirements
                Iterative delivery approach   Sofware Process   48
 Iterative Development
 Advantage of approach-
   Requirements are mostly known upfront.
   An overall view of the system is available.
   A proper architecture can be designed, which can remain
     relatively stable.
 Rework in development iterations will diminish.
 Value to the end customer is delivered iteratively so it does not
  have all-or-nothing risk.
 Since the delivery is being done incrementally, and planning
  and execution of each iteration is done separately, feedback
  from an iteration can be incorporated in the next iteration.
 4) Rational Unified Process (RUP)
 Another iterative process model designed by Rational, for
  object-oriented development using UML
 RUP proposes that development to be divided into cycles, each
  cycle delivering a fully working system.
 Each cycle executed as separate project, goal -to deliver some
  additional capability to existing system (built by previous cycle).
 Rational Unified Process (RUP)
 For a project, the process for a cycle forms the overall process.
  Each cycle broken into four consecutive phases:
  1) Inception phase
  2) Elaboration phase
  3) Construction phase
  4) Transition phase
Each phase has a distinct purpose, and completion of each phase is
a well defined milestone with some clearly defined outputs.
                              RUP model
 Inception phase-
      Purpose to establish goals and scope of project, and after
  completion is the lifecycle objectives milestone.
       Milestone specify vision and high -level capability of
  eventual system, business benefits, use cases of the system, key
  risks , basic plan regarding cost and schedule
       Based on output, decision of go/no -go
       Milestone represents there’s a shared vision among
  stakeholders, agree to project, its vision, benefits, cost, usage,
  etc.
                                              Sofware Process          48
 RUP
 Elaboration phase-
       Designed system architecture based on detailed requirements
  analysis and after completion is the lifecycle architecture
  milestone.
      Expected to identify and specify most requirements
       Prepare high-level project plan, showing remaining phases
  and iterations in those, and current perception of risks
       By the end, decisions regarding choice of technologies,
  architecture, etc. taken, and a detailed understanding of the
  project exists
 RUP
 Construction phase-
      Software built and tested
      Results in the software product to be delivered, along with
  associated user and other manuals, and after successful
  completion is the initial operational capability milestone
 Transition phase-
       Purpose to move software from development environment
  to client’s environment, where it is to be hosted
       Complex task, require additional testing, conversion of old
  data for this software to work, training of personnel, etc.
      Successful execution is the milestone product release.
 RUP
       In RUP, engineering tasks and phases are separate.
       RUP groups the activities into different subprocesses, called
as core process workflows.
         Activity level of subprocesses in different phases of RUP.
 RUP
 Key difference of RUP from other models is separation of
  phases from the tasks.
 In waterfall-based iterative model, a phase was linked to a
  particular task performed like requirements, design, etc.
 In RUP these tasks are separated from the stages.
 A project may do detailed requirements only for some features
  during elaboration phase, and may do detailing of other
  requirements while the construction is going on.
 RUP provides a flexible process model, which follows an
  iterative approach at a top level through cycles and, during each
  of the phases in a cycle. And in phases, it allows different tasks
  to be done as per the needs of the project.
 5) Timeboxing Model
 Basic unit time box of fixed duration
 Select requirements or features to be built to fit into time box
 In iterative approaches, select functionality and then determine
  time to deliver
 In timeboxing, a high-priority to the schedule
 Divide timebox into sequence of stages, each performs some
  clearly defined task and produces a clearly defined output
 Require duration of each stage, time taken to complete task be
  same
 Requires a dedicated team for each stage, team for a stage
  performs only tasks of that stage
Timeboxing Model
Example- time box of three stages, done in approximately equal
time in an iteration:
       requirement specification
       build
       deployment
   •Requirement stage gives a prioritized list of requirements
   to be built with a high-level design.
   •Build team develops the code, and performs testing.
   •Deployment team performs predeployment tests, and then
   installs the system for production use.
  Timeboxing Model
        Pipelined execution of the timeboxing process
                 Executing the timeboxing process model
       Timeboxing is well suited for projects that require a large
number of features to be developed in a short time around a stable
architecture using stable technologies.
 Timeboxing Model
        Three teams working on the project—the requirements team,
the build team, and the deployment team.
       Teamwise activity for the 3-stage pipeline
                       Tasks of different teams
 6) Extreme Programming and Agile Processes
 Agile development approaches evolved in 1990s as a reaction to
  documentation and bureaucracy-based processes, particularly the
  waterfall approach.
 Agile approaches based on some common principles:
1. Working software- key measure of progress in a project
2. For progress, rapid development and delivery of software in
       small increments
3. Entertainment of late changes in the requirements
4. Prefer face-to-face communication over documentation
5. Necessity of continuous feedback and customer involvement in
       developing good-quality software
6. Simple design that evolves and improves with time
7. Decision of the delivery dates empowered by teams of talented
   individuals
 Extreme Programming (XP)
 Popular, well-known approaches in the family of agile methods
 To accommodate change, development process to be lightweight
  and quick
 Iterative software development
 Relies on face-to-face communication, simplicity, and feedback
  to ensure desired changes to reflect quickly and correctly
 XP project starts with user stories
 User stories
    Short descriptions of what scenarios customers and users want
     the system to support
    Do not contain detailed requirements
 XP
 Each story written on a separate card
 Development team estimates time to implement user story, stated
  in weeks
 Release planning- defines which stories are to be built in which
  system release, and the dates of these releases
                       Overall process in XP
 Development done in iterations, each of few weeks
 Iteration starts with iteration planning, in which select stories to
  be implemented, higher priority to high value and high risk
  stories
 Handling of failed acceptance tests in previous iteration
                        An iteration in XP
 XP
 Development approach used in iteration:
1) Envisages that development by pairs of programmers
2) To build code, write automated unit tests first and then code to
   pass the tests (test-driven development approach)
3) Design devised earlier may become unsuitable for further
   development.
   Refactoring done to improve design of existing programs
4) Encourages frequent integration of different units.
   One pair at a time can release their changes and integrate into
   the common code base.
 Project Management Process
 Specify number of resources allocated to each activity for the
  project
 Monitoring of progress of different activities
 Specifies all activities to be done to meet cost and quality
  objectives
 Basic task to plan detailed implementation of the process for
  the particular project and then ensure its proper execution
 Activities grouped into three phases: planning, monitoring and
  control, and termination analysis
Temporal relationship between development and management process
 Project Management Process
 Planning phase-
    Develop a plan for software development to meet project
     objectives
    Software plan produced before development activity begins,
     and updated as development proceeds and progress of the
     project becomes available
    Major activities: cost estimation, schedule and milestone
     determination, project staffing, quality control plans, and
     controlling and monitoring plans
    Forms basis for monitoring and control
 Project Management Process
 Project monitoring and control phase -
    Takes long duration
    Includes all activities while development is in progress, to
     ensure objectives are met and development proceeds
     according to the developed plan (if required update)
    Activities: monitoring factors as cost, schedule, quality that
     affect these. Monitoring potential risks preventing to meet
     objectives. Take necessary actions by exerting control.
    Monitoring requires proper information about the project,
     obtained from the development process.
 Project Management Process
 Termination analysis phase-
    Called postmortem analysis
    Performed after completion of development process
    To provide information about development process and learn
     to improve the process
    In iterative development, done after each iteration to
     provide feedback to improve execution of further iterations
Thank You