In project management, we focus on the triple constraint theory, lifecycle processes, and phases. In software development, we focus on the SDLC process, phases. This article explains the SDLC model like RAD model, and Waterfall model. It also explains the SCRUM framework in agile methodology.
Introduction
To develop a successful project, both project management team and software development team need to work together. Project management team follows some principles and project management lifecycle process. Similarly, development team also follows the software development patterns & principles, SDLC process, methodology and framework to implement the project. Development team usually knows the SDLC process. But it is also recommended to know the project management lifecycle process.
Coverage Topics
- Project Management Principles
- The Triple Constraint Theory in Project Management
- Importance of Project Management Lifecycle Process
- Project Management Lifecycle Phases
- Importance of SDLC
- Software Development Lifecycle Phases
- Importance of a Software Development Methodology
- Choosing Different SDLC Models
- SCRUM Framework in Agile Methodology
Prerequisites
I'm guessing, you're professional and already familiar with project management and software development lifecycle process. So, you already know, how to do analysis and development; anyway, I'll guide you, what to do step by step.
Do you love to learn? There're questions for you!
- You're a developer, then why do you need knowledge about project management lifecycle process and which components of a project plan are most important for your development?
- Are you familiar with the project management documentation, like, project charter/project initiation document, Gantt chart, and work breakdown structure, etc.?
- Practically, do you use the requirement analysis document, software architecture document and software design document?
- Which SDLC methodology and framework do you use based on your project requirement?
PROJECT MANAGEMENT
Project Management Principles
- Project Goals Principle
- Performance Baseline Principle
- Project Risk Principle
- Project Lifecycle Principle
- Team Role & Responsibilities Principle
- Communication Principle
I'll explain only principles 2 and 4. Principle 4 defines the project management lifecycle process and phases. Principle 2 is needed during project planning which is one of the project management lifecycle phases.
Project Management Plan
You know, project plan has few components; for example, project goals, schedules, budget, quality and resource plan (project manager, stakeholders). According to the performance baseline principle, you need to setup the quality measurement. The concept of the quality introduces the "Triple Constraint Theory".
The Triple Constraint Theory in Project Management
The triple constraint theory is so popular that it is still in the project management for more than 80 years on since 1940s. The triple constraint represents the project’s scope, time and cost.
For example, suppose, I need an application to upload and display the images. The project scope defines the features, functionalities, etc. So, I need an image upload page to store it into the relational database. Secondly, I want an image gallery to view the images. The approximate total project cost can be $15555. The project duration can be 3 weeks. Now the constraint effect depends on where you mainly focus on your project.
- Pointing on time: If you want faster delivery, then you may need more resources which can increase your cost and/or you may need to shrink the project features.
- Pointing on cost: If you want cheaper budget, then you may shrink the time and/or the project features which may influence the product quality.
- Pointing on scope: If you want more features, then you may need more time and/or you may need more resources for the additional features which may increase the cost.
Note: PMBOK considers six constraints: time, cost, scope, quality, resource and risk.
Importance of Project Management Lifecycle Process
According to the project lifecycle principle, project team needs to follow the project lifecycle process; because, this is the well-known high level structured process for delivering a successful project. So, project management lifecycle are mainly its phases: initiation, planning, executing, monitor & control and closure.
Project Management Lifecycle Phases
Project Initiation: In this phase, project management team/project manager can use either Project Charter (according to PMBOK Guide) or Project Initiation Document (according to Prince2) which defines the project goal, identifies the stakeholders, explains the project purpose & benefits, and analyzes the project’s scope & risks. Finally, they need approval from the stakeholders.
Planning: In this phase, project manager defines the performance baselines, creates the project schedule with time frame, allocates the resources for the team, defines the communication plan, and defines how project will be executed, monitored and controlled. Project manager can use project schedule to create the Gantt chart and Work Breakdown Structure for the project. The Gantt chart mainly focuses on WHEN the tasks will be done, and Work Breakdown Structure focuses on WHAT will be done.
Execution: In this phase, project tasks are handover to the development team and they start to implement the tasks according to software development lifecycle (SDLC) process.
Monitoring and Control: In this phase, project manager includes with comparing/review the actual completed task against the actual plan and updates the progress status report.
Project Closure: In this phase, the project tasks are finished. So, project manager takes the approval and delivers the project to the client. Finally archives all the project documents and source codes for future use/reference.
SOFTWARE DEVELOPMENT
Importance of SDLC Process
In software engineering, you follow the SDLC; because, this is the well-known structured process to develop the software/project from start to end. It mainly contains the high-level design to understand the overall project for the business and technical team.
Software Development Lifecycle Phases
According to the lifecycle principle, you know that software development lifecycle has phases & each phase maintains a precedence sequence when to start.
- Requirement Analysis: In this phase, business-analyst communicates with the clients to know, what they need. The requirements are documented as the Business Requirement Specification (BRS). Business-analyst uses the Project Charter or Project Initiation Document (PID) as an input for the BRS. Now system-analyst/technical-writer describes the externally visible behaviors of the system using the use-cases and it is documented as Functional Requirement Specification (FRS). After that, system-analyst describes, what the proposed system needs to do, and it is documented as Software Requirement Specification (SRS). SRS includes detail functionality, interfaces, security, etc.
- Architectural Design: In this phase, application architect will prepare the Software Architecture Document (SAD) and Software Design Document (SDD) based on the FRS.
SAD includes structure of the application (component based or layered architecture), how the components will be communicated each other (service oriented architecture or message bus), how components will be deployed (client/server or n-tier), which frameworks, development tools, front-end/back-end/database technologies, programing languages/scripts, etc. will be appropriated.
SDD consists of the High-Level Design (HLD) Document, Mid-Level Design (MLD) Document and Low-Level Design (LLD) Document.
- The HLD Document includes how all the components of the application will be designed (onion architecture), how they will be implemented (domain-driven-design), how the communication channel will be implanted, need to define all the components/modules of the application, etc.
- MLD Documents includes the database schema design, class diagram/sequence diagram of the components/modules, etc.
- LLD Documents includes the implantation guidelines, algorithm, functional logics for each component/module according to the design pattern/principles, etc.
- Implantation: In this phase, UI/UX developers, software developers & database designers start to build the application according to the architectural design. For example, if it is a web based application, then the UI/UX developers start to implement the graphical user interfaces (GUI) and GUI related logics; software developers start to implement the programing logics for each of the components/modules; database designers start to setup the database related permissions/securities and/or schema design related SQL/No-SQL scripts.
- Verification: In this stage, developer team starts to write the unit test for each of the methods of the component/module. They also integrate all the components and verify the communication between each of the component into the integrating testing. Quality Assurance (QA) team starts the functional and performance test into the system testing. Finally, they verify all the client requirements into the acceptance testing.
- Deployment & Maintenance: In the deployment phase, application is deployed to the production environment; so that, end user can start to use it. Now if end-users find any bug into the system, then developers need to fix it in the maintenance phase; sometimes developers receive the change requests (CR) to update the functionalities and they need to implement these CR.
Importance of a Software Development Methodology
There're many SDLC methodologies and you have to select one of the methodologies according to your situation considering the team size, technical skills of the resources, project duration, cost, project size and complexity, etc. Once you select the SDLC methodology, then you have to follow a particular model and phases. So, each methodology will provide you a justified theoretical guide lines to organize your project development from start to end. If you know where you're going, then you'll know when you've got there. Anyway, some of the popular SDLC methodologies are: Agile, Waterfall, Iterative, Rapid Application Development (RAD) etc.
Choosing Different SDLC Models
Waterfall Model: The phases of the Waterfall model are sequential where the output of one phase is the input to the next phase.
- It's good for one big project.
- Project Duration: Very long or 6/12/18 months
- Team size: 15 members or more/less
- Documentation: The documents are required; analysis documents => Business Requirement Specification (BRS), Functional Requirement Specification (FRS) and Software Requirement Specification (SRS); design documents => Software Architecture Documentation (SAD) and Software Design Document (SDD)
- Deployment: Final and single release to the production environment
Iterative Model: It is an iterative software development approach, where you need to split your one big project into smaller portions (iterations), then you need to implement one by one portion.
- Splits one big project into smaller iterations
- Project Duration: 2-4 weeks for each iteration
- Team size: 9 members or less
- Documentation: You need Business Requirement Specification (BRS) document; but analysis documents, Software Architecture Document and Software Design Document are optional
- Deployment: Multiple releases
Rapid Application Development Model: It is similar like the Agile process; but it mainly focuses on the prototyping; it iterates the prototyping based on the user feedback and finalizes the product.
- If your project is small and you need the prototype based on the user feedback and finalize the product, then RAD is good for you.
- Project Duration: Short/2-3 months
- Team size: 5 members or less
- Documentation: You need only Business Requirement Specification (BRS) document
- Deployment: Final release after getting the user feedback
SCRUM Framework in Agile Methodology
Once if you can select the SDLC methodology according to your requirement, then you need to implement the methodology based on the framework. Say, you choose the Agile methodology, then you can implement it by either Scrum or Extreme Programming (XP) framework. In the SCRUM, the whole project splits into more than one iteration. Each iteration is known as sprint.
SCRUM Artifacts
- Product Backlog: It contains a list of the tasks that needs to be done.
- Sprint: Each sprint contains 6-10 user stories and its 2-4 weeks long.
- Burn-Down Chart: It monitors the progress of the given tasks in the sprint.
SCRUM Roles & Responsibilities
- Product owner collects the requirements and communicate with the client. The requirements contain the user-stories.
- Development team implements and tests the software.
- Scrum master arranges 15 minutes daily standup meeting.
SCRUM Events
- Sprint Planning: What can be done in the sprint and how will the tasks get done.
- Daily Scrum/Standup Meeting: It happens daily 15 minutes to communicate with the team. Team explains what they did yesterday and what they will do today.
- Sprint Review: Stakeholders and scrum team review the Tasks.
- Sprint Retrospective: Reviews how team works during the sprint and takes suggestions for getting better to the next sprint.
XP Framework for Agile: XP is similar to the Scrum. But XP team allows changes into the sprint and each sprint 2 weeks long.
History
- 22nd May, 2020: Initial version