SDLC MODELS

What is SDLC model?

A framework containing the process, activities and the tasks involved in the development, operation and maintenance of a software project spanning the life of the system from the definition of its requirements to the termination of its use.

 Types of SDLC Models.

  1. Waterfall model
  2. Spiral Model
  3. Prototype Model
  4. Rapid Application development Model
  5. Iterative and incremental development model.
  6. Agile Model.
  1. WaterFall Model

Also known as ‘classic life cycle model’/’linear sequential model’

This model suggests a systematic and sequential approach to software development that begins at requirement analysis and progresses through all life cycle phases sequentially.

  • Development activities carried out sequentially
  • Review and approval of each phase outputs (Deliverables)
  • Model does not permit going back and forth.
  • If any defects found, go back to the originating phase and start traversing sequentially all over again.

Suitable for projects where

  • Requirements are clearly defined.
  • Small and medium term durations
  • Familiarity with the domain and development environments.

source: http://en.wikipedia.org/wiki/Waterfall_model

  1. Spiral Model
  • In a spiral model, software is developed in series of incremental releases
  • Suitable for large projects with multi-location implementation.
  • Each spiral consists of a deliverable product
  • Customer can start using the system after every spiral
  • Feedback of each spiral is incorporated in the next spiral
  • Each spiral consists of a waterfall model

Advantages:

  • Useful for large projects
  • Customer requirements change over a period
  • Early availability of usable system

source: http://en.wikipedia.org/wiki/Spiral_model

  1. Prototype Model.
  • Identify basic requirement. A prototype is developed based on the initial understanding of the customer requirements.
  • Develop initial prototype—the initial prototype is developed that includes only user interfaces
  • Review—the customers, including end-users, examine the prototype and provide feedback on additions and changes.
  • Revise and enhance the prototype—using the feedback both the specifications and the prototype can be improved.

 

  1. Rapid Application Development Model.
  • RAD enables creation of fully functional software within a very short time.
  • If the requirements are well understood and defines, and the project scopes is constraint, the RAD process enables a development team to create a fully functional system within very short time period.
  1. Iterative and Incremental Development Model
    • The basic idea behind iterative enhancement is to develop software system incrementally.
    • At each iteration; design modifications are made along with adding new functional capabilities.
    • In an incremental development, the system is developed in different stages, with each stage consisting of requirements design, development and test phases. In each stage, new functionality is added.
    • This type of development allows the user to see a functional product very quickly and allows the user to impact what changes are included in subsequent releases.

 

source: http://en.wikipedia.org/wiki/Iterative_and_incremental_development

  1. Agile Model

  • In agile model, project is divided into various Sprints.
  • Each sprint contains highest priority requirements
  • A time period for sprint is typically 2—4weeks.
  • In agile model, daily scrum meetings with team to share status and potential issues.
  • Each sprint is ‘Release’ to customers
  • Used for time-critical applications.

Agile values

  • Individuals and interactions over Processes and tools
  • Working software over Comprehensive documentation
  • Customer collaboration over Contract negotiation
  • Responding to change over Following a plan

Agile Principles

The Agile Manifesto is based on twelve principles.

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Self-organizing teams
  12. Regular adaptation to changing circumstances

SOFTWARE ENGINEERING

Software engineering is technological & Managerial.  Both disciplines concerned on development & maintenance of software projects & products, on-time & within cost estimates.

There are 3 important factors in software development.

  • Quality
  • Budget/cost
  • Schedule/time

Developing a quality software with budget & within cycle time

One of the important characteristic of software engineering is ‘Reusability’.

Advantages of Reusability

  • Productivity is increased.
  • Project development & testing time is reduced—budget is saved (within budget/estimated costs

Software Process

  • A sequence of steps performed for a given purpose
  • A set of activities, methods & transformations; practices that people use to develop & maintain a system.

Disadvantages:

  • Commitments are missed.
  • Late delivery
  • Last minute Crunches
  • Quality Problems (of process)
  • Too much rework
  • Functions do not work correctly
  • Customer complaints after delivery
  • People frustrated (End Users)

Advantages

  • Quality
  • Consistency
  • Traceability
  • Early defect remedy (verification)
  • Reduced rework & rejections
  • Control of cost
  • On-time

SEI -CMMI

Process: A process is a set of practices performed to achieve a given purpose. It may include tools, methods, materials and/or people.

The quality of a product is largely determined by the quality of the process that is used to develop and maintain it.

 

What is a process model?

A model is a structural collection of practices that describe characteristics of effective process.

SEI—Software engineering institute at Carnegie Mellon University initiated by the US-Department of Defence to help improve software development process.

CMMI—CAPABILITY MATURITY MODEL INTEGRATION.

CMM—the capability maturity model for software has been retired & CMMI replaces it and it is developed by SEI.  It’s a model of 5 levels of process ‘maturity’ that determines effectiveness in delivering quality software.

Organisations can receive CMMI ratings by undergoing assessments by qualified auditors.

CMMI for Systems Engineering & Software Engineering

Maturity Levels

  1. Performed—initiation.
  2. Managed—management
  3. Defined—technical
  4. Quantitatively managed—quantification
  5. Optimizing—process improvement
  6. Performed
    1. Introduction
    2. Structure of the model
    3. Maturity levels, common features
    4. Understanding the model
    5. Using the model
  7. Managed—Basic Project management
    1. Requirements Management
    2. Project Planning (PMP)
    3. Supplier Agreement Management
    4. Measurement & Analysis
    5. Process & Product quality assurance (Audits)
    6. Configuration management (VSS/SVN)
  8. Defined—Process Standardization
    1. Requirement development
    2. Technical solution
    3. Product integration
    4. Verification
    5. Validation
    6. Organizational process focus
    7. Organizational process definition
    8. Integrated project management
    9. Integrated supplier management
    10. Organizational training
    11. Risk management
  9. Quantitatively Managed—Quantitative Management
    1. Organizational process performance
    2. Quantitative project management.

In Level 4

Metrics are used to track productivity, process and products. Project performance is predictable and quality is consistently high.

  1. Optimizing—Continuous Process Improvement.
    1. Organizational innovation & deployment (OID)

Role of SEPG—Software Engineering Process Group.

  • Does organizational process improvement planning & monitoring.
  • Oversees process definition
  • QMS maintenance.
  • Facilitating deployment of process/technology innovations

Role of SQA

  • Facilitating project quality planning
  • Process consulting to projects.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s