SWE 494: Software Project Management
Chapter 4: The Development Phase – part 1
Dr. Sara Abdelghafar
Assistant Professor of Computer Science
Canadian International College (CIC), New Cairo Campus.
Email: sara_abdelghafar@[Link]
Introduction
• The Development Phase is where the software product is constructed based on the requirements and design specifications defined
in earlier phases. This phase transforms ideas and plans into a tangible, working product. It is a critical stage in the project
lifecycle, as it directly impacts the quality, functionality, and success of the final product.
• Key Activities in the Development Phase
Coding: During this stage, developers write the software code according to the design specifications. This involves translating the
system design into a functional program using programming languages and tools.
Testing: Testing ensures that the software meets the defined requirements and is free of bugs or defects. Various testing methods,
such as unit testing, integration testing, and system testing, are used to validate the software’s functionality and performance.
Integration: In this step, individual components or modules of the software are combined to form a complete system. Integration
ensures that all parts of the software work together seamlessly.
Documentation: Documentation is created to guide users and developers. This includes user manuals, technical guides, and
system documentation, which are essential for maintenance, troubleshooting, and future updates.
Major Development Management Frameworks
• Various frameworks and methodologies have emerged to manage this critical phase, each with its own
approach and set of roles.
• Traditional methods like Waterfall follow a linear, phase-based process, while Iterative methods break the
work into cycles, allowing for incremental improvements.
• However, in today’s fast-paced and ever-changing environment, Agile has emerged as the most widely
adopted framework due to its flexibility, adaptability, and focus on delivering value quickly.
• Agile’s iterative and incremental approach, combined with its emphasis on collaboration and customer
feedback, makes it uniquely suited to modern software development challenges.
Major Development Management Frameworks, cont.
• Agile emphasizes delivering working software in short, time-boxed cycles called sprints. This approach ensures
that development remains aligned with changing requirements and customer feedback, making it far more
adaptive and responsive than traditional phase-based methods.
• By focusing on continuous delivery and collaboration, Agile enables teams to respond quickly to changes, reduce
risks, and deliver value to stakeholders early and consistently. Its primary objective is to create a flexible, efficient,
and customer-centric development process that prioritizes working software and continuous improvement.
Execution Strategies
Agile Strategy and Execution Models
The below picture illustrates the Strategy and Execution Model in an Agile project, highlighting how strategic goals are broken
down into actionable tasks across different timeframes. At its core, the model relies on a Product Backlog, which serves as a
comprehensive list of customer requirements. These requirements are organized hierarchically into Epics, Features, and User
Stories, ensuring clarity and traceability throughout the project lifecycle.
Agile Strategy and Execution Models, cont.
• Strategy Level (Portfolio Level):
Includes Features, Epics, and Themes, which
represent broader strategic goals.
Features are larger than User Stories and may take
weeks to complete.
Epics and Themes align with long-term objectives
and provide a high-level roadmap for the project.
• Execution Level (Story Level):
Focuses on Tasks and User Stories, which are
derived from the higher-level requirements.
Tasks are small, actionable items that can be
completed in hours or days.
User Stories represent specific functionality that
delivers value to the end-user.
Agile Strategy and Execution Models, cont.
• Theme: High-level strategic goal (e.g., Enhance Digital Banking Experience).
• Epic: Large body of work that supports the theme (e.g., Redesign Mobile Banking App).
• Feature: A high-level functionality that delivers value to the user.
(e.g., Real-Time Notifications).
• User Story: A small, customer-focused requirement written from the perspective of the end user.
The Feature (Real-Time Notifications) is broken down into multiple User Stories, each addressing a
specific aspect of the feature.
• Feature: Real-Time Notifications.
• User Story 1: As a customer, I want to receive real-time notifications for transactions.
• User Story 2: As a customer, I want to receive real-time notifications for account updates (e.g.,
password changes).
• User Story 3: As a customer, I want to receive real-time notifications for security alerts (e.g.,
login attempts).
• Tasks: Small, actionable items to complete the user story (e.g., Design UI, Develop API, Test
Feature).
Agile Frameworks
Agile Frameworks
Agile is more than a set of rules or procedures—it is a way of thinking and a philosophy centered on delivering value
through collaboration, adaptability, and continuous improvement. At its core, Agile focuses on three key aspects:
Customer Focus: Constantly engaging with customers to ensure the product meets their needs.
Iterative Development: Delivering small, incremental advances called iterations or sprints.
Continuous Validation: Testing progress and validating results before moving forward.
Agile frameworks, such as Scrum and Kanban, provide structured approaches to implement these principles.
They offer guidelines, roles, and processes to help teams collaborate effectively, adapt to change, and deliver
working software frequently. By fostering collaboration, responding to changing requirements, and enabling
continuous improvement, Agile frameworks ensure that teams can deliver value quickly and efficiently while
maintaining a focus on quality and customer satisfaction.
Scrum
Scrum: A lightweight Agile framework for managing complex projects. Delivers value
iteratively and incrementally through sprints.
Scrum Pillars:
Transparency: All work is visible to the team and stakeholders.
Inspection: Regularly check progress toward the sprint goal.
Adaptation: Adjust processes and plans based on feedback.
Key Components of Scrum:
Artifacts: Product Backlog, Sprint Backlog, and Increment.
Events: Sprint Planning, Daily Standup, Sprint Review, and Sprint Retrospective
Roles: Product Owner, Scrum Master, and Development Team.
Scrum Artifacts
1. Product Backlog
A prioritized list of all requirements (Epics, Features, User Stories).
Example: Epic: Redesign Mobile Banking App.
Real-Time Notifications and Two-Factor Authentication are part of the Product Backlog.
2. Sprint Backlog: Real-Time Notifications
Tasks:
• Design Notification UI.
• Develop Backend API.
• Integrate Push Notification Service.
• Test the feature.
3. Increment:
A fully functional "Real-Time Notifications" feature that:
• Displays transaction notifications on the app.
• Fetches real-time data from the backend API.
• Sends push notifications to users.
• Has been tested and meets the acceptance criteria.
Scrum Events
Scrum Events
1. Sprint Planning
The team selects items from the Product Backlog for the upcoming sprint and defines the sprint goal.
Example: For the "Real-Time Notifications" feature, the team selects tasks like:
Design Notification UI.
Develop Backend API.
2. Daily Standups: A 15-minute meeting where the team syncs up on progress, plans, and issues.
Example:
The backend team reports progress on API development.
The frontend team discusses challenges in UI integration.
The Scrum Master helps resolve blockers, such as API-Frontend communication issues.
Scrum Events, cont.
3. Sprint Review
The team demonstrates the Increment (completed work) to stakeholders for feedback.
Example:
The "Real-Time Notifications" feature is showcased, including:
A clean, user-friendly notification UI.
Real-time transaction data fetched by the backend API.
Stakeholder Feedback:
Positive feedback on the design and functionality.
Requests for additional features, such as a "Mark as Read" option.
4. Sprint Retrospective
The team reflects on the sprint and identifies improvements for future sprints.
Example:
Areas for Improvement:
API documentation needs to be more detailed.
Include stakeholders in design reviews earlier.
Action Items:
Update API documentation.
Schedule stakeholder design reviews in the next sprint.
Roles and Responsibilities in Scrum
Roles and Responsibilities in Scrum
1. Product Owner
The Product Owner is responsible for maximizing the value of the
product by managing and prioritizing the Product Backlog.
Key Responsibilities:
Define and communicate the product vision.
Prioritize backlog items based on business value and stakeholder
needs.
Ensure the team understands the requirements and goals.
Example:
In a mobile banking app project, the Product Owner prioritizes
features like Real-Time Notifications and ensures they align with
the strategic vision.
Roles and Responsibilities in Scrum, cont.
2. Scrum Master
The Scrum Master is a moderator and facilitator, whose leadership role and
responsibilities are split between the Product Owner and Development Team.
They focus on facilitating the Scrum process, removing obstacles, and ensuring
the team stays aligned with Agile principles.
Key Responsibilities:
• Coach the team: Help the team understand and implement Scrum
practices effectively.
• Handling issues: Identify and resolve issues that block the team’s
progress.
• Facilitate Scrum events: Organize and lead Scrum ceremonies such as
Sprint Planning, Daily Standups, Sprint Reviews, and Retrospectives.
• Example: During the sprint, the Scrum Master assists the team in resolving
integration challenges between the backend and frontend, ensuring smooth
collaboration and progress.
Roles and Responsibilities in Scrum, cont.
3. Scrum team
Scrum Team is also known as the Development Team. It usually consists of
Developers. Testers, Designers, etc.
Key Responsibilities:
Plan and execute sprint work: Break down tasks, estimate effort, and
deliver the product increment.
Collaborate cross-functionally: Work together to design, develop, test,
and deliver the product.
Ensure quality: Meet the Definition of Done by delivering a
potentially shippable product increment.
Example:
The Development Team designs, develops, and tests the Real-Time
Notifications feature, ensuring it meets all acceptance criteria and is
ready for release.
Best of Luck
Dr. Sara Abdelghafar
Email: sara_abdelghafar@[Link]