Software Engineering Lecture 1
Software Engineering Lecture 1
Software Engineering Lecture 1
Software Requirements
Software Requirements: A comprehensive description of the intended
functionality and behavior of a software system, focusing on what the system will
do without specifying how it will do it. These requirements define the desired
external behavior of the software to be developed.
REQUIREMENT
"A requirement in software engineering is a documented description of a
capability, function, or constraint that a software system must satisfy or possess
to meet stakeholder needs and project objectives."
Need: Something that is essential or necessary, something one must have to fulfill
a requirement or achieve a certain purpose.
Want: Something desired or wished for, something that would bring satisfaction
or pleasure, but is not essential for survival or fulfillment of basic requirements.
Requirement Engineering
Requirements Engineering (RE) is the systematic process of development,
elicitation, specification, analysis, and management of stakeholder requirements
that need to be fulfilled by a new or evolving system.
Inception:
This activity marks the beginning of the SRE process. It involves identifying the
business need, market opportunity, or idea that triggers the development of the
system. During this phase, a business case is developed to justify the investment
in the project. Feasibility studies are conducted to assess the technical, financial,
and organizational feasibility of the project. Additionally, the system scope is
defined, along with an analysis of potential risks.
Requirements Elicitation:
Requirements Analysis:
Requirements Specification:
After the requirements are specified, they are validated to ensure that they
accurately reflect the needs and expectations of stakeholders. This activity
involves checking the requirements document for consistency, completeness, and
correctness. Reviews, inspections, and walkthroughs may be conducted to
validate the requirements.
Requirements Management:
Limitations of REP
Lack of Expertise: One limitation is the absence of the necessary expertise,
including software engineers and domain experts. Without these skilled
professionals, the requirement engineering process may suffer from incomplete
or inaccurate requirements.
Incomplete Initial Ideas: Initial ideas are often incomplete, wildly optimistic, and
firmly entrenched in the minds of those leading the acquisition process. This can
lead to unrealistic expectations and make it hard to gather accurate
requirements.
Complex Tools and Methods: Using different tools and methods for gathering
requirements can be tough. If stakeholders find them hard to use, it might
undermine(demininsh/hinder) the benefits of a thorough requirement
engineering approach.
NIST
70% of defects are introduced in the specification phase:
95% are detected later in the project or after delivery where the cost for
correction on average is 22 times higher compared to a correction directly during
the specification effort:
The majority of specification inadequacies or defects are not detected until later
stages of the project or even after the software is delivered to users. This delayed
detection significantly increases the cost of corrections, with corrections made
after delivery being, on average, 22 times more expensive than those made
during the specification phase.
Requirement Engineering (RE) involves various activities and documents to ensure
that the needs and expectations of stakeholders are accurately captured and
translated into specifications for the software system. Here are some key
activities and associated documents in the RE process:
Requirements Elicitation:
Requirements Analysis:
Documents: Requirement analysis reports, use case diagrams, data flow diagrams,
and domain models.
Requirements Specification:
Requirements Validation:
Requirements Management:
Activity: Managing changes to requirements throughout the software
development lifecycle.
Requirements Traceability:
Requirements Communication:
Requirements Documentation:
Documents: All the documents mentioned above, as well as any other artifacts
created during the RE process.
These activities and documents play a crucial role in ensuring that requirements
are effectively captured, analyzed, documented, validated, and managed
throughout the software development process. They provide a structured
approach to requirement engineering, helping to minimize misunderstandings,
errors, and discrepancies that can arise during software development.
Document
A document is a written or digital record that provides information, instructions,
or evidence about a particular subject or topic. In the context of software
development, documents serve as important artifacts that capture various
aspects of the project, such as requirements, specifications, design, and plans.
These documents help stakeholders understand the project's goals, scope, and
constraints, as well as guide the development team in implementing the project
effectively.
Types of document
Vision and Scope Document:
Description: Records the business requirements, constraints, and organizational
rules for the project.
Interface Specification:
Description: Describes the external interface between the product and its
environment, as well as internal interfaces among components. It may include the
graphical user interface (GUI) at a basic level.
Author: Typically involves input from user experience (UX) designers and
developers.
Author: Typically written by the requirements engineering team with input from
stakeholders.
TYPES OF REQUIREMENT
Requirements can be categorized into different types, including:
Defining Scope: It helps in clearly defining the scope of the project, what needs to
be delivered, and what features are essential for the software system.
PHASES OF SDLC
Plan
The planning phase typically includes tasks like cost-benefit analysis, scheduling,
resource estimation, and allocation. The development team collects requirements
from several stakeholders such as customers, internal and external experts, and
managers to create a software requirement specification document.
The document sets expectations and defines common goals that aid in project
planning. The team estimates costs, creates a schedule, and has a detailed plan to
achieve their goals.
Design
In the design phase, software engineers analyze requirements and identify the
best solutions to create the software. For example, they may consider integrating
pre-existing modules, make technology choices, and identify development tools.
They will look at how to best integrate the new software into any existing IT
infrastructure the organization may have.
Implement
In the implementation phase, the development team codes the product. They
analyze the requirements to identify smaller coding tasks they can do daily to
achieve the final result.
Test
The development team combines automation and manual testing to check the
software for bugs. Quality analysis includes testing the software for errors and
checking if it meets customer requirements. Because many teams immediately
test the code they write, the testing phase often runs parallel to the development
phase.
Deploy
When teams develop software, they code and test on a different copy of the
software than the one that the users have access to. The software that customers
use is called production, while other copies are said to be in the build
environment, or testing environment.
Having separate build and production environments ensures that customers can
continue to use the software even while it is being changed or upgraded. The
deployment phase includes several tasks to move the latest build copy to the
production environment, such as packaging, environment configuration, and
installation.
Maintain
In the maintenance phase, among other tasks, the team fixes bugs, resolves
customer issues, and manages software changes. In addition, the team monitors
overall system performance, security, and user experience to identify new ways
to improve the existing software.
Stakeholders: These are the people or groups who are interested in or affected by
the software. They could be users, customers, managers, or others involved in the
project. They share what they need and want from the software, so it meets their
expectations and solves their problems.
Documents: These are papers or files that provide information about the project.
They include things like project plans, stories about what users need, rules from
the government, and contracts with clients. These documents explain what the
software should do and how it should work.
Application Domain: This means the specific area or field where the software will
be used. For example, it could be healthcare, finance, or education. The
requirements come from what people in that area need and what rules they must
follow. This makes sure the software fits well and does what it needs to do in that
particular field.
Existing System: This refers to any software or systems that are already in place
and might be replaced or changed. By looking at what's already there and what
people like or don't like about it, we can figure out what the new software should
do. This helps make sure the new software is better and meets the needs of the
users.
The goal of software development
The goal of software development is to create high-quality software that meets
the needs and expectations of stakeholders while being delivered on time and
within budget. This means:
Ensuring that the total cost incurred over all phases of the software's life cycle is
kept minimal and within the allocated budget.
The root causes of project success and failure can vary, but there are some
common factors that tend to emerge across different projects. The following
factors influencing both success and failure:
Unrealistic Schedule or Time Frame: Setting unattainable deadlines can put undue
pressure on the project team, leading to rushed work, quality compromises, and
missed milestones.
Inadequate Technology Skills: If the project team lacks the necessary expertise to
utilize the chosen technology effectively, it can result in errors, rework, and
project setbacks.
The high cost of requirement errors, also known as defect leakage, refers to the
significant financial and operational consequences that arise from errors or
defects in the requirements phase of a software development project. These
errors can lead to expensive rework, redesign, and other corrective actions
throughout the project lifecycle. Properly understanding this concept is essential
for learning and writing purposes in the context of software engineering and
project management.
Here's a breakdown of the key points:
Unit Cost of Error Detection and Repair: Assigning a unit cost (e.g., one unit) to
the effort required to detect and repair an error during the coding stage helps
quantify the financial impact of defects at different stages of the project.
Errors "leaked" into the design phase, where requirements are misunderstood or
misinterpreted.
Errors leaked into the design phase are particularly expensive due to:
Difficulty in identifying the true nature of the error, leading to additional rework
and costs.
Research by Snyder and Shumate (1992) highlights the extent of defect leakage in
software development projects.
Some defects may not surface until the maintenance phase, constituting 4% of
requirement errors.