Software Engineering Notes Unit-1
Software Engineering Notes Unit-1
Unit-1
INTRODUCTION:
SOFTWARE-
Software is a set of instructions that are written in a programming language and
executed on a computer or other electronic device. It is a collection of programs,
data, and instructions that tell a computer or other electronic device what to do.
Software can be broadly categorized into two main types: system software and
application software.
1. System software: This type of software is responsible for managing and controlling
the hardware and other system resources of a computer or other electronic device.
Examples of system software include operating systems, device drivers, firmware,
and utility programs.
2. Application software: This type of software is designed to perform specific tasks or
functions for end-users. Examples of application software include word processors,
spreadsheet programs, web browsers, video editing software, and gaming
applications.
Goals:
1. Meeting user needs: The primary goal of software development is to create software
that meets the needs of the users.
2. Quality: Software should be reliable, efficient, maintainable, and scalable.
3. Timeliness: Software should be delivered on time, meeting the project's schedule.
4. Cost-effectiveness: Software development should be cost-effective and efficient.
5. Security: Software should be designed to be secure and protect sensitive data.
Principles:
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic, disciplined
approach. For preventing software crises, there are some guidelines:
● Reduction in software over budget.
● The quality of software must be high.
● Less time is needed for a software project.
● Experienced and skilled people working over the software project.
● Software must be delivered.
● Software must meet user requirements.
Here are some of the key milestones and changes in the evolution of software
engineering:
1. Early development (1940s-1950s): The earliest software was developed for specific
applications, such as scientific calculations and military uses.
2. Structured programming (1960s-1970s): Structured programming emerged as a way
to make software development more organized and efficient.
3. Object-oriented programming (1980s-1990s): Object-oriented programming
introduced the concept of objects and classes.
4. Agile development (2000s-present): Agile development methodologies, such as
Scrum and Extreme Programming, emerged as a way to make software
development more flexible.
5. DevOps (2010s-present): DevOps emerged as a way to improve collaboration
between development and operations teams.
6. Cloud computing (2010s-present): Cloud computing has transformed the way
software is deployed and maintained, with many applications now hosted in the
cloud and accessed via the internet.
7. Artificial intelligence and machine learning (2010s-present)
Software characteristics: Characteristics of Software are classified into six
major components:
● Usability: It is the extent to which the software can be utilized with ease and
the amount of effort or time required to learn how to use the software.
● Maintainability: It is the ease with which the modifications can be made in a
software to extend or enhance its functionality, improve its performance, or
resolve bugs.
WATERFALL MODEL- the Waterfall Model was the first Process Model to be
introduced. It is also referred to as a linear-sequential life cycle model. The
Waterfall model is the earliest SDLC approach that was used for software
development.
The waterfall Model illustrates the software development process in a linear
sequential flow. This means that any phase in the development process begins only
if the previous phase is complete. In this waterfall model, the phases do not overlap.
Waterfall Model - Design In "The Waterfall" approach, the whole process of
software development is divided into separate phases. In this Waterfall model,
typically, the outcome of one phase acts as the input for the next phase sequentially.
1. Requirements gathering and analysis: In this phase, the requirements for the
software project are defined and documented.
2. Design: In this phase, the system architecture and the software design are
developed based on the requirements.
3. Implementation: In this phase, the software is developed based on the design
specifications.
4. Testing: In this phase, the software is tested to ensure that it meets the
requirements and is free from bugs and errors.
5. Deployment: In this phase, the software is released and deployed to the users.
6. Maintenance: In this phase, the software is maintained and updated as needed.
Advantages of the waterfall model:
1. Clear and well-defined development process: The waterfall model provides a
clear and well-defined development process, making it easy for developers to
understand what needs to be done at each stage.
2. Easy to manage: The linear nature of the waterfall model makes it easy to manage
and track progress. Project managers can easily determine which stage of
development is complete and which stage is next.
3. Easy to estimate project timelines: Because the requirements and scope of the
project are well-defined at the beginning of the development process, it is easy to
estimate project timelines and costs.
4. Good documentation: The waterfall model requires documentation at each stage of
the development process, which can be useful for future reference and maintenance.
1. Not flexible: The waterfall model is not well-suited for projects with changing or
unclear requirements. Once a stage is complete, it is difficult to go back and make
changes.
2. High risk: The waterfall model is a high-risk approach, as any issues or problems
that arise in the later stages of development may require significant changes to
previous stages, which can be costly and time-consuming.
3. Long development time: The waterfall model can be a slow and time-consuming
process, as each stage must be completed before moving on to the next.
4. Customer involvement is limited: The customer's involvement in the development
process is limited, as the requirements are defined at the beginning of the process
and changes are difficult to accommodate. This can lead to a product that does not
fully meet the customer's needs
APPLICATIONS-
Some Circumstances where the use of the Waterfall model is most suited are:
o When the requirements are constant and not changed regularly.
o A project is short
o The situation is calm
o Where the tools and technology used is consistent and is not changing
o When resources are well prepared and are available to use.
o Another difference between the Waterfall model and the Advanced Waterfall
Model is that the Advanced Waterfall Model includes additional stages, such
as the feedback and maintenance stages, that are not present in the
traditional Waterfall model.
The Spiral Model involves a series of iterations that follow a spiral pattern, with each
iteration consisting of four stages:
1. Planning: The project's goals and objectives are defined in the planning stage. Risks
are identified, and the project is evaluated in terms of cost, schedule, and feasibility.
2. Risk analysis: In this stage, potential risks are identified, and strategies are
developed to mitigate or manage them.
3. Engineering: This stage involves the actual development and testing of the
software. It includes requirements gathering, design, coding, testing, and integration.
4. Evaluation: At the end of each iteration, the software is evaluated to ensure that it
meets the project's goals and objectives.
1. Risk management: The Spiral Model emphasizes risk management, which helps to
identify and mitigate risks early in the project, reducing the likelihood of delays or
failures.
2. Flexibility: The Spiral Model is more flexible than the Waterfall Model, allowing for
changes and adjustments to be made throughout the development process.
3. Incremental development: The Spiral Model supports incremental development,
allowing for the delivery of working software at the end of each iteration.
4. Early feedback: The Spiral Model provides opportunities for early feedback from
stakeholders, enabling adjustments to be made before the software is complete.
1. Complexity: The Spiral Model can be more complex than other development
models, requiring more resources and expertise.
2. Cost: The Spiral Model can be more expensive than other development models,
particularly if multiple iterations are required.
3. Time-consuming: The Spiral Model can be time-consuming, with each iteration
requiring significant planning and analysis.
4. Not suitable for small projects: The Spiral Model is not suitable for small projects
1. Requirements gathering: The project requirements are identified, and the software
functionality is broken down into smaller parts.
2. Design: Each increment is designed, with the overall architecture of the software
taken into consideration.
3. Implementation: Each increment is developed and tested, with the focus on
delivering working software at the end of each increment.
4. Testing: The software is tested after each increment, with the focus on ensuring that
the software is functioning as intended.
5. Deployment: The software is deployed after all increments have been completed
and tested.
1. Early feedback: The Incremental Model provides opportunities for early feedback
from stakeholders, enabling adjustments to be made before the software is
complete.
2. Reduced risk: The Incremental Model reduces risk by delivering working software at
the end of each increment, allowing for early identification and mitigation of issues.
3. Flexibility: The Incremental Model is flexible, allowing for changes and adjustments
to be made throughout the development process.
4. Faster time to market: The Incremental Model enables faster time to market by
delivering working software at the end of each increment.
Evolutionary model suggests breaking down of work into smaller chunks, prioritizing
them and then delivering those chunks to the customer one by one. The number of
chunks is huge and is the number of deliveries made to the customer. The main
advantage is that the customer’s confidence increases as he constantly gets
quantifiable goods or services from the beginning of the project to verify and validate
his requirements. The model allows for changing requirements as well as all work in
broken down into maintainable work chunks. Application of Evolutionary Model:
1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants
to start using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because
the system can be easily portioned into units in terms of objects.
Necessary conditions for implementing this model:-
● Customer needs are clear and been explained in deep to the developer team.
● There might be small changes required in separate parts but not a major change.
● As it requires time, so there must be some time left for the market constraints.
● Risk is high and continuous targets to achieve and report to customer repeatedly.
● It is used when working on a technology is new and requires time to learn.
Advantages:
● In evolutionary model, a user gets a chance to experiment partially developed
system.
● It reduces the error because the core modules get tested thoroughly.
Disadvantages:
● Sometimes it is hard to divide the problem into several versions that would be
acceptable to the customer which can be incrementally implemented and
delivered.
1. Inception: The project is initiated, and the requirements are identified. The feasibility
of the project is assessed, and a rough plan for the project is developed.
2. Elaboration: The requirements are refined, and a more detailed plan for the project
is developed. The architecture of the software is designed, and a prototype is
developed to demonstrate the key features of the software.
3. Construction: The software is developed through a series of iterations, with each
iteration building on the previous one. The focus is on developing and delivering
working software.
4. Transition: The software is deployed, and any issues are addressed. The focus is
on ensuring that the software meets the needs of the stakeholders.
1. Use-case driven: The development process is driven by the needs of the
stakeholders, which are expressed in the form of use cases.
2. Architecture-centric: The architecture of the software is designed early in the
development process, and the development process is focused on implementing the
architecture.
3. Iterative and incremental: The software is developed through a series of iterations,
with each iteration building on the previous one.
4. Risk-focused: The development process is focused on identifying and mitigating
risks throughout the development process.
Advantages of the Unified Process:
1. Flexibility: The UP is flexible and can be tailored to meet the needs of the project.
2. Risk management: The UP includes a focus on risk management, which can help
to reduce the risk of project failure.
3. Early delivery: The UP focuses on delivering working software early in the
development process, which can provide early value to the stakeholders.
4. Collaboration: The UP promotes collaboration between stakeholders, which can
lead to better communication and a better understanding of the project goals.
1. Complexity: The UP can be more complex than other development frameworks,
requiring more resources and expertise.
2. Documentation: The UP requires a significant amount of documentation, which can
be time-consuming.
3. Cost: The UP can be more expensive than other development frameworks, due to
the resources required for documentation and the iterative development process.
Here are some general guidelines for selecting a life cycle model:
1. Waterfall model: The waterfall model is best suited for projects with well-defined and
stable requirements, where the final product is expected to be delivered in a single
release. This model is less suitable for complex projects where requirements are
likely to change during the development process.
2. Iterative models: Iterative models such as the Incremental model, the Evolutionary
model, or the Unified Process are best suited for projects where the requirements
are not fully understood or are likely to change during the development process.
These models allow for flexibility and can accommodate changes as they arise...
3. Spiral model: The Spiral model is best suited for large, complex, and mission-critical
projects where risk management is a top priority. This model allows for risk analysis
and mitigation throughout the development process.
4. Prototype model: The Prototype model is best suited for projects where the
requirements are not well understood or are likely to change frequently. This model
allows for rapid prototyping and feedback from the customer, enabling adjustments
to be made before the final product is delivered.
Software requirements
Software requirements refer to the description of what a software system should do
and how it should behave. Requirements help to define the scope of the software
project and provide a basis for the software design and development process.
There are several types of software requirements, including:
1. Functional requirements: These describe the specific features and functions that
the software should perform.
2. Non-functional requirements: These describe the quality attributes of the software,
such as usability, performance, security, and reliability.
3. User requirements: These describe the needs and expectations of the end-users of
the software.
4. Business requirements: These describe the goals and objectives of the software
project and how it aligns with the overall business strategy.
5. System requirements: These describe the hardware and software environments in
which the software will run.
6. Design requirements: These describe the specific design constraints and
considerations that need to be taken into account during the development process.
The process of defining software requirements typically involves the following steps:
1. Requirements gathering: This involves gathering information about the user needs
and system requirements through interviews, surveys, and other techniques.
2. Requirements analysis: This involves analyzing the requirements to ensure that
they are complete, consistent, and feasible.
3. Requirements specification: This involves documenting the requirements in a clear
and concise manner, using a variety of techniques such as use cases, user stories,
and requirement documents.
4. Requirements validation: This involves reviewing and testing the requirements to
ensure that they are accurate, complete, and meet the needs of the users.
Analysis specification
Analysis specification is the process of creating a detailed description of the
functional and non-functional requirements for a software system. It involves
breaking down the requirements into smaller, more manageable components that
can be more easily understood and implemented by software developers.
1. Requirements gathering: This involves identifying the needs and goals of the
software system, and documenting them in a clear and concise manner.
2. Requirements analysis: This involves reviewing and refining the requirements to
ensure that they are complete, consistent, and feasible. During this step, the analyst
may use various techniques such as data flow diagrams, use cases, and business
process models to help define the requirements.
3. Requirements specification: This involves documenting the requirements in a
detailed and precise manner, using a variety of techniques such as functional and
non-functional specifications, data models, and user interface mockups.
4. Requirements validation: This involves reviewing and testing the requirements to
ensure that they are accurate, complete, and meet the needs of the users and
stakeholders.
REQUIREMENT ENGINEERING
Requirement engineering is the process of eliciting, analyzing, documenting,
validating, and managing the requirements for a software system. It involves
identifying the needs and goals of the system, and defining the features and
functions that are required to meet those needs.
1. Data sources: These are the sources of data that enter the system, such as
customers, suppliers, or other systems.
2. Data stores: These are the locations where data is stored within the system, such as
a database or file.
3. Processes: These are the activities that transform the data within the system, such
as calculations, validations, or updates.
4. Data flows: These are the arrows that represent the movement of data between the
various components of the system.
There are four levels of data flow diagrams, each providing a greater level of
detail:
1. Level 0: This is the highest level of DFD, which shows the overall system and its
main processes.
2. Level 1: This level breaks down the processes into sub-processes and shows the
data flows between them.
3. Level 2: This level provides more detail on the sub-processes of level 1 and shows
the data flows within them.
4. Level 3: This is the most detailed level of DFD, which shows the specific data flows
and processes within a sub-process.
Data flow diagrams are an effective way to communicate the flow of data within a
system and to identify areas where improvements can be made. They help to
visualize the system and make it easier to understand, analyze, and communicate to
stakeholders.
1. Data element name: The name of the data element or attribute.
2. Data element description: A brief description of the data element or attribute,
including its purpose, meaning, and characteristics.
3. Data type: The type of data that the element represents, such as text, number, or
date.
4. Valid values: The range of values that are allowed for the data element.
5. Data source: The origin of the data element, such as a specific table or file.
6. Relationship to other data elements: Information on how the data element is
related to other elements in the system, such as through a foreign key relationship.
7. Constraints: Any rules or constraints that apply to the data element, such as
maximum length or required fields.
The Notations used within the data dictionary are given in the table below as follows:
Notations Meaning
ER DIAGRAM-
An entity-relationship diagram (ERD) is a type of data modelling technique used to
represent the entities, attributes, and relationships involved in a system or
organization. ER diagrams are often used in software engineering and database
design to help visualize and organize the data that will be stored in a database.
An ERD consists of several components, including:
1. Entities: These are the objects or concepts in the system that are relevant to
the data being modeled. For example, in a university system, entities might
include students, courses, professors, and departments.
2. Attributes: These are the characteristics or properties of the entities. For
example, attributes of a student might include name, student ID, major, and
GPA.
TYPES OF ATTRIBUTES:
1. Key attribute: Key is an attribute or collection of attributes that uniquely
identifies an entity among the entity set. For example, the roll_number of a
student makes him identifiable among students.
1. Super key: A set of attributes that collectively identifies an entity in the entity
set.
2. Candidate key: A minimal super key is known as a candidate key. An entity
set may have more than one candidate key.
3. Primary key: A primary key is one of the candidate keys chosen by the
database designer to uniquely identify the entity set.
DECISION TABLE-
A decision table is a tabular representation of the conditions and actions that make
up a decision-making process. It is a structured approach to solving complex
problems or making important decisions based on a set of rules or criteria.
In a decision table, the columns represent the conditions or inputs that are used to
make the decision, and the rows represent the possible combinations of these
conditions. The table also includes the actions or outputs that are taken based on the
combination of conditions.
Each cell in the table represents a specific combination of conditions and actions.
The conditions may be either true or false, and the actions may be either taken or
not taken based on the condition
S.
No. Decision Table Decision Tree
It is used when there are small It is used when there are more number
5. number of properties. of properties.
S.
No. Decision Table Decision Tree
6. It is used for simple logic only. It can be used for complex logic as well.
Modules at top level called modules at low level. Components are read from top to
bottom and left to right. When a module calls another, it views the called module as
black box, passing required parameters and receiving results.
1. Module
It represents the process or task of the system. It is of three types.
o Control Module
A control module branches to more than one sub module.
o Sub Module
Sub Module is a module which is the part (Child) of another module.
o Library Module
Library Module are reusable and invokable from any module.
2. Conditional Call
It represents that control module can select any of the sub module on the
basis of some condition.
All the sub modules cover by the loop repeat execution of module.
Requirement validation, on the other hand, involves the process of ensuring that the
requirements are correct, complete, and consistent. This process involves reviewing
the requirements documentation to identify potential errors, ambiguities, or
contradictions, and ensuring that the requirements are feasible and achievable within
the constraints of the project.
VALIDATION VS VERIFICATION
Verification Validation
It can find the bugs in the early stage It can only find the bugs that could not
of the development. be found by the verification process.
It consists of checking of
documents/files and is performed by It consists of execution of program and
human. is performed by computer.