SE Module-5 Notes
SE Module-5 Notes
Page 1
Communicating with stakeholders and clients.
2. Effort Estimation:
Effort estimation helps predict the amount of effort, time, and resources needed to
complete the project. Common estimation methods include:
Types of COCOMO:
1. Basic COCOMO – Provides rough estimates based on the project size in KLOC
(thousands of lines of code).
Page 2
2. Intermediate COCOMO – Adds various cost drivers like team experience, tool
support, etc.
3. Detailed COCOMO – Considers phase-wise breakdown and all cost drivers for
greater accuracy.
Example:
Estimate the effort and time required to build a simple (organic) software project of
32,000 lines of code (32 KLOC).
So, a 32 KLOC project would take around 91 person-months of effort and 16 months
of calendar time.
3. Schedule Creation
Page 3
4. Resource Allocation
This involves assigning appropriate team members, tools, and technologies to tasks.
Effective resource allocation ensures that team members are not overburdened or
underutilized. It also includes budgeting for software tools, testing environments, and
hardware infrastructure.
5. Progress Tracking
Progress tracking helps ensure that the project stays on schedule. This involves:
Common tools for tracking include MS Project, JIRA, Trello, and other project
management platforms.
Page 4
1. Configuration Identification
This activity involves identifying and labelling all configuration items in a software
project such as source code, requirement documents, design specifications, and test
cases. Each item is assigned a unique identifier, enabling traceability and organized
versioning.
2. Version Control
Version control is the process of managing changes to files over time. It keeps track of
every modification, who made it, and when it was made. Tools such as Git and SVN
help manage multiple versions, support collaboration, and allow merging, branching,
and reverting changes.
3. Change Control
This activity ensures that all changes to software are introduced in a controlled and
coordinated manner. It involves submitting change requests, evaluating their impact,
approving or rejecting them, and documenting the reasons and decisions.
Popular Tools
Git
CVS
SVN
Enterprise Tools
Page 5
Rational ClearCase
Surround SCM
Seapine
Vesta
These tools support automated versioning, branching, merging, and auditing, which
are essential for managing software in collaborative and enterprise environments.
1. Version Control:
Maintains multiple versions of software components, making it easy to retrieve
or roll back changes.
2. Improved Collaboration:
Enables multiple developers to work simultaneously without conflict.
6. Reliable Releases:
Ensures that only verified and approved changes are released.
7. Enhanced Productivity:
Automation tools (like Git, SVN) streamline tracking, branching, and merging
tasks.
1. Learning Curve:
New users may find tools like Git difficult to learn initially.
2. Tool Complexity:
Page 6
Enterprise SCM tools may be complex and require dedicated training.
3. Time-Consuming Audits:
Performing configuration audits and reviews can be time-intensive.
4. Increased Overhead:
Strict control mechanisms may slow down rapid development if not balanced.
5. Dependency on Tools:
SCM becomes ineffective if the tools are not used consistently across the team.
Project Scheduling
Definition
Project scheduling is the process of identifying, organizing, and sequencing project
tasks along with assigning timelines, resources, and milestones to ensure smooth
execution and timely delivery of a software product.
Identify task dependencies (which task must come before or after another).
Importance of Scheduling
Proper scheduling ensures that the project progresses as planned, helps monitor team
workload, prevents delays, and avoids last-minute bottlenecks. Poor scheduling can
lead to resource conflicts, increased costs, missed deadlines, and lower quality output.
Page 7
Scheduling Techniques
2. Gantt chart
A Gantt chart is a horizontal bar chart used in project scheduling to represent tasks
along a timeline. Each task is displayed as a bar, where the length of the bar represents
its duration and its position reflects its start and end dates. It visually shows task
dependencies, overlaps, milestones, and progress.
Gantt charts are especially useful for tracking the progress of tasks, showing which
ones are in progress, completed, or yet to start. They are commonly used in meetings
and status reports to provide stakeholders a clear overview of the project’s state.
Page 8
Gantt chart:
A horizontal bar chart showing tasks across 17 days. Tasks are listed on the Y-axis,
and time (days) on the X-axis. Each task is represented by a horizontal bar that spans
from its start to end date. Progress bars are shaded to show completion. Arrows
indicate dependencies between tasks. Milestones like "Design Complete" and "Go
Live" are marked with vertical lines or markers.
Diagram Description:
Each bar represents one task, showing start and end dates clearly.
Arrows between tasks show dependencies (e.g., Design must finish before
Implementation starts).
Page 9
Vertical markets are used to indicate project milestones: "Design Complete" at
the end of System Design and "Project Go Live" at the end of Deployment.
This visual arrangement helps identify the timeline, overlaps, and critical
sequencing of tasks.
The Gantt chart visually represents five sequential tasks in the development of a
Library Management System (LMS), plotted over a time axis (in days). Each task is
represented as a horizontal bar, showing the start date, duration, and end date. The
chart includes progress shading, milestone indicators, and task dependencies.
Task Breakdown
1. Requirement Gathering
o No dependencies
2. System Design
3. Implementation
Page 10
o Dependency arrow links it from System Design
4. Testing
o No progress yet
5. Deployment
o No progress yet
o Milestone: “Project Go Live” marked at Day 17
Timeline Axis
The Y-axis lists tasks from top to bottom in the order of execution
Task Dependencies
Arrows clearly show which tasks follow others (e.g., Design depends on
Requirements, Implementation on Design, etc.)
This helps visualize sequential flow and identify the critical path
Milestones
Page 11
o Project Go Live (end of Day 17)
3. PERT Chart
Page 12
A network diagram with nodes representing events and arrows for activities. Each
arrow includes task name and TE (expected time). Tasks flow sequentially from
"Start" to "End".
Page 13
Diagram Description:
Circular nodes represent milestones (e.g., completion of a task).
Arrows show tasks between milestones and include labels (Task name and
duration).
The critical path is the longest path in this network and determines the shortest
completion time for the project.
If there are parallel paths, slack time (float) is identified for non-critical tasks.
Purpose:
4. CPM Chart
The Critical Path Method (CPM) is a deterministic scheduling technique used when
task durations are known and fixed. It helps identify the critical path, which is the
longest sequence of dependent tasks that determines the shortest time in which a
project can be completed.
Page 14
Latest Start (LS) and Latest Finish (LF)
Tasks on the critical path have zero slack — delaying any of them delays the project.
C Implementation 5 days B
D Testing 3 days C
E Deployment 2 days D
Sequence: A → B → C → D → E
All tasks are on the critical path. Any delay in these will delay the entire project.
Page 15
Generated CPM Chart:
A linear flowchart where nodes represent milestones and arrows show task names
and durations. The entire path from A to E is marked as the critical path.
Diagram Description:
Rectangular boxes represent each task, labeled with their name and duration.
Each node can include ES, EF, LS, LF values (for advanced tracking).
Page 16
Since there are no parallel tasks here, the entire workflow is the critical path.
Purpose:
A Timeline Chart (or Bar Chart) is a simplified version of a Gantt chart that visually
represents tasks along a horizontal time axis. Unlike Gantt charts, it doesn't show
progress, dependencies, or milestones — but provides a quick overview of task
durations and schedule.
Day Task
Page 17
Timeline/Bar Chart:
A simple horizontal chart showing each task as a colored bar aligned to the day it
Diagram Description:
Page 18
Provides a clean and high-level schedule view
Purpose:
1. Clear Roadmap:
Defines what needs to be done, by whom, and when.
2. Resource Optimization:
Allocates resources efficiently, avoiding under- or over-utilization.
4. Progress Monitoring:
Gantt and PERT/CPM charts help track progress and forecast completion.
5. Informed Decision-Making:
Enables better planning and risk assessment with real-time scheduling data.
6. Milestone Tracking:
Helps in evaluating project status against deadlines.
1. Time-Consuming Planning:
Preparing detailed schedules like Gantt or PERT charts can be complex and
lengthy.
2. Inflexibility:
Rigid schedules may not easily adapt to changing project requirements.
3. Over-Reliance on Estimates:
Inaccurate time/cost estimates can make the schedule unrealistic.
4. Tool Dependency:
Requires specialized software (like MS Project) and trained users.
Page 19
5. Not Suitable for Small Projects:
For very small or short-term projects, formal scheduling may be unnecessary
overhead.
What is DevOps?
DevOps is a set of practices, cultural philosophies, and tools that integrates
software development (Dev) and IT operations (Ops). It aims to shorten the
development lifecycle, improve software quality, and deliver applications and
services at high velocity.
Objectives of DevOps
Deliver software faster and more reliably.
Page 20
Benefits of DevOps
Practice Description
The cloud plays a significant role in modern DevOps practices by providing on-
demand infrastructure, scalability, and DevOps toolchains.
Page 21
Easily scale up/down infrastructure resources
Key Features:
Examples:
Use Case: Best suited for system admins and developers needing custom
environments or managing large-scale infrastructures.
AWS EC2 – In Practice: Amazon EC2 (Elastic Compute Cloud) is a widely used
IaaS offering that provides scalable virtual servers (called instances) in the AWS
Cloud.
Page 22
3. Select Instance Type → Choose based on CPU/RAM requirements (e.g.,
t2.micro)
6. Configure Security Group → Open necessary ports (e.g., SSH for Linux)
7. Launch and Connect → Use SSH key or EC2 Connect to access instance
Benefits:
Key Features:
Examples:
Page 23
Key Features:
Automatically handles provisioning, load balancing, scaling, and monitoring
Use Case: Great for startups and developers who want to deploy code without
managing any backend.
What It Is: SaaS delivers fully functional applications over the internet. Users
access them via a web browser or app without installing or maintaining anything.
Key Features:
Examples:
Gmail
Google Drive
Page 24
Microsoft Office 365
Use Case: Best for end-users who need ready-to-use software for daily tasks like
communication, documentation, or CRM.
Cloud-based solutions are very useful for building a real-time order tracking system
in a courier delivery app, where users can see the live location of their parcels and
receive updates.
Page 25
9. Monitoring and Analytics
Cloud platforms help monitor delivery status, app usage, and errors. This helps
companies improve service quality.
10. Cost and Speed Benefits
Using cloud services reduces setup costs and development time, making it
affordable and quicker to launch the tracking system.
DevOps Benefits:
Page 26
Use Case: Quick deployment of transaction management service
The platform handles load balancing, health checks, and scaling automatically.
DevOps Benefits:
Use Stripe or Razorpay APIs for secure and ready-to-use payment gateway
services.
Use GitHub for version control and Jenkins for CI/CD automation.
DevOps Benefits:
Modern DevOps practices heavily rely on cloud platforms for hosting, deploying,
monitoring, and scaling applications. These platforms offer powerful services that
support automation, elasticity, and integration throughout the DevOps lifecycle.
Page 27
Major Cloud Providers and Services
2. Microsoft Azure
Provides tools such as:
Example:
During a sudden traffic spike on an e-commerce website (such as during a flash sale),
auto-scaling increases the number of servers to handle the load. When the traffic
reduces, it automatically reduces the number of servers to optimize cost.
Benefit to DevOps:
Page 28
Reduces manual intervention in infrastructure scaling
Elasticity
Elasticity is the ability of the cloud infrastructure to adjust its resources dynamically
based on workload fluctuations. It is closely related to auto-scaling but focuses more
on how efficiently the system can respond to changes.
Example:
An online food delivery app might experience high usage during lunch and dinner
hours. The cloud infrastructure can scale up during those times and scale down during
off-peak hours automatically.
Benefit to DevOps:
Ensures applications remain responsive under different workloads
Example Scenario:
A developer commits code to GitHub. The CI/CD tool (such as AWS CodePipeline) is
triggered automatically. It:
Page 29
Benefit to DevOps:
DevOps Operations
In the DevOps lifecycle, the Operations phase is crucial for ensuring that deployed
applications run smoothly, securely, and reliably. It includes monitoring systems,
enforcing security policies, managing incidents, and continuously gathering feedback
to improve the product.
Purpose:
To provide real-time visibility into the performance and health of applications and
infrastructure.
Tools Used:
Prometheus: A powerful open-source tool used to collect metrics from systems
and services.
Nagios: A classic monitoring tool for server health and network monitoring.
Key Features:
Continuously tracks metrics like CPU usage, memory, response time, etc.
Sends alerts via email, Slack, or SMS when failures or performance anomalies
occur.
Example:
If a server exceeds CPU threshold (e.g., 90%), Prometheus triggers an alert. Grafana
Page 30
shows this on a dashboard. Engineers are notified instantly to take action.
What is DevSecOps?
DevSecOps integrates security into every stage of the DevOps pipeline rather than
treating it as a separate phase.
Key Practices:
Benefits:
Reduces human errors and delays in security enforcement
Purpose:
To detect system failures quickly, recover fast, and analyze the cause to prevent future
occurrences.
Key Activities:
Root Cause Analysis (RCA): Investigating the origin of the problem (e.g., a
Page 31
faulty deployment or hardware issue)
Logging & Rollback: Logs help understand system behavior; rollback plans
enable quick reversal of faulty deployments.
Example:
If a new version of an app crashes, engineers use logs to identify the error, roll back to
the previous version, and update the pipeline to prevent the issue from recurring.
4. Feedback Mechanisms
Purpose:
Feedback ensures that DevOps teams can continuously improve the application and
processes based on data.
Types of Feedback:
System Feedback:
User Feedback:
o Feature usage statistics
Benefits:
Page 32
Deployment Pipeline
A Deployment Pipeline is a set of automated stages through which software passes
from development to production. It embodies the CI/CD (Continuous
Integration/Continuous Delivery or Deployment) philosophy in DevOps.
Page 33
Explanation of Each Stage
1. Source Code Repository
Code is stored and version-controlled using tools like Git, GitHub, Bitbucket,
or GitLab.
Developers push/merge code into the main branch, triggering the pipeline.
Page 34
3. Testing Stage
Involves deeper levels of automated testing:
o Integration Testing
o Regression Testing
4. Staging Environment
Final manual tests or UAT (User Acceptance Testing) may occur here.
5. Production Deployment
o Blue-Green Deployment
o Canary Deployment
o Rolling Updates
Page 35
Supports rapid, frequent deployments with confidence.
Containerization: Docker
Orchestration: Kubernetes
Definition:
Key Characteristics:
Modularity: Each micro service corresponds to a specific business capability
(e.g., Login, Payment, Orders).
Independent Development: Teams can develop, test, deploy, and scale micro
services separately.
Page 36
Decentralized Data: Each service may have its own database.
Fault Isolation: Failure in one service does not crash the entire system.
Benefits:
Easier to scale specific services (e.g., scale only the Order service during lunch
hours).
Example:
DevOps Pipeline Architecture
Page 37
Scenario:
A feature is introduced to allow customers to view real-time location updates of their
delivery agents.
Pipeline Stages:
1. Code Commit
3. Automated Testing
o Integration Tests ensure that GPS integrates with the order management
system.
4. Staging Environment
o QA team simulates live order scenarios with mock users and locations.
5. Deployment to Production
Results:
Page 38
Fast rollback possible if bugs are found
Scenario: A feature that gives users a visual summary of their daily expenses.
Pipeline Stages:
1. Code Commit
2. CI/CD Pipeline
o GitLab CI/CD builds the backend and frontend.
3. Automated Testing
4. Staging
o Simulated accounts and mock transaction data.
5. Production Deployment
Results:
Page 39
Faster feedback for enhancements
Scenario:
Pipeline Stages:
1. Code Commit
2. CI Process
o GitHub Actions build and run unit tests.
3. Test Automation
4. Staging Review
o QA and instructors simulate quizzes.
5. Deployment
Results:
Zero downtime
Page 40
Safe rollback if failure occurs
Faster and more efficient than traditional virtual machines because they share
the host OS kernel instead of needing a full OS.
Definition:
Docker is a tool used to package applications and their dependencies into lightweight,
portable containers.
Applications inside containers run the same way on any system that supports
Page 41
Docker.
Key Benefits:
Example: You can run the "Payment Service" of your app in a container that includes
Node.js, payment API libraries, and config files—all bundled together.
Definition:
Kubernetes (K8s) is an open-source platform that automates deployment, scaling,
and management of containerized applications.
What it does:
Key Features:
Page 42
Service Discovery & Load Balancing: Manages internal communication
between micro services.
Example:
If the "Order Service" becomes busy during peak hours, Kubernetes can automatically
spin up additional containers to handle the load.
Before the build process begins, developers push (commit) their code to a shared
repository (like GitHub, GitLab, Bitbucket).
Pre-check Activities:
Linting: Identifies syntax and style errors (e.g., ESLint for JavaScript, Pylint
for Python).
Tools Used:
Page 43
2. Continuous Integration (CI) Build
Once code is committed, CI tools are triggered to build the application automatically.
Key Activities:
Packaging: The build generates deployable artifacts (like .jar, .war, .zip, or
Docker images).
CI Tools:
Jenkins
GitHub Actions
GitLab CI/CD
CircleCI
Travis CI
Benefits:
3. Automated Testing
Automated tests are critical for validating code behavior and preventing regressions.
Test Categories:
a. Unit Testing
Page 44
Tests individual units/modules (functions or methods)
b. Integration Testing
c. Regression Testing
Activities in QA/Staging:
Page 45
Tools:
JMeter (Load Testing)
Purpose:
Page 46
1. Jenkins
Category: Continuous Integration/Continuous Deployment (CI/CD)
What It Is:
Jenkins is a widely used open-source automation server that enables
developers to build, test, and deploy their code in a controlled and repeatable
way.
Features:
Use Case:
Automating the entire CI/CD pipeline. For example, whenever a developer
pushes code to GitHub, Jenkins pulls it, builds it, runs tests, and deploys the
app.
2. GitLab CI
Category: Integrated CI/CD Platform
What It Is:
GitLab CI/CD is a built-in DevOps tool within the GitLab platform. It
automates code build, test, and deployment stages based on events in your Git
repository.
Features:
Page 47
Use Case:
Ideal for teams using GitLab as their version control system. Streamlines the
development-to-deployment workflow within a single platform.
3. Spinnaker
What It Is :
Spinnaker is an open-source, multi-cloud continuous delivery platform
designed for safe, fast, and repeatable deployments.
Features:
Use Case:
Best for enterprises deploying apps across multiple cloud environments with
strict compliance and rollback strategies.
4. Ansible
What It Is:
Ansible is a lightweight automation engine used for automating provisioning,
configuration, and orchestration of infrastructure.
Features:
Page 48
Use Case:
Provision a fleet of servers, configure environments, and deploy applications —
all through scripts.
What It Is:
AWS Code Deploy is a fully managed deployment service from Amazon that
automates software deployments to:
o AWS Lambda
o On-premises servers
Features:
Use Case:
Automate deployment of web apps, backend services, or microservices in a
controlled, monitored environment using AWS infrastructure.
6. Helm
What It Is:
Helm is a package manager for Kubernetes that helps you define, install, and
upgrade Kubernetes applications using reusable templates called charts.
Features:
Page 49
o Supports values.yaml files for dynamic configurations.
Use Case:
Use Helm to deploy and manage cloud-native apps (like databases, monitoring
tools, micro services) in Kubernetes clusters efficiently.
CASE STUDY
Case Study: Atlassian DevOps Transformation
Problem Statement
Atlassian, a software company that develops tools like Jira and Confluence, was
facing several major issues:
Page 50
Tools Used in DevOps Pipeline
Tool Purpose
AWS For hosting services in the cloud with scalability and reliability
Faster Releases
Each micro service could be developed and deployed separately. This allowed the
team to release updates more frequently and quickly.
Improved Scalability
Individual services could be scaled based on their demand without affecting other
parts of the system.
Higher Reliability
Failures in one service did not affect the functioning of others. This improved the
overall stability of the application.
Deployment Frequency:
Atlassian was able to shift from monthly releases to daily deployments.
Error Rate:
The number of bugs and failures was reduced due to better testing practices and
gradual rollouts.
Page 51