0% found this document useful (0 votes)
41 views16 pages

Software Engineering

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views16 pages

Software Engineering

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Software engineering 1

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.

Layered technology is divided


into four parts:
1. A quality focus: It defines
the continuous process
improvement principles of
software. It provides integrity
that means providing security
to the software so that data
can be accessed by only an
authorized person, no outsider can access the data. It also focuses on
maintainability and usability.
2. Process: It is the foundation or base layer of software engineering. It is key that
binds all the layers together which enables the development of software before the
deadline or on time. Process defines a framework that must be established for the
effective delivery of software engineering technology. The software process covers
all the activities, actions, and tasks required to be carried out for software
development.

Process activities are listed below: -


Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.
Software engineering 2

Planning: It basically means drawing a map to reduce the complication of


development.
Modeling: In this process, a model is created according to the client for better
understanding.
Construction: It includes the coding and testing of the problem.
Deployment: - It includes the delivery of software to the client for evaluation and
feedback.
3. Method: During the process of software development the answers to all “how-
to-do” questions are given by method. It has the information of all the tasks which
includes communication, requirement analysis, design modeling, program
construction, testing, and support.
4. Tools: Software engineering tools provide a self-operating system for processes
and methods. Tools are integrated, which means information created by one tool
can be used by another.
Q2. List the characteristic of software
Good software is characterized by several key attributes, including:
Functionality: The software meets the requirements and specifications
that it was designed for, and it behaves as expected when it is used in its
intended environment.
Usability: The software is easy to use and understand, and it provides a
positive user experience.
Reliability: The software is free of defects and it performs consistently
and accurately under different conditions and scenarios.
Performance: The software runs efficiently and quickly, and it can
handle large amounts of data or traffic.
Security: The software is protected against unauthorized access and it
keeps the data and functions safe from malicious attacks.
Software engineering 3

Maintainability: The software is easy to change and update, and it is


well-documented, so that it can be understood and modified by other
developers.
Reusability: The software can be reused in other projects or applications,
and it is designed in a way that promotes code reuse.
Scalability: The software can handle an increasing workload and it can
be easily extended to meet the changing requirements.
Testability: The software is designed in a way that makes it easy to test
and validate, and it has comprehensive test coverage.
By adhering to these characteristics, software engineers can develop
software that is functional, reliable, and maintainable, thus providing the
best experience to the end-users.
Q3. Difference Between Generic Products and Customized Products
S.No. Generic software product Custom software development
development
1. The generic software Customer software
development is done for development is done to
developing general-purpose develop a software product as
software. per the needs of particular
customer.
2. In this development process, In this development process,
the software developers have to the end-user requirements can
depict the end-user's be aggregated by
specifications. communicating by them.
3. From designing and marketing This development does not
perspective, this type of require marketing, because it
development is very difficult. is developed for appropriate
group of users
4. Large number of users may be This type of software is used
using this kind of software. by limited number of users.
5. Quality of the product is not a Quality is the main criterion in
Software engineering 4

preference for generic software. customer software product.


Best quality of the product is
focused for customer or
company.
6. Development team controls the Customer determines the
process of generic software process of software
development. development in this type of
product.
7. Generally, the software Software product is of high
developed is economical. There cost as the particular product
may be some hidden costs such for customer is developed.
as installation and
implementation cost.
8. Example of generic software Inventory control and
product development is Word- management system are
editing software. examples of customer
software development.

Q4. Write a Short note on SDLC


A software life cycle model (also termed process model) is a pictorial
and diagrammatic representation of the software life cycle. A life cycle
model represents all the methods required to make a software product
transit through its life cycle stages. It also captures the structure in which
these methods are to be undertaken.
In other words, a life cycle model maps the various activities performed
on a software product from its inception to retirement. Different life
cycle models may plan the necessary development activities to phases in
different ways. Thus, no element which life cycle model is followed; the
essential activities are contained in all life cycle models though the
action may be carried out in distinct orders in different life cycle models.
During any life cycle stage, more than one activity may also be carried
out.
Software engineering 5

SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC
framework includes the following steps:

The stages of SDLC are as follows:


Stage1: Planning and requirement analysis
Requirement Analysis is the most important and necessary stage in SDLC.
The senior members of the team perform it with inputs from all the stakeholders
and domain experts or SMEs in the industry.
Planning for the quality assurance requirements and identifications of the risks
associated with the projects is also done at this stage.
For Example, A client wants to have an application which concerns money
transactions. In this method, the requirement has to be precise like what kind of
operations will be done, how it will be done, in which currency it will be done, etc.
Software engineering 6

Stage2: Defining Requirements


Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project
stakeholders.
This is accomplished through "SRS"- Software Requirement Specification
document which contains all the product requirements to be constructed and
developed during the project life cycle.

Stage3: Designing the Software


The next phase is about to bring down all the knowledge of requirements, analysis,
and design of the software project. This phase is the product of the last two, like
inputs from the customer and requirement gathering.
Stage4: Developing the project
In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code. Developers
must follow the coding guidelines described by their management and
programming tools like compilers, interpreters, debuggers, etc. are used to develop
and implement the code.
Stage5: Testing
After the code is generated, it is tested against the requirements to make sure that
the products are solving the needs addressed and gathered during the requirements
stage.
During this stage, unit testing, integration testing, system testing, acceptance
testing are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is deployed.
Then based on the assessment, the software may be released as it is or with
suggested enhancement in the object segment.
After the software is deployed, then its maintenance begins.
Stage7: Maintenance
Software engineering 7

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

Design requirements: These requirements describe the technical design of the


software system. They include information about the software architecture, data
structures, algorithms, and other technical aspects of the software.
Q6. Explain the various phases of the waterfall model.
Phase I: Requirements
The first phase involves understanding what you need to design and what is its
function, purpose etc. Unless you know what you want to design, you cannot
proceed with the project. Even a small code such as adding two integer numbers,
needs to be written with the output in mind. Here, in this stage, the requirements
which the software is going to satisfy are listed and detailed. These requirements
are then presented to the team of programmers. If this phase is completed
successfully, it ensures a smooth working of the remaining phases, as the
programmer is not burdened to make changes at later stages because of changes in
requirements.
Phase II: Analysis
As per the requirements, the software and hardware needed for the proper
completion of the project is analyzed in this phase. Right from deciding which
computer language should be used for designing the software, to the database
system that can be used for the smooth functioning of the software, such features
are decided at this stage
Phase III: Design
The algorithm or flowchart of the program or the software code to be written in the
next stage, is created now. It is a very important stage, which relies on the previous
two stages for its proper implementation. The proper design at this stage ensures
execution in the next stage. If during the design phase, it is noticed that there are
some more requirements for designing the code, the analysis phase is revisited and
the design phase is carried out according to the new set of resources.
Phase IV: Coding
Based on the algorithm or flowchart designed, the actual coding of the software is
carried out. This is the stage where the idea and flowchart of the application is
physically created or materialized. A proper execution of the previous stages
ensures a smooth and easier implementation of this stage.
Software engineering 11

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

Each cycle in the spiral is divided into four parts:


Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets,
and the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in
this stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice is
made whether to continue with a further period of the spiral. If it is determined to
keep, plans are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if
performance or user-interface risks are treated as more essential than the program
development risks, the next phase may be an evolutionary development that
includes developing a more detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture
of a specification-oriented, prototype-oriented, simulation-oriented, or another type
Software engineering 13

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

Q8. Write a note on Agile methodology


Agile methodology is a project management framework that breaks projects down
into several dynamic phases, commonly known as sprints. The Agile framework is
an iterative methodology that allows teams to adapt to changing requirements and
deliver working software frequently. Agile methodology is based on four values
and 12 principles outlined in the Agile Manifesto, a document published in 2001
by 17 software developers who wanted a better alternative to the traditional
waterfall model.
Some of the benefits of using Agile methodology are:
Customer satisfaction by delivering valuable software early and often
Team collaboration and empowerment by involving all the stakeholders in the
project
Continuous improvement by reflecting and learning from each sprint
Flexibility and responsiveness by embracing change and feedback
Some of the common frameworks of Agile methodology are:
Scrum: A framework that organizes the project into fixed-length sprints, each with
a set of user stories, a daily stand-up meeting, a sprint review, and a sprint
retrospective. The Scrum team consists of a product owner, a scrum master, and a
cross-functional team of developers and testers.
Kanban: A framework that visualizes the workflow of the project using a board
with columns representing different stages of the process. The Kanban team limits
the number of work items in each column to avoid bottlenecks and improve
efficiency. The Kanban team also implements the pull system, where work items
are pulled from one column to the next when there is available capacity.
Extreme Programming (XP): A framework that focuses on delivering high-quality
software by following a set of practices such as test-driven development, pair
programming, code reviews, continuous integration, and frequent releases. The XP
team works closely with the customer and follows the values of communication,
simplicity, feedback, courage, and respect.

OR
Software engineering 16

Agile Programming Model of Software Development The roots of the concept of


agile development can be traced back to at least as far as the “Skunk Works”
efforts to engineer projects at the company now known as Lockheed Martin. (A
Wikipedia article accessed May 5, 2015, states that the term Skunk Works “is an
official alias for Lockheed Martin’s Advanced Development Programs [ADP],
formerly called Lockheed Advanced Development Projects.”) Skunk Works came
to the fore by the The early 1940s, during World War II. The term is still used to
describe both highly autonomous teams and their projects, which are usually
highly advanced. Many of the Skunk Works projects made use of existing
technologies, a forerunner for component-based software development, with the
efficient use of existing software components that can be as large as entire
subsystems.
The principles of what is now known as agile programming are best described by
the “Agile Manifesto,” which can be found at
http://agilemanifesto.org/principles.html and whose basic principles are listed here
for convenience.

You might also like