Software Engineering
Software Engineering
Software Engineering
Unit 1
Q1. Draw the neat and labelled diagram of Software Engineering layered
technology?
Software engineering is a fully layered technology, to develop software we need to
go from one layer to another. All the layers are connected, and each layer demands
the fulfillment of the previous layer.
SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC
framework includes the following steps:
Once the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known as
maintenance.
Q5. What are the different types of requirements?
Main types of software requirement can be of 3 types:
Functional requirements
Non-functional requirements
Domain requirements
Functional Requirements: These are the requirements that the end user specifically
demands as basic facilities that the system should offer. It can be calculation, data
manipulation, business process, user interaction, or any other specific functionality
which defines what function a system is likely to perform. All these functionalities
need to be necessarily incorporated into the system as a part of the contract. These
are represented or stated in the form of input to be given to the system, the
operation performed and the output expected. They are basically the requirements
stated by the user which one can see directly in the final product, unlike the non-
functional requirements. For example, in a hospital management system, a doctor
Software engineering 8
should be able to retrieve the information of his patients. Each high-level functional
requirement may involve several interactions or dialogues between the system and
the outside world. In order to accurately describe the functional requirements, all
scenarios must be enumerated. There are many ways of expressing functional
requirements e.g., natural language, a structured or formatted language with no
rigorous syntax and formal specification language with proper syntax. Functional
Requirements in Software Engineering are also called Functional Specification.
Non-functional requirements: These are basically the quality constraints that the
system must satisfy according to the project contract. Nonfunctional requirements,
not related to the system functionality, rather define how the system should
perform the priority or extent to which these factors are implemented varies from
one project to other. They are also called non-behavioral requirements. They
basically deal with issues like:
Portability
Security
Maintainability
Reliability
Scalability
Performance
Reusability
Flexibility
NFR’s are classified into following types:
Interface constraints
Performance constraints: response time, security, storage space, etc.
Operating constraints
Life cycle constraints: maintainability, portability, etc.
Economic constraints
The process of specifying non-functional requirements requires the knowledge of
the functionality of the system, as well as the knowledge of the context within
which the system will operate.
Software engineering 9
They are divided into two main categories: Execution qualities like security and
usability, which are observable at run time. Evolution qualities like testability,
maintainability, extensibility, and scalability that are embodied in the static
structure of the software system.
Domain requirements: Domain requirements are the requirements which are
characteristic of a particular category or domain of projects. Domain requirements
can be functional or nonfunctional. Domain requirements engineering is a
continuous process of proactively defining the requirements for all foreseeable
applications to be developed in the software product line. The basic functions that a
system of a specific domain must necessarily exhibit come under this category. For
instance, in an academic software that maintains records of a school or college, the
functionality of being able to access the list of faculty and list of students of each
grade is a domain requirement. These requirements are therefore identified from
that domain model and are not user specific.
Other common classifications of software requirements can be:
User requirements: These requirements describe what the end-user wants from the
software system. User requirements are usually expressed in natural language and
are typically gathered through interviews, surveys, or user feedback.
System requirements: These requirements specify the technical characteristics of
the software system, such as its architecture, hardware requirements, software
components, and interfaces. System requirements are typically expressed in
technical terms and are often used as a basis for system design.
Business requirements: These requirements describe the business goals and
objectives that the software system is expected to achieve. Business requirements
are usually expressed in terms of revenue, market share, customer satisfaction, or
other business metrics.
Regulatory requirements: These requirements specify the legal or regulatory
standards that the software system must meet. Regulatory requirements may
include data privacy, security, accessibility, or other legal compliance
requirements.
Interface requirements: These requirements specify the interactions between the
software system and external systems or components, such as databases, web
services, or other software applications.
Software engineering 10
Phase V: Testing
With the coding of the application complete, the testing of the written code now
comes into scene. Testing checks if there are any flaws in the designed software
and if the software has been designed as per the listed specifications. A proper
execution of this stage ensures that the client interested in the software created will
be satisfied with the finished product. If there are any flaws, the software
development process must step back to the design phase. In the design phase,
changes are implemented and then the succeeding stages of coding and testing are
again carried out.
Phase VI: Acceptance
This is the last stage of the software development in the waterfall model. A proper
execution of all the preceding stages ensures an application as per the provided
requirements and most importantly, it ensures a satisfied client. However, at this
stage, you may need to provide the client with some support regarding the software
you have developed. If the client demands further enhancements to be made to the
existing software, then the development process must begin anew, right from the
first phase, i.e., requirements.
Q7. Write a Short note on spiral model
The spiral model, initially proposed by Boehm, is an evolutionary software process
model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model. It implements the potential for
rapid development of new versions of the software. Using the spiral model, the
software is developed in a series of incremental releases. During the early
iterations, the additional release may be a paper model or prototype. During later
iterations, more and more complete versions of the engineered system are
produced.
The Spiral Model is shown in fig:
Software engineering 12
of approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well
as enhancement projects.
Advantages
High amount of risk analysis
Useful for large and mission-critical projects.
Disadvantages
It can be a costly model to use.
Risk analysis needed highly particular expertise
It doesn't work well for smaller projects.
OR
Another iterative software development life cycle is the spiral model developed by
Barry Boehm (Boehm, 1988). The spiral model differs from the rapid prototyping
model primarily in the explicit emphasis on the assessment of software risk for
each prototype during the evaluation period.
The term risk is used to describe the potential for disaster in the software project.
Note that this model is almost never applied to projects for which there is no
known customer. Clearly, there are several levels of disasters, and different
organizations and projects may view identical situations differently. Examples of
commonly occurring disastrous situations in software development projects
Software engineering 14
include the following: • The software development team is not able to produce the
software within the allotted budget and schedule. • The software development team
is able to produce the software and is either over budget or schedule but within an
allowable overrun (this may not always be disastrous). • The software development
team is not able to produce the software within anything resembling the allotted
budget. • After the considerable expenditure of time and resources, the software
development The team has determined that the software cannot be built to meet the
presumed requirements at any cost.
Planning is also part of the iterative process used in the spiral development model.
The classical waterfall and rapid prototyping software development models, a
milestone chart can be used for the spiral development process. rapid prototyping
and spiral models are classified as iterative because there are several instances of
intermediate software that can be evaluated before a final product is Produced.
Software engineering 15
OR
Software engineering 16