12 - 1.2.3 a & b Programming Methodologies

12 - 1.2.3 a & b 
a) Programming Methodologies
b) Merits, drawbacks and uses of programming methodologies
1 / 26
next
Slide 1: Slide
ComputingFurther Education (Key Stage 5)

This lesson contains 26 slides, with interactive quizzes and text slides.

time-iconLesson duration is: 50 min

Items in this lesson

12 - 1.2.3 a & b 
a) Programming Methodologies
b) Merits, drawbacks and uses of programming methodologies

Slide 1 - Slide

Programming methodologies

Waterfall lifecycle
Agile methodologies
Extreme programming
Spiral model
Rapid application development

Slide 2 - Slide

Waterfall
The Waterfall methodology is a traditional approach to software development where each phase must be completed before moving on to the next. 
(linear and sequential)

Slide 3 - Slide

Waterfall - Stages
Analysis:
Gather and document all software requirements.
Establish clear objectives and specifications.
Feasibility Study
Design:
Design the architecture and components of the software.
Create detailed design documents.
Implementation (Coding):
Translate design into executable code.
Develop and integrate all system components.
Evaluation (Testing):
Verify that the software meets all requirements.
Identify and fix defects.
Maintenance:
Perform ongoing support and maintenance.
Address any issues that arise post-deployment.

Slide 4 - Slide

Waterfall Pros and Cons

Slide 5 - Open question

Waterfall - Pros and cons
Advantages:
Structured Approach: Clear, defined stages with specific deliverables.
Easy to Manage: Simple to track progress and milestones.
Documentation: Comprehensive documentation at each phase aids future maintenance.

Disadvantages:
Inflexibility: Difficult to accommodate changes once a phase is completed.
Late Testing: Issues may only be discovered in the testing phase, potentially causing significant delays.
Customer Feedback: Limited opportunities for customer feedback during development.
Best for Projects: Where requirements are well understood and unlikely to change.
Examples: Government projects, large-scale system implementations with fixed requirements.

Slide 6 - Slide

Agile Methodologies
Agile methodologies focus on iterative development, where requirements and solutions evolve through collaboration between cross-functional teams.

Slide 7 - Slide

Agile Key Principles:
Customer Collaboration:
Continuous customer involvement and feedback.
Regular updates and demonstrations of progress.
Responding to Change:
Flexibility to adapt to changing requirements.
Iterative cycles allow for regular reassessment and adjustment.

Working Software:
Frequent delivery of small, functional increments.
Emphasis on delivering a usable product at the end of each iteration.
Team Collaboration:
Close, daily cooperation among team members.
Self-organizing teams with shared responsibility.

Slide 8 - Slide

Agile Methodologies Pros and Cons

Slide 9 - Open question

Agile - Pros and cons
Advantages:
Flexibility: Easily accommodates changing requirements.
Customer Satisfaction: Regular feedback ensures the product meets user needs.
Risk Reduction: Early and frequent delivery of working software reduces risks.

Disadvantages:
Scope Creep: Continuous changes can lead to scope expansion.
Requires Discipline: Teams must be well-coordinated and self-motivated.
Documentation: May lack comprehensive documentation compared to traditional methods.
Best for Projects: Where requirements are expected to evolve or are not well understood initially.
Examples: Software startups, dynamic environments, projects requiring rapid iteration and feedback.

Slide 10 - Slide

Extreme Programming
Focus on Technical Excellence: Extreme Programming (XP) is an Agile software development framework that emphasizes high-quality code and adaptive practices.

Slide 11 - Slide

Extreme Programming
Pair Programming:
Two developers work together at one workstation.
One writes code, the other reviews and offers suggestions.
Test-Driven Development (TDD):
Write tests before writing the code they test.
Ensure all code is covered by tests to maintain quality.
Continuous Integration:
Integrate code changes frequently into a shared repository.
Automatically test and build the software to detect issues early.

Refactoring:
Continuously improve the codebase without changing its behavior.
Enhance code readability, maintainability, and performance.
On-Site Customer:
Have a customer representative available to provide immediate feedback.
Ensure the development team understands the customer's needs.


Slide 12 - Slide

Extreme Programming Pros and Cons

Slide 13 - Open question

Extreme Programming - Pros and cons
Advantages:
High Code Quality: Practices like TDD and refactoring ensure robust, maintainable code.
Rapid Feedback: Immediate feedback from tests and customers helps to quickly correct issues.
Strong Collaboration: Pair programming and close communication enhance teamwork and knowledge sharing.

Disadvantages:
Resource Intensive: Requires significant time and effort from all team members.
Demanding Discipline: High levels of discipline and commitment needed to maintain practices.
Initial Slowdown: Initial learning curve may slow down development at the start.
Best for Projects: That require high-quality, maintainable code and where requirements may evolve.
Examples: Critical software systems, projects where changes are frequent, and high-collaboration environments.

Slide 14 - Slide

Spiral
 The Spiral Model combines iterative development with systematic aspects of the Waterfall model, emphasizing risk management.

Slide 15 - Slide

Spiral
Analysis:
Determine objectives, alternatives, and constraints.
Establish project scope and gather requirements.

Risk Assessment:
Identify and assess risks associated with the project.
Develop strategies to mitigate identified risks.

Implementation:
Design, code, and test a prototype or a part of the system.
Implement solutions to resolve risks and gather user feedback.

Evaluation:
Review and evaluate the prototype with stakeholders.
Plan the next iteration based on feedback and performance.

Slide 16 - Slide

Spiral Pros and Cons

Slide 17 - Open question

Spiral

Advantages:
Risk Management: Focuses on identifying and mitigating risks early.
Flexibility: Iterative approach allows for changes and refinements at each stage.
Customer Feedback: Regularly incorporates user feedback through prototypes.
Disadvantages:
Complexity: Managing and tracking spirals can be complex.
Cost: Can be more expensive due to repeated prototyping and extensive risk analysis.
Expertise Required: Requires skilled project managers to assess and manage risks effectively.
Use Cases:

Best for Projects: With high risks and significant user interface components.
Examples: Large-scale systems, complex projects with evolving requirements, projects where risk management is crucial.

Slide 18 - Slide

Rapid Application Development
RAD emphasizes quick development and iteration of prototypes over rigid planning and testing.

Slide 19 - Slide

Rapid Application Development

Prototyping:
Develop functional prototypes to gather user feedback quickly.
Iterative refinement based on feedback.
User Involvement:
Continuous user participation throughout the development process.
Users provide feedback and validation at each iteration.
Iterative Development:
Break projects into smaller, manageable tasks.
Develop, review, and refine in short cycles.
Component-Based Construction:
Reuse pre-built components to speed up development.
Focus on assembling existing parts rather than coding from scratch.
Phases: 
Requirements Planning:
Conduct workshops to gather broad requirements.
Establish project scope and objectives.
User Design:
Collaborate with users to create prototypes.
Design and refine user interfaces through feedback.
Rapid Construction:
Develop prototypes into working models.
Use iterative cycles to build and refine functionality.
Cutover:
Finalize the system by testing and implementing.
Transition from development to production.

Slide 20 - Slide

Rapid Application Development pros and cons

Slide 21 - Open question

Rapid Application Development

Advantages:
Speed: Accelerates development process with iterative prototyping.
Flexibility: Easily accommodates changes and new requirements.
User Satisfaction: High user involvement ensures the final product meets user needs.
Disadvantages:
Scope Management: Risk of scope creep due to continuous changes.
Quality: May compromise on thorough testing and documentation.
Dependency on Skilled Developers: Requires experienced developers to manage rapid iterations.
Use Cases:
Best for Projects: Where time-to-market is critical and requirements are expected to evolve.
Examples: Web and mobile applications, user interface-focused systems, projects with a high need for user feedback.

Slide 22 - Slide

Analysis
Design
Implementation
Evaluation
Maintenance

Slide 23 - Drag question

Scenario 1:  Government Project with Strict Requirements

Which software development methodology would be most suitable for a government project with strict, unchanging requirements and a need for thorough documentation? Why?

Slide 24 - Slide

Scenario 1: Government Project with Strict Requirements
Which software development methodology would be most suitable for a government project with strict, unchanging requirements and a need for thorough documentation? Why?

Slide 25 - Open question

Scenario 2: A mid-sized sales company is struggling with its current Customer Relationship Management (CRM) system. The system is outdated, not user-friendly, and lacks integration with other tools the sales team uses daily. The company wants a custom CRM solution that can be adapted quickly to their changing needs and can integrate seamlessly with their email, calendar, and communication platforms.

Slide 26 - Open question