Skip to main content

Software Development Concepts

Systems Development Models

Agile

Agile, at its heart, champions customer-centricity and rapid, iterative development. Instead of a fixed blueprint, Agile

    thrives
  • Emphasizeson adaptation, evolving with the customer'client's insights and the project's needs.
  • Quick development of functionality in an iterative manner.
  • Four Core Principles:

    1. Individuals and interactions over processes and tools.
    2. Working software over comprehensive documentation.
    3. Customer collaboration over contract negotiation.
      • For example, a customer might start to use the software and learn what they really need verses what they thought they needed. 
    4. Responding to change over following a plan.
      • User Acceptance Testing (UAT) can provide guidance on adapting and pivoting direction.

Remember the four core principles of Agile for the exam. 

Waterfall

  • Sequential development leading

    Contrary to aAgile, completethe product.

  • Waterfall
  • Allowsmodel returnis characterized by its linear, step-by-step approach towards product development. It meticulously follows each phase, permitting revisions only to the previousimmediate phasepreceding step. While it shares semblance with the software development lifecycle, Waterfall's structure demands comprehensive analysis and design for correctionsthe entire project from the outset. One of its main limitations is the absence of consistent feedback loops, making alterations both challenging and expensive.

    only.

  • Seven stages:

    1. ⬇️ System Requirements 
    2. ↕️ Software Requirements
    3. ↕️ Preliminary design
    4. ↕️ Detailed Design
    5. ↕️ Code and Debug
    6. ↕️ Testing
    7. Operations & Maintenance
  • Reminiscent

from

earlier manufacturing processes where tasks were done in a sequential manner, one after the other.

Spiral

    Often

  • Metamodelreferred to as the "metamodel" or a "model of models".
  • models,"
  • Severalthe Spiral model can be visualized as an enhancement of the Waterfall model, integrating multiple iterations of theit. waterfall model.
  • Each spiral loopin resultsthe model represents a developmental phase, culminating in a new prototype/iteration.prototype or iteration of the software.

    Here's what distinguishes the Spiral model:

    1. Iterative Nature: Unlike the strict linear progression of Waterfall, the Spiral model allows for iterative development. This aspect addresses one of the primary criticisms of the Waterfall model, where changes post-phase completion were cumbersome and expensive.

    2. Iterative in nature.

ThinkCustomer Feedback and Realization: Should a customer have an epiphany or change of requirements mid-way through the development process, the Spiral asmodel offers the flexibility to circle back, adjust, and refine. This iterative feedback loop ensures the end product is closely aligned with customer expectations and needs.

image.png

Unlike the Waterfall model, you don't revert to the previous stage; instead, you iterate to the next spiral if a "repeatingrequirement Waterfall".changes.


Software Development Maturity Models

    Maturity

  • Helpsmodels inserve improvingas the qualityguiding andlight, maturitysteering ofthe softwareprocess processes.
  • from
  • Followsinitial chaos to disciplined, optimized operations. They offer an evolutionary pathtrajectory, marking the journey from chaoticlow to disciplinedhigh processes.
  • maturity
smoother high maturity. While these models share common principles of progress, each has its unique characteristics and nuances.


Capability Maturity Model (SW-CMM)

    SW-CMM (Software Capability Maturity Model) primarily concentrates on improving software development processes, offering organizations a roadmap to mature their software practices.

    • Level 1: Initial - No consistent processes. (low maturity)
    • Level 2: Repeatable - Basic lifecycle management.
    • Level 3: Defined - Documented and standardized process.
    • Level 4: Managed - Quantitative measures for understanding.
    • Level 5: Optimized - Continuous development with feedback loops.loops (high maturity)

Capability Maturity Model Integration (CMMI)

LevelCMMI 5(Capability indicatesMaturity Model Integration), integrates multiple maturity models, making it applicable not only to software engineering but also to product development and service provision. It differs from SW-CMM by providing a highbroader framework, capturing an array of disciplines beyond just software, and emphasizing integrated product and process development. CMMI gives an insight into our current maturity inlevel developmentand processes.helps us plan where we need to head.

  • Level 1: Initial
    REACTIVE.: Unpredictable and poorly controlled.
  • Level 2: Repeatable
    MANAGED. Projects are characterized.

image.pngPeer review is required from level 3 onwards. 

  • Level 3: Defined
    PROACTIVE Processes characterized.
  • Level 4: Quantitatively Managed
    QUANTITAVLEY measured processes provide insights into performance.
  • Level 5: Optimizing
    CONTINUOUS process improvement.

IdealIDEAL Model

  • A software development model that incorporates attributes of SW-CMM.

  • Stages:

    1. Initiating - Business reasons established, infrastructure put in place.
    2. Diagnosing - Current state analysis and change recommendations.
    3. Establishing - Development of change plans.
    4. Acting - Implementation of the plan and solutions.
    5. Learning - Continuous analysis for improvement.

Software Development Life Cycle (SDLC)

Phase Name Description Mnemonic
⬇️ Requirements
 
and Analysis
In this phase, the needs of potential users are understood and analyzed to produce a requirements specification.

Robotseal

⬇️ Design This phase involves creating a detailed design of the software system, specifying architecture, components, interfaces, and other characteristics.

Design,evelopers

⬇️ Implementation (or coding) The actual code is written in this phase, transforming design documentation into functional software.

Implement,deas

⬇️ Testing The software is tested to ensure it meets the specifications and is free of defects.

Test, thenake

🔁 Evolution
(or Maintenance)
As software gets used, it will evolve to meet new user requirements, address discovered bugs, and incorporate other changes.

Evolve. ffort