Subtopic Notes

12.1 Program Development Life Cycle

12. Software Development

Stages of Development Life Cycle

  • Analysis

    • Firstly the problem must be identified and detailed requirements or specification may be documented
    • The inputs, process, output and UI needs to be recognized
    • Uses tools like abstraction and decomposition in this stage
    • Abstraction:
      • Filtering out unnecessary details and only working with the relevant data
      • Reduces the complexity of algorithm
    • Decomposition of the problem
      • Breaking down a problem into simpler and smaller subproblems which is easier to handle
      • Every computer system is made up of subsystems, which are made up of further sub-systems
      • Program Modules (Procedure/Function): Reusable block of code designed to perform a specific task
      • Algorithms are decomposed into these parts: Inputs, Processes, Outputs, Storage
    • Stepwise Refinement: Process of breaking down a complex problem or system into smaller, more manageable components in a step-by-step manner to simplify design and implementation.
  • Design

    • Program specification from the analysis stage is used to design the logic plan and algorithms
    • Documentation: Written text or instructions explaining how a system or software works, helping users or developers understand and use it effectively
      • Documentation uses methods like Structure Charts, Flowchart, Pseudocode, Structured english
      • Structured English: A subset of English that consist of command statements used to describe an algorithm
  • Coding

    • The main program is written down or developed based on the design
    • Different modules may use different language and maybe created by different teams
    • Testing is done to make sure the modules work as expected
    • Iterative Testing: Conducting tests on modules, making changes as required and repeating these until all requirements are met
  • Testing and Debugging

    • The completed program is now tested using different type of test data or inputs to identify the errors
    • The bugs or issues identified in the application is corrected
  • Deployment and Maintenance

    • Revise internal documentation and create user end documentation
    • Publish the application or deploy it to the relevant site (May be to client or in app store)
    • Provide customer care and support as required
    • Provide training, education or tutorials for the users
    • Correct any bugs and make modifications as users require

Types of Development Life Cycles

  • Waterfall

    • Fundamental model of software development
    • Linear model where each phase is completed before moving to the next
    • Advantage: Easier to manage, Suitable for projects with well-defined requirements and minimal expected changes
    • Disadvantage: Inflexible, Late testing lead to delayed discovery of issues
  • Iterative

    • Project is developed in small, repeated cycles
    • Project at first is small and it becomes complex overtime
    • Advantage: Errors identified and fixed early, More adaptable
    • Disadvantage: Requires more resource due to repeated cycle, Project may become sidetracked from main plan
  • Rapid Application Development (RAD)

    • Fast paced method that focuses on building the prototype
    • Makes changes on that prototype using iterative feedbacks
    • Advantage: Suitable for tight timeline and flexible requirements
    • Disadvantage: Results in lower quality documentation, Might not be scalable in long run, Relies on user feedback and skilled team which is not always available