SE Unit I
SE Unit I
1: SOFTWARE ENGINEERING
THEORY
Total Teaching Hours: 45
Course Content
1. http://ww25.softwareengineering-9.com/
2. https://www.theforage.com/blog/careers/software-engineering-resources
What is a Software?
The software is basically a set of instructions or commands that tell a computer what to do.
In other words, the software is a computer program that provides a set of instructions to
execute a user’s commands and tell the computer what to do. For example like MS-
Word, MS-Excel, PowerPoint, etc.
Requirement gathering and analysis: Firstly, all the requirements regarding the
software are gathered from the customer and then the gathered requirements are
analyzed. The goal of the analysis part is to remove incompleteness and
inconsistencies.
Requirement specification: These analyzed requirements are documented in a
software requirement specification (SRS) document. SRS document serves as a
contract between the development team and customers. Any future dispute between
the customers and the developers can be settled by examining the SRS document.
The Spiral Model is one of the most important Software Development Life Cycle
models. The Spiral Model is a combination of the waterfall model and the iterative model.
The Spiral Model was first proposed by Barry Boehm in the year 1986-88.
Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below:
Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate
the so-far developed version of the software. In the end, planning for the next phase is
started.
The Spiral model is called a Meta-Model because it subsumes all the other SDLC
models like waterfall, iterative and protype.
Requirement gathering
Design the Requirements
Construction / Iteration
Testing / Quality Assurance
Deployment
Feedback
1. Requirement Gathering:- In this step, the development team must gather the
requirements, by interaction with the customer. development team should plan the
time and effort needed to build the project. Based on this information you can
evaluate technical and economical feasibility.
2. Design the Requirements:- In this step, the development team will use user-flow-
diagram or high-level UML diagrams to show the working of the new features and
show how they will apply to the existing software. Wireframing and designing user
interfaces are done in this phase.
3. Construction / Iteration:- In this step, development team members start working on
their project, which aims to deploy a working product.
4. Testing / Quality Assurance:- Testing involves Unit Testing, Black and white box
testing .brief introduction of these three tests is as follows:
Unit Testing:- Unit testing is the process of checking small pieces of code to ensure
that the individual parts of a program work properly on their own. Unit testing is used
to test individual blocks (units) of code.
Black Box :- In Black-box testing, a tester doesn’t have any information about the
internal working of the software system. Black box testing is a high level of testing
that focuses on the behavior of the software. It involves testing from an external or
end-user perspective.
Programming knowledge is not needed to perform Black Box testing.
Performed by the end user, developer, and tester.
White Box:- White-box testing is a testing technique which checks the internal
functioning of the system. In this method, testing is based on coverage of code
statements, branches, paths or conditions. White-Box testing is considered as low-
level testing. It is also called glass box, transparent box, clear box or code base
testing.
Programming knowledge is required to perform White Box testing.
Performed by the developer, and tester.
5. Deployment:- In this step, the development team will deploy the working project to
end users.
6. Feedback:- This is the last step of the Agile Model. In this, the team receives
feedback about the product and works on correcting bugs based on feedback provided
by the customer.
Disadvantages:-
Initial investment cost for more teams.
Risk Categorization
Risks can be categorized broadly into project risks, technical risks, business risks,
known risks, undreamt risks, predictable and unpredictable risks.
Project risks: No proper scheduling, Time line is not followed, that costs will
increase.
Technical risks: They threaten the quality of the software to be produced.
Business risks: Business risk can be further categorized into the following:
o Market risk – building an excellent product or system that no one really
wants.
o Strategic risk – building a product that no longer fits into the overall business
strategy for the company.
o Sales risk – building a product that the sales force doesn’t understand how to
sell.
o Management risk – change in people.
o Budget risk – low budget and overturn.
Process visibility: - the ability to see all the aspects of the process.
Importance
1.Improve the customer’s service
2.Optimize the resources
3.Better decision making
System procurement is the strategic process of acquiring goods and services needed
to support the development and operation of software systems. This process can be broken
down into four main steps: identify requirements, identify suppliers, evaluate proposals, and
select a supplier.
System Engineering
A System Engineer oversees the entire lifecycle of a complex system, from its initial
conception to its final deployment.
Designing and developing system architectures
Focus on the overall IT infrastructure, including hardware, software, and networks.
Testing of the entire system, including hardware, software, and other components.
Software Engineering
A Software Engineer specializes in designing, developing, testing, and maintaining
software applications. They use their programming skills to create software solutions that
solve problems and meet the needs of users. Software engineers are responsible for writing
and debugging code, designing software architectures, testing software for functionality and
performance, and collaborating with other team members.
primarily deal with the software development lifecycle and software testing and
quality assurance.
1.Data architecture
2.Application architecture
3.Technology architecture
Data architecture
It provides a frame work for the information needs and set of attributes define some
aspects , quality and characteristic etc.
Application architecture
It provides the relationship among the objects for example
2 objects we will take customer and product these objects will connect like
Customer purchases product
Technology architecture
This will provide the foundation of data and application architecture includes
computers, operating systems, networks etc..
Requirement Engineering
Requirement engineering is the process of collecting, validating and managing the
requirements essential for the development of the software, specified by the clients or the
end-users. This task is performed at the initial stages of software development.
The requirement engineering process involves a team of software developers or
engineers, business analysts, customers and end-users. Requirement engineering provides the
basic idea to the software developer of what the client or the end-user wants the software to
do.The phases of requirement engineering is classified as follows
1.The inception phase, the business requirements are identified where first the
business need is identified, the scope of the software in the market is analysed, a rough
feasibility analysis is done and the functioning of the software is discussed. Though all these
requirements are subject to change they are enough to start a conversation between business
analysts or customers or stakeholders and the software developers.
2. Requirement Elicitation
If the inception report is positive to undertake the project the next step is to gather the
requirement from the clients. This phase is the requirement elicitation phase where the
system analyst or the software developers communicate with the clients or the end-users of
the system to elicit more information.
There are many things that the software analyst come across while eliciting the
requirements such as:
3. Requirement Specification
In terms of the software, the requirement specification can be a written document, a
mathematical model, graphical models, some usage scenarios, some sort of sample model,
some sort of code etc.
4. Negotiating Requirements
Now each client associated with the same project might have different versions of
requirements and they think that their aspect is more useful to develop software. Observing
the conflicting requirements, the software engineer has to reconcile and negotiate the facts
with the clients and end-users.
Negotiation is an iterative process where each client is asked to rank the requirement
in terms of priority. Parallelly the software engineer also assesses the cost associated with the
project, risk factors.
While addressing the conflicting requirements they may eliminate, add, combine or
modify the conflicting requirements so that each client sense some sort of satisfaction that
their requirements are essential for the development of the software.
5. Requirement Validation
Whatever is gathered, understood during the process of the requirement of
engineering must be validated to ensure that all the software requirements are specified. The
software developer or engineer must also ensure that the requirements are unambiguous,
correct, consistent, essential.
The requirement validation phase requires the presence of all like software
developers, clients, end-users and stakeholders. The specified requirements are checked
thoroughly for any missing, redundant, inconsistent information.
6. Requirement Management
Requirements of any software keep on changing and the business and technical
change throughout the life of the software. Requirement management is subject to keep track
of the requirements and the changes that occur during the development of the software.
So, these are the steps or tasks that must be performed in the requirement engineering
process. The efficient requirement engineering promises that developed software satisfies
each requirement specified and up to the standards.
The Figure shows requirements document has a diverse set of users, ranging from the
customer to management of the organization that is paying for the system to the engineers
responsible for developing the software.
Context Model serve as a foundational tool, helping designers and stakeholders grasp the
scope and boundaries of a system under consideration. These diagrams provide a high-level
view, illustrating how the system interacts with external entities and the environment.
Data Flow
These are arrows representing the flow of data or information between the system and
external entities. They illustrate the exchange of data between the system and its
environment.
1. Unidirectional Data Flow
Unidirectional data flow indicates that data moves in only one direction between two
components.
2.Bidirectional Data Flow
Bidirectional data flow indicates that data can move in both directions between two
components.
Object models
A model of a software system that is structured and organized as a set of object
classes and the relationships between these classes.
Functional and Non-Functional Requirements: -
Functional Non-functional
Describes what the system do How the system performs
Mandatory Not mandatory
Provide by user By developer
Test before non functional requirements After functional requirements
Verify the identity of the user Scalability and usability