Overview of Software Engineering
Overview of Software Engineering
It is a rapidly evolving field, and new tools and technologies are constantly
being developed to improve the software development process.
Software Engineering ensures that the software that has to be built should
be consistent, correct, also on budget, on time, and within the required
requirements.
SDLC models
Software development life cycle (SDLC) is a structured process that is used to
design, develop, and test good-quality software. SDLC, or software
development life cycle, is a methodology that defines the entire procedure of
software development step-by-step. The goal of the SDLC life cycle model is
to deliver high-quality, maintainable software that meets the user’s
requirements.
Requirement Engineering
Requirements Engineering is the process of identifying, eliciting, analyzing,
specifying, validating, and managing the needs and expectations of
stakeholders for a software system.
1. Technical Feasibility:
Assesses the availability of required technology, technical skills, and
ease of system maintenance. Ensures technical resources can support
project development.
2. Operational Feasibility:
Evaluates usability, maintainability, and alignment with user needs to
ensure the solution integrates smoothly into operations.
3
3. Economic Feasibility:
Analyzes costs (development, operational) against benefits, focusing
on ROI and financial viability.
4. Legal Feasibility:
Ensures compliance with laws, regulations, and intellectual property
requirements, avoiding legal obstacles.
5. Schedule Feasibility:
Examines project timelines, milestones, and resource availability to
confirm deadlines are achievable.
o Examples:
2. Non-Functional Requirements:
o Categories:
2. Requirement Analysis:
3. Requirement Specification:
4. Requirement Validation:
These phases collectively ensure the project aligns with user needs and
organizational goals.
1. Introduction:
o Project scope.
2. System Overview:
3. Functional Requirements:
o Examples:
4. Non-Functional Requirements:
5. System Features:
7. System Constraints:
Importance of an SRS
1. Introduction
• Purpose: Define the objective of the SRS and its intended audience.
2. Overall Description
3. Specific Requirements
• Functional Requirements:
• Non-Functional Requirements:
• System Constraints:
4. System Features
7. Appendices
1. Introduction
• 1.1 Purpose: Describes the purpose of the SRS and its intended
audience.
2. Overall Description
• 2.1 Product Perspective: Describes how the product fits into a larger
system or project.
• 2.3 User Classes and Characteristics: Describes the target users and
their characteristics (e.g., experience level, hardware usage).
3. System Features
• 3.1 Feature 1:
• 4.1 User Interfaces: Describes how the system will interact with the
users, including layout, design, and usability.
• 4.2 Hardware Interfaces: Specifies how the system will interact with
hardware devices (e.g., printers, sensors).
5. System Attributes
7. Appendices
o Key Features:
o Non-Functional Requirements:
o Key Features:
o Non-Functional Requirements:
o Key Features:
o Non-Functional Requirements:
Class Diagram
14
Activity Diagram
1. Activities:
5. Decision Nodes:
Interaction Diagram
Package
A package diagram is a type of structural diagram in UML (Unified Modeling
Language) that organizes and groups related classes and components into
packages. It visually represents the dependencies and relationships between
these packages, helping to illustrate how different parts of a system interact
with each other.
In a package diagram, several key elements help organize and clarify the
relationships within a system:
NameSpace: This denotes the name of the package and usually appears at
the top of the package symbol. It helps uniquely identify the package within
the diagram.
18
Package Merge: This relationship illustrates how one package can be merged
with another. It’s represented by a direct arrow between the two packages,
indicating that their contents can combine.
Package Import: This relationship shows that one package can access the
contents of another package, depicted with a dashed arrow.
1. Component
What is a Component-Based Diagram?
One kind of structural diagram in the Unified Modeling Language (UML) that
shows how the components of a system are arranged and relate to one
another is termed a component-based diagram, or simply a component
diagram.System components are modular units that offer a set of interfaces
and encapsulate implementation.
These diagrams illustrate how components are wired together to form larger
systems, detailing their dependencies and interactions.Component-Based
Diagrams are widely used in system design to promote modularity, enhance
understanding of system architecture.
deployment
A Deployment Diagram is a type of Structural UML Diagram that shows the
physical deployment of software components on hardware nodes. It
illustrates the mapping of software components onto the physical resources
of a system, such as servers, processors, storage devices, and network
infrastructure.
• Artifacts: Physical files that are placed on nodes represent the actual
implementation of software components. These can include
executable files, scripts, databases, and more.
1. Project Initiation
2. Project Planning
3. Project Execution
• Objective: Implement the project plan and deliver the project work.
5. Project Closing
• Objective: Finalize all project activities and formally close the project.
Quality Metrics
In Software Engineering, Software Measurement is done based on some
Software Metrics where these software metrics are referred to as the
measure of various characteristics of a Software.
1. Code Quality
2. Reliability
3. Performance
4. Usability
5. Correctness
6. Maintainability
7. Integrity
8. Security
Risks Identification.
Risk Assessment.
Risks Planning.
Risk Monitoring
25
COCOMO-I (ProblemStatement)
COCOMO-I (Constructive Cost Model - Integrated) is an early version of the
COCOMO model, developed by Barry Boehm in 1981, designed to estimate
the cost, effort, and schedule required for a software development project.
COCOMO-I helps project managers predict project outcomes based on
various parameters, such as the size of the software and the complexity of
the tasks involved. It was later updated to COCOMO-II, which further refines
the model for more modern software development practices.
The problem can be broken down into the following key points:
Estimating Project Effort: The need for a reliable estimation of the effort
required for a project based on its functional size, which can be used to
calculate project cost, timeline, and resource allocation.
1. Risk Identification:
2. Risk Assessment:
3. Risk Mitigation:
4. Risk Monitoring:
COCOMO-I Calculation:
Types of Projects in the COCOMO Model
In the COCOMO model, software projects are categorized into three types
based on their complexity, size, and the development environment. These
types are:
External Inputs (EI): User inputs into the system, such as data entry or
interaction.
Internal Logical Files (ILF): Internal data structures or files maintained by the
system.
External Interface Files (EIF): Data used by the system but maintained by
other systems.
FPA Process:
Identify the functions: Categorize the system’s functions as EI, EO, ILF, EIF, or
EQ.
Adjust for complexity: Adjust the total function points using a set of General
System Characteristics (GSCs) that assess the overall complexity of the
system (e.g., performance requirements, transaction rate).
Agile Definition:
Agile is a project management and software development methodology that
emphasizes flexibility, collaboration, and customer feedback. It focuses on
delivering small, incremental improvements to a product in short, iterative
cycles known as sprints (typically 1-4 weeks). Agile prioritizes individuals and
interactions, working software, customer collaboration, and responsiveness
to change over strict adherence to processes and comprehensive
documentation
2. Iteration Planning: Plan the first sprint, selecting tasks from the
backlog.
History of Agile
The history of Agile can be traced back to the early 1990s when software
development teams faced increasing challenges with traditional,
heavyweight methodologies like Waterfall. These traditional approaches
were linear, inflexible, and often led to delays and poor alignment with
customer needs. In response, several lightweight methodologies and
frameworks began to emerge, such as:
Scrum (developed in the early 1990s by Jeff Sutherland and Ken Schwaber).
1. Scrum Master
Role Definition: The Scrum Master acts as a facilitator and coach for the
Scrum team. They are responsible for ensuring that the team follows Scrum
practices and principles, removing any obstacles (or impediments) that might
hinder progress, and fostering a collaborative environment.
Key Responsibilities:
• Coach and Support the Team: They guide the team in implementing
Scrum practices, ensuring that they understand and adhere to the Agile
principles.
35
• Shield the Team: The Scrum Master protects the team from external
distractions and ensures that they can focus on their work without
interference.
2. Product Owner
Role Definition: The Product Owner is responsible for defining the product
vision, managing the product backlog, and ensuring that the development
team works on the most valuable features first. They act as the liaison
between stakeholders (customers, business users) and the development
team.
Key Responsibilities:
3. Development Team
Role Definition: The Development Team is composed of professionals who do
the actual work of developing the product. The team is self-organizing, cross-
functional, and responsible for delivering a potentially shippable product
increment at the end of each Sprint.
Key Responsibilities:
36
Team Collaboration:
In Agile, particularly Scrum, collaboration between these roles is critical for
the success of the project. The Scrum Master helps the team stay on track
with Scrum practices, the Product Owner ensures the team works on the
highest-value items, and the Development Team implements the features
and delivers the product increment.
2. Sprint Backlog: A subset of tasks selected from the product backlog for
the current sprint, managed by the Development Team.
User Stories
Definition: A User Story is a brief, simple description of a feature or
functionality told from the perspective of the user or customer. It defines
what the user wants to accomplish and why, focusing on delivering value to
the customer.
Format:
Example:
Purpose:
38
• To focus on user needs and the value that the feature will provide.
Story Points
Definition: Story Points are a unit of measure used to estimate the relative
effort or complexity required to complete a User Story. Story points are not
tied to specific time units (like hours), but rather to the difficulty or
complexity of a task.
Purpose:
• To estimate the total effort needed for the entire project or release.
Example:
3. Dot Voting: Team members vote on the complexity of stories, and the
highest-voted stories are estimated.
4. Bucket System: Stories are quickly sorted into predefined buckets (e.g.,
small, medium, large), with each bucket assigned a point value.
5. The Bucket Brigade: Stories are sorted into buckets in sequence with
brief discussions, followed by a final review.
Product Backlog
Definition:
The Product Backlog is a dynamic, prioritized list of all features,
enhancements, bug fixes, technical tasks, and requirements for a project. It
represents everything that needs to be done to improve the product.
Key Points:
• Items: Can include user stories, bugs, technical tasks, and any other
work needed for the product.
40
Sprint Backlog
Definition:
The Sprint Backlog is a subset of the Product Backlog, consisting of the items
that the team has committed to completing during the current sprint. It is a
detailed list of tasks and user stories that the team plans to work on during
the sprint.
Key Points:
• Owned by the Development Team: The team selects which items from
the Product Backlog to include in the Sprint Backlog during Sprint
Planning.
• Dynamic: It can evolve during the sprint as the team gains insights, but
the goal is to complete all items committed for the sprint.
• Time: The Product Backlog is ongoing and evolving, while the Sprint
Backlog is time-boxed for the duration of a sprint.
Product Vision
Definition:
The Product Vision is a high-level description of the product's purpose, its
goals, and the value it will deliver to users or customers. It serves as a guiding
41
light for the product development process and helps ensure that all
stakeholders are aligned on the product’s ultimate objectives.
Key Points:
• Purpose: Clearly defines why the product exists and what problems it
aims to solve.
• Direction: Provides the team with a long-term focus and helps guide
decision-making.
Example:
• "Our vision is to create a mobile app that helps users track their fitness
progress and stay motivated through personalized workout plans."
Product Roadmap
Definition:
A Product Roadmap is a strategic plan that outlines the product's
development trajectory over time. It maps out key features, releases, and
milestones, and helps visualize how the product will evolve in response to
market needs, customer feedback, and business goals.
Key Points:
Types of Roadmaps:
Example:
• "In Q1, we will release the basic fitness tracking features. In Q2, we'll
introduce personalized workout plans, and in Q3, we'll integrate social
sharing options."
Sprint Velocity
Definition:
Sprint Velocity is a metric used to measure the amount of work a team can
complete during a sprint. It is calculated by summing the story points of all
the user stories that were successfully completed by the end of the sprint.
Key Points:
43
• Helps with Forecasting: Sprint velocity helps predict how much work a
team can take on in future sprints by providing historical data.
• Used for Sprint Planning: It helps the team and Product Owner plan the
number of user stories for upcoming sprints.
Example:
Formula:
Note: Velocity can fluctuate over time due to changes in team size, project
complexity, or other external factors. The important aspect is tracking trends
rather than focusing on a specific number.
Swim Lanes
Definition:
Swim Lanes are horizontal or vertical divisions used in flowcharts, Kanban
boards, or process diagrams to separate different categories or entities
responsible for specific tasks. They are used to improve clarity and show who
is responsible for each activity.
Key Points:
Example:
In a Kanban board, you might have swim lanes for:
Benefits:
Key Points:
45
• Core Features: The MVP includes only the essential features that
address the main problem or need, without unnecessary extras.
Example:
Purpose:
1. Version:
o Definition: A Version is a specific iteration or release of a
software product, typically identified by a number (e.g., 1.0, 2.1)
to distinguish it from other releases. Versions reflect changes
made to the product, such as new features, bug fixes, or
improvements.
o Key Points:
46
Example:
2. Release:
o Definition: A Release is the distribution or deployment of a new
version of the product to users. It refers to the process of making
a version of the product available to customers, whether
internally (e.g., beta release) or externally (public release).
o Key Points:
Example:
47
Agile Reports
1. Daily Reports
Definition:
Daily reports in Agile, particularly in Scrum, are typically informal updates
shared during the Daily Stand-up Meeting (also called the Daily Scrum).
These reports help the team track progress and surface any potential issues
or blockers.
Key Points:
• Purpose: These reports help keep the team aligned, ensure that any
issues are quickly addressed, and promote transparency.
Example:
• "Yesterday I finished the login page, today I’ll start working on the user
profile, and I need help with the API integration."
Key Points:
• Data: It shows how much work (in story points, hours, or tasks)
remains to be done at the end of each day.
• Ideal Line: There is often an ideal line that indicates how much work
should have been completed each day to finish on time.
• Tracking Progress: If the actual line is above the ideal line, the team
might need to increase effort to meet the sprint goal. If it’s below, the
team is ahead of schedule.
Example:
3. Sprint Reports
Definition:
Sprint reports are used to summarize the progress made during a sprint,
highlighting achievements, issues, and overall outcomes. It includes detailed
data about the completed work, any deviations from the original plan, and
the team's performance.
Key Points:
• Content: The report might include the sprint goals, completed user
stories, work not completed, and any blockers faced.
50
Key Points:
• INVEST Criteria: A good user story follows the INVEST criteria, meaning
it should be:
1. Identify the User: Define who will benefit from the feature. This could
be an end user, admin, or another type of system user.
3. Explain the Purpose: Why does the user need this feature? What is the
value it provides?
Key Points:
• Testable: Scenarios are written in such a way that they can be tested to
confirm that the story works as intended.
Example (for the user story: "As a customer, I want to add items to my
shopping cart so that I can purchase them later"):
52
• Scenario 1: If the user adds an item to the cart, the cart count increases
by 1.
• Scenario 2: If the user removes an item from the cart, the cart count
decreases by 1.
MS Project Tool
Microsoft Project (MS Project) is a project management tool used for
planning, scheduling, and tracking projects. It offers features like task
scheduling, Gantt charts, resource allocation, cost management, and
progress tracking. MS Project helps project managers ensure projects are
completed on time, within budget, and with optimal resource usage.
Here are the key tools available in Microsoft Project (MS Project):
4. Critical Path Method (CPM): Identifies the sequence of tasks that affect
project completion.
Hands on GitHub
Here’s a hands-on guide to using GitHub for managing and collaborating on
projects. GitHub is a powerful platform primarily used for version control and
collaboration on code. It allows developers to work together on the same
project while keeping track of changes.
o git --version
3. Create a Repository
o On GitHub, click the + in the top right corner and select New
repository.
4. Clone a Repository
o It’s good practice to create a new branch for any feature or fix.
Run the following commands:
o Once you have made your changes, add them to the staging area
with:
o git add .
o This pulls the latest code from the main branch into your current
branch.
• GitHub Pages: Create and host static websites directly from a GitHub
repository.
58
Here’s an overview of how you can create a project using Kanban, manage
project repositories, implement continuous integration, and manage the
project backlog and team effectively:
o You can use tools like Trello, Jira, or Kanboard to create a digital
Kanban board.
5. Track Progress:
1. Set Up a Repository:
2. Branching Strategy:
3. Version Control:
o Keep track of changes with commit messages, and ensure that all
changes are version-controlled.
60
4. Collaboration:
1. Choose a CI Tool:
3. Automated Testing:
4. Monitor CI:
61
o Use tools like Jira, Trello, or Asana to create and manage your
project backlog.
4. Sprint Planning:
1. Define Roles:
2. Collaboration Tools:
3. Daily Standups:
4. Encourage Self-Organization: