KT24602
Software Engineering
Chapter 3: Development Methodologies
Dr. Zaidatol Haslinda Abdullah Sani
Main synopsis of the course:
“The discipline concerned with applying theory,
knowledge, and practice to effectively and
efficiently build reliable software systems that
satisfy the requirements of customers and users.”
Objective
• Introduction to Software Development (SD) Methodology
• Phases of development
• Roles and responsibilities
• Technique and Tools
• Typical SD Methodologies
• Waterfall
• Agile
• Rapid Application Development
• V-Model
• Importance of SD Methodology
• Mix-match methodology
• Discussions
Ice Break Session
How do you think software is
built?
Software Development (SD)
Methodology
What is Methodology?
• Is a structured set of principles, practices, and
procedures used to guide a project
• E.g. To conduct a research; you have your methodology
What is SD Methodology?
• Is a structured set of principles, practices, and
procedures used to guide software systems' planning,
development, and delivery .
Software Development (SD)
Methodology
Typically defines:
• Phases of development lifecycle (e.g., requirements,
design, coding, testing, deployment)
• Roles and responsibilities within the team
• Techniques and tools to be used
• Workflows and how progress is tracked and managed
Phases of development
• In short, we call it as Software
Development Life Cycle (SDLC)
• Structured process that
helps development teams
create software that meets
customer needs.
• Each phase comes with
duration; depends how long
is the project
Phases of development lifecycle
1) Requirements Gathering
• Goal: Understand what the software should do.
• Involves meetings with stakeholders to gather business needs,
user expectations, and system requirements.
• Output: A requirements specification document.
2) Design
• Goal: Plan how the system will be built.
• Includes architectural design, user interface design, database
schema, and system models.
• Output: Design documents, diagrams (e.g., UML), wireframes.
Phases of development (cont.)
3) Coding (Implementation)
• Goal: Translate the design into actual software.
• Developers write source code using the chosen programming language and tools.
• Output: Working software modules.
4) Testing
• Goal: Ensure the software works as expected.
• Includes unit testing, integration testing, system testing, and user acceptance
testing.
• Output: Bug reports, test logs, and a verified product.
5) Deployment
• Goal: Deliver the software to users.
• The system is installed in the production environment, configured, and made live.
• May include user training and technical support.
Typical Roles and responsibilities
Project Manager
• Coordinates the team’s work
• Manages the schedule, budget, and risks
Public Relations
• Defines what the product should do
• Prioritizes features based on business value
• Acts as the bridge between stakeholders and the development
team
• Helps to avoid miscommunication, especially when dealing with
non-technical stakeholders.
Typical Roles and
responsibilities (cont.)
Database Designer / Database Administrator (DBA)
• Designs the database schema (tables, relationships, constraints)
• Optimizes queries and indexing for performance
• Ensures data integrity, backup, recovery, and security
• Collaborates with developers to align the data model with the
application
UI/UX Designer
• Designs the user interface and user experience
• Creates wireframes, mockups, and prototypes
• Ensures the product is user-friendly, usable and accessible
Typical Roles and
responsibilities (cont.)
Software Architect
• Designs the overall structure of the system
• Makes key technical decisions (e.g., frameworks, tech stack)
• Ensures scalability, performance, and security are considered
Software Developer / Software Engineer
• Writes and maintains the source code
• Implements features based on specifications
• Fixes bugs and participates in code reviews
Software Tester
• Writes and executes test cases
• Ensures the software is bug-free and meets requirements
• Performs manual and automated testing
Discussion 1 (or typical exam question)
Do we need all roles to start an SD project? (15m)
Well, not all roles are strictly necessary to start every software
development project, but we acknowledge each role plays an important
part in ensuring the project is well-rounded and successful.
Can argue on:
• Scope and Complexity
• Methodology
• Size of the Team
• Stage of the Project
• Budget
• etc.
Discussion 2 (or typical exam question)
In a software development project, if the project ultimately fails, who is
responsible for the failure? (15m)
In most cases, when a software project fails, it's not the fault of a single person -
instead, it’s a shared responsibility among the team and stakeholders.
A project may fail even if all individuals do their jobs "technically right” - but without
shared vision, good communication, and adaptive methodology, it can still collapse.
Can argue on:
• Team Members / Roles
• Project Plan
• Methodology
• Clients
• etc.
Techniques and Tools – How ? Not limited to
these examples …
Requirements Gathering Techniques
• Interviews & Surveys – Collecting input directly from stakeholders
• Use Cases / User Stories – Describing system behavior from a user's perspective
• Personas – Fictional users used to understand goals and behavior
• Storyboarding – Visual storytelling of the user's interaction
• Workshops & Brainstorming Sessions
• Tools: Video / Audio Recorders, Online Surveys, etc
Design Techniques
• Wireframing / Prototyping – Visual mock-ups of UI/UX before coding
• UML Diagrams – Class, sequence, and use case diagrams to model system logic
• ER Diagrams – For designing databases
• Architecture Diagrams – High-level system structure planning
• Tools: Figma, Adobe XD, Sketch, Balsamiq, LucidChart, MS. Visio, etc
Techniques and Tools (cont.)
Development Techniques
• Test-Driven Development – Write tests before code
• Group (Two) Programming – Developers work together on the code; real-
time
• Version Control – Track changes and collaborate; _v1 _v2 _v3 etc.
• Tools: Eclipse, Adobe Dreamweaver, Brackets, etc
Testing Techniques
• Unit Testing – Testing individual components
• Integration Testing – Testing how components work together
• User Acceptance Testing (UAT) – Validating with end-users
• Tools: SUS, Selenium, JUnit, Cypress, etc
Techniques and Tools (cont.)
Project Management Techniques
• Scrum – Sprint Planning, Standups, Reviews; It emphasizes
teamwork, accountability, and iterative progress towards a
well-defined goal.
• Kanban Boards – Visualizing workflow and bottlenecks; shows
the To-Do, Progress, and Completed works.
• Burndown Charts – Track progress during a sprint; shows the
remaining work
• Tools: MS. Project, Monday.com, Trello, KanbanFlow, MS. Excel, etc
Workflows, Progress Tracking and
Management
• Workflows refer to the systematic process or series
of steps that developers, testers, designers, and other
team members follow to complete tasks and achieve
project goals.
• Tracking and managing progress in a workflow ensures
that tasks are completed on time, objectives are met,
and any issues or roadblocks are addressed quickly.
Workflows, Progress Tracking and
Management (cont.)
• A Gantt chart is a project management tool that
illustrates a project's timeline and tasks.
Typical Software Development
Methodologies
1. Waterfall
2. Agile
3. Rapid Application Development (RAD)
4. V-Model
Waterfall
• One of the earliest
methodologies in
software development.
• It is a linear sequential
approach, meaning that
each phase of the
lifecycle must be
completed before
moving on to the next.
Phases
1. Requirement Gathering: Collect all the system
requirements at the beginning.
2. System Design: Plan the system architecture and
software design.
3. Implementation: Develop the software code.
4. Testing: Test the software for defects.
5. Deployment: Release the software to the users.
6. Maintenance: Provide ongoing support and updates.
Advantages and Disadvantages
Advantages: Disadvantages:
• Simple and Easy to Understand: Inflexible: Waterfall does not allow changes
The structure is straightforward and after the project begins. If requirements
change, the entire process has to be
easy for teams to follow. revisited.
• Clear Requirements Upfront: All Late Testing: Testing is done only after the
requirements are gathered at the development phase is complete, which can
start, ensuring that both the team and lead to the discovery of critical issues late
clients understand the project scope. in the process.
• Strong Documentation: Since all Risk of Misunderstanding: If the initial
requirements are misunderstood or
phases are defined upfront, the incomplete, the project may not meet user
documentation is very detailed and needs.
comprehensive. • Not Ideal for Complex or Uncertain
• Easy to Manage: The clearly defined Projects: Waterfall is not well-suited for
phases make it easier to track projects where requirements are likely to
progress and manage timelines. change during development.
Agile
• Agile is an iterative
and incremental methodology
that emphasizes flexibility,
collaboration, and customer
feedback.
• Agile projects are divided into
small, manageable units of
work called sprints.
Phases
1. Concept/Planning: Gather initial requirements and
set project goals.
2. Design and Development: Build features
incrementally.
3. Testing: Test each iteration after development.
4. Release: Deliver a potentially shippable product after
each sprint.
5. Review and Retrospective: Evaluate progress and
adjust processes for continuous improvement.
Every now and then we need our
sprints
1. Sprint Planning: The team defines goals and selects
work items to complete during the sprint.
2. Sprint Execution: The team works together to
complete the tasks in the sprint.
3. Daily Standups: A quick meeting to discuss progress,
challenges, and next steps.
4. Sprint Review: The team demonstrates the
completed work to stakeholders.
5. Sprint Retrospective: The team reflects on the
sprint and identifies opportunities for improvement.
Advantages and Disadvantages
Advantages: Disadvantages:
• Flexibility and Adaptability: Agile allows • Requires Experienced Team Members:
for changes during the development process Agile relies on strong team collaboration,
based on customer feedback and evolving communication, and self-organization, which
requirements. requires experienced and skilled developers.
• Frequent Delivery: Agile delivers a • Can Be Hard to Scale: Agile can be
working product after each iteration, challenging to implement in large, complex
allowing for early and frequent releases. projects due to coordination issues across
• Customer Collaboration: Regular multiple teams.
involvement of stakeholders ensures that the • Less Predictable: Because of the focus on
product meets their needs and expectations. flexibility, it can be difficult to estimate
• Early Problem Detection: Testing occurs project costs, timelines, and resources
frequently, which helps identify issues early accurately.
in the process. • Documentation May Suffer: Due to the
• Continuous Improvement: Agile focus on working software and customer
encourages teams to reflect on their work interaction, documentation may be sparse or
regularly and improve their processes. incomplete.
Rapid Application Development
(RAD)
• Focuses on delivering software quickly through an iterative,
user-centric process.
• It combines prototyping with incremental development to
create high-quality software in a short time frame.
Phases
1. Requirements Planning: Gather and prioritize initial
requirements.
2. User Design: Create prototypes and design the
system with user input.
3. Construction: Build the software incrementally with
continuous user feedback.
4. Cutover: Transition the final product to the user for
deployment.
Advantages and Disadvantages
Advantages: Disadvantages:
• Fast Development: RAD allows for • Requires Skilled Developers: RAD
faster delivery by using prototypes and requires skilled developers to build
iterative development. prototypes quickly and handle multiple
iterations.
• User Involvement: Continuous
feedback from users ensures that the • Inconsistent Results: Since users are
product meets their needs and directly involved in the development,
expectations. there may be a lack of consistency in
design or features if user feedback is
• Flexible and Adaptable: RAD can not well-managed.
accommodate changes in requirements
throughout the development process. • Dependency on User Availability:
RAD relies heavily on user involvement,
• Cost-Effective: RAD typically reduces and if users are unavailable or provide
development costs due to the iterative unclear feedback, it can affect the
nature of the process. development process.
V-Model
• The V-Model is an
extension of the
Waterfall methodology
and focuses on validation
and verification of each
stage of the development
process.
• It emphasizes testing at
every step to ensure the
quality of the product.
Phases
1. Requirements Analysis
2. System Design
3. Coding
4. Unit Testing (corresponds to implementation in
Waterfall)
5. Integration Testing (to verify integration)
6. System Testing (to ensure overall system
functionality)
7. Acceptance Testing (to validate with the customer)
Advantages and Disadvantages
Advantages: Disadvantages:
• Emphasizes Testing: Testing is • Inflexible: The V-Model is rigid and
integrated into every stage of does not accommodate changes well
development, ensuring high-quality during the development process.
output. • Late Testing: Despite integrating
• Clear and Well-Defined Process: testing early, the model still requires
Like Waterfall, the V-Model provides a significant amount of time before
a structured approach with defined full system testing, which can delay
phases and clear documentation. the identification of defects.
• Early Detection of Issues: By • Resource-Intensive: Requires
verifying and validating each phase, more resources and dedicated time
issues are identified early in the for testing at each stage of
process. development.
Discussion (or typical exam question)
Which software development methodology should we
use for a project - and why? (15m)
The best methodology depends on the nature of the
project - there's no one-size-fits-all solution.
Can argue on:
• Type of project vs. methodology
Thoughts to ponder
• Each software development methodology has its strengths and weaknesses,
and the choice of which one to use depends on the project's size,
complexity, and requirements.
• Waterfall works well for projects with clear and fixed requirements,
while Agile and Scrum are best for projects with evolving needs.
• RAD is ideal for quick prototyping and delivering software rapidly, and the V-
Model emphasizes verification and validation at every stage for high-quality
software.
• Understanding the advantages and disadvantages of each methodology will
help teams select the most suitable approach for their specific project.
Importance of SD Methodology
• SD Methodology refers to a structured approach or set of
processes that guide software development teams in
designing, developing, testing, and maintaining software
systems.
• It is like a clear roadmap - it provides a structured process for
planning, designing, building, testing, and delivering software.
• Thus, the choice of methodology significantly impacts the
efficiency, quality, and success of the software development
process.
Importance of SD Methodology
(cont.)
1. Organization and Structure
2. Improved Planning and Estimation
3. Better Communication
4. Manage Changes
5. Quality Assurance
6. Team Collaboration
7. Faster Delivery
Can we mix-match methodology in a
single project management?
• Yes !
• This is called a hybrid approach, and it’s very common in
real-world projects.
• Why?
• Because every project is different - some may
require flexibility and frequent updates, while others
need structure and documentation.
So? How to mix?
Case Scenario: Building UMS Library Management System.
• The backend infrastructure (security, data storage,
authentication) is built using Waterfall, because:
• Requirements are fixed.
• Compliance and documentation are critical.
• It must be stable before moving forward.
• The user interface for staffs and students is developed
using Agile, because:
• User feedback is gathered regularly.
• Design is updated based on user testing.
• Frequent iterations improve usability.
So? How to mix? (cont.)
Offers great benefits: However, challenges are still
• Flexibility where it’s needed. there:
• Stability for critical • Requires
components. strong communication and
coordination.
• Balances structure with
adaptability. • Can be confusing if roles and
expectations aren’t clear.
• Risk of conflicting
timelines between methods.
• Mixing methodologies lets you custom-fit your
process to your project needs - but it must be done with
clear planning and team alignment.
Conclusion
• Introduction to Software Development Methodology
• Typical SD Methodologies
• Importance of SD Methodology
• Mix-match Methodology
• Discussions
• In conclusion, a software development methodology is like a
guidance or reference that helps teams organize work,
manage complexity, and improve collaboration while
building software efficiently and effectively.