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
