0% found this document useful (0 votes)
12 views41 pages

1 Sen

Software engineering is the discipline of developing software products using scientific principles and methods, resulting in efficient and reliable software. The role of software has evolved to serve as both a product and a means of delivering information, with various types including system, real-time, embedded, business, personal computer, artificial intelligence, and web-based software. The document also discusses software myths, the need for software engineering, layered technology, and various development models such as Waterfall, Incremental, Prototyping, and Agile methodologies.

Uploaded by

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

1 Sen

Software engineering is the discipline of developing software products using scientific principles and methods, resulting in efficient and reliable software. The role of software has evolved to serve as both a product and a means of delivering information, with various types including system, real-time, embedded, business, personal computer, artificial intelligence, and web-based software. The document also discusses software myths, the need for software engineering, layered technology, and various development models such as Waterfall, Incremental, Prototyping, and Agile methodologies.

Uploaded by

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

1

Unit – 1
[Introduction to Software Engineering]

1.Software Engineering :

The term is made of two words, software and engineering.

Software is more than just a program code. A program is an executable


code, which serves some computational purpose. Software is considered
to be collection of executable programming code, associated libraries and
documentations. Software, when made for a specific requirement is
called software product.

Engineering on the other hand, is all about developing products, using


well-defined, scientific principles and methods.

Software engineering is an engineering branch associated with


development of software product using well-defined scientific principles,
methods and procedures. The outcome of software engineering is an
efficient and reliable software product.
2

THE EVOLVING ROLE OF SOFTWARE

Today, software takes on a dual role. It is a product and, at the


same time, the vehicle for delivering a product. As a product, it
delivers the computing potential embodied by computer hardware
or, more broadly, a network of computers that are accessible by
local hardware.

Whether it resides within a cellular phone or operates inside a


mainframe computer, software is an information transformer—
producing, managing, acquiring, modifying, displaying, or
transmitting information that can be as simple as a single bit or as
complex as a multimedia presentation. As the vehicle used to
deliver the product, software acts as the basis for the control of the
computer (operating systems), the communication of information
(networks), and the creation and control of other programs
(software tools and environments). Software delivers the most
important product of our time—information.
Software transforms personal data (e.g., an individual’s financial
transactions) so that the data can be more useful in a local context;
it manages business information to enhance competitiveness; it
provides a gateway to worldwide information networks (e.g.,
Internet) and provides the means for acquiring information in all of
its forms.
The role of computer software has undergone significant change
over a time span of little more than 50 years. Dramatic
improvements in hardware performance, profound changes in
computing architectures, vast increases in memory and storage
capacity, and a wide variety of exotic input and output options
have all precipitated more sophisticated and complex computer-
based systems.
3

1)Why does it take so long to get software finished?


2)Why are development costs so high?
3)Why can't we find all the errors before we give the software to
customers?
4)Why do we continue to have difficulty in measuring
progress as software is being developed?
Changing Nature of Software :

The nature of software has changed a lot over the years.


1. System software: Infrastructure software come under this category like compilers,
operating systems, editors, drivers, etc. Basically system software is a collection of programs
to provide service to other programs.

2.Real time software: These software are used to monitor, control and analyze real world
events as they occur. An example may be software required for weather forecasting. Such
software will gather and process the status of temperature, humidity and other environmental
parameters to forcast the weather.

3.Embedded software: This type of software is placed in “Read-Only- Memory


(ROM)”of the product and control the various functions of the product. The product could be
an aircraft, automobile, security system, signalling system, control unit of power plants, etc.
The embedded software handles hardware components and is also termed as intelligent
software .

4.Business software : This is the largest application area. The software designed to
process business applications is called business software. Business software could be
payroll, file monitoring system, employee management, account management. It may also be
a data warehousing tool which helps us to take decisions based on available data.
Management information system, enterprise resource planning (ERP) and such other
software are popular examples of business software.

5.Personal computer software :The software used in personal computers are covered in
this category. Examples are word processors, computer graphics, multimedia and animating
tools, database management, computer games etc. This is a very upcoming area and many big
organisations are concentrating their effort here due to large customer base.

6.Artificial intelligence software: Artificial Intelligence software makes use of non


numerical algorithms to solve complex problems that are not amenable to computation or
straight forward analysis. Examples are expert systems, artificial neural network,signal
processing software etc.

7.Web based software: The software related to web applications come under this
category. Examples are CGI, HTML, Java, Perl, etc.
4

Software myths:

Software Myths : What is software myth in software


engineering.

 The development of software requires dedication and understanding on the


developers' part. Many software problems arise due to myths that are formed during
the initial stages of software development. Software myths propagate false beliefs
and confusion in the minds of management, users and developers.

Managers, who own software development responsibility, are often under strain and
pressure to maintain a software budget, time constraints, improved quality, and many other
considerations. Common management myths are listed in Table

Management
Myths
The members of an Standards are often
organization can acquire all-the incomplete, inadaptable, and
information, they require from outdated.
a manual, which contains Developers are often
standards, procedures, and unaware of all the established
principles; standards.
Developers rarely
follow all the
known standards because
not all the standards tend to
decrease the delivery time
of software while maintaining
its quality.
If the project is Adding more manpower to
behind schedule,increasing the the project, which is already
number of programmers can behind schedule, further delays
reduce the time gap. the project.
New workers take
longer to learn about the
project as compared to those
already working on the
project.
If the project is outsourced Outsourcing software to a
to a third party, the management third party does not help the
can relax and let the other organization, which is
firm develop software for them. incompetent in managing and
controlling the software project
internally. The
organization invariably suffers
when it out sources the software
project.
5

In most cases, users tend to believe myths about the software because software managers
and developers do not try to correct the false beliefs. These myths lead to false expectations
and ultimately develop dissatisfaction among the users. Common user myths are listed in
Table.

Table User Myths

Brief requirement stated in Starting


the initial process is enough development with
to start development; detailed incomplete and
requirements can be added at ambiguous
the later stages. requirements often lead to
software failure. Instead,
a complete
and
formal description of
requirements is essential before
starting development. Adding
requirements at a later stage
often requires repeating the
entire development process.
Software is flexible; Incorporating change
hence software requirement requests earlier in the
changes can be added during development process costs
any phase of the lesser than those that occurs at
development process. later stages. This is
because incorporating changes
later may require
In the early days of software development, programming was viewed as
redesigning and extra
an art, but now software development has
resources. gradually become an
engineering discipline. However, developers still believe in some
myths-. Some of the common developer myths are listed in Table.
6

Table Developer
Myths
Software 50% to 70% of all
development is considered the efforts are expended
complete when the code is after the software is
delivered. delivered to the user.

The success of a The quality of


software project depends programs is not the
on the quality of the only factor that makes
product produced. the project successful
instead the documentation
and software
configuration also playa
crucial role.
Software Software
engineering requires engineering is about
unnecessary creating quality at every
documentation, which level of the software
slows down the project. project. Proper
documentation enhances
quality which results in
reducing the amount of
rework.
The only product The deliverables of
that is delivered after the a successful project
completion of a project includes not only the
is the working working program but also
program(s). the documentation to
guide the users for using
the software.
Software quality The quality of
can be assessed only software can be
after the program is measured during any
executed. phase of development
process by applying
some quality assurance
mechanism. One such
mechanism is formal
technical review that
can be effectively used
during each phase of
development to uncover
certain errors
Need of Software Engineering:

Handling Big Projects:


A corporation must use a software engineering
methodology in order to handle large projects
without any issues.
To manage the cost:
Software engineering programmers plan everything
and reduce all those things that are not required.
To decrease time:
It will save a lot of time if you are developing
software using a software engineering technique.
Reliable software:
It is the company’s responsibility to deliver software
products on schedule and to address any defects that
may exist.
Effectiveness:
Effectiveness results from things being created in
accordance with the standards.
Reduces complexity:
Large challenges are broken down into smaller ones
and solved one at a time in software engineering.
Productivity:
Because it contains testing systems at every level,
proper care is done to maintain software
productivity.
Layered Technology in Software Engineering

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:-

1.Communication: It is the first and foremost thing for


the development of software. Communication is
necessary to know the actual demand of the client.
2.Planning: It basically means drawing a map for
reduced the complication of development.
3.Modeling: In this process, a model is created
according to the client for better understanding.
4.Construction: It includes the coding and testing of
the problem.
5.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.
There are three types of prescriptive
process models. They are:
1. The Waterfall Model
2. Incremental Process model
3.Spiral model
Advantages of waterfall model
• The waterfall model is simple and easy to
understand, implement, and use.
• All the requirements are known at the
beginning of the project; hence it is easy to
manage.
• It avoids overlapping of phases because each
phase is completed at once.
• This model works for small projects because the
requirements are understood very well.
• This model is preferred for those projects where
the quality is more important as compared to
the cost of the project.

Disadvantages of the waterfall model


• This model is not good for complex and object-
oriented projects.
• It is a poor model for long projects.
• The problems with this model are uncovered,
until the software testing.
• The amount of risk is high.
Advantages of incremental model
• This model is flexible because the cost of
development is low and initial product
delivery is faster.
• It is easier to test and debug during the
smaller iteration.
• The working software generates quickly
and early during the software life cycle.
• The customers can respond to its
functionalities after every increment.

Disadvantages of the incremental model


• The cost of the final product may cross
the cost estimated initially.
• This model requires a very clear and
complete planning.
• The planning of design is required before
the whole system is broken into small
increments.
• The demands of customer for additional
functionalities after every increment
causes problem during the system
architecture.
The Prototyping model

• Prototype is defined as first or


preliminary form using which other
forms are copied or derived.
• Prototype model is a set of general
objectives for software.
• It does not identify the requirements
like detailed input, output.
• It is software working model of
limited functionality.
• In this model, working programs are
quickly produced.
Advantages of Prototyping Model
• Prototype model need not know the detailed input,
output, processes, adaptability of operating system
and full machine interaction.
• In the development process of this model users are
actively involved.
• The development process is the best platform to
understand the system by the user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also
identifies the confusing or difficult functions.

Disadvantages of Prototyping Model:


• The client involvement is more and it is not always
considered by the developer.
• It is a slow process because it takes more time for
development.
• Many changes can disturb the rhythm of the
development team.
• It is a thrown away prototype when the users are
confused with it.
Advantages of Spiral Model
• It reduces high amount of risk.
• It is good for large and critical
projects.
• It gives strong approval and
documentation control.
• In spiral model, the software is
produced early in the life cycle
process.

Disadvantages of Spiral Model


• It can be costly to develop a
software model.
• It is not used for small projects.
Agile Software Development
Agile Software Development is a
software development methodology that
values flexibility, collaboration, and
customer satisfaction. It is based on, a set
of principles for software development that
prioritize individuals and interactions,
working software, customer collaboration,
and responding to change.
It is an iterative and incremental approach
to software development that emphasizes
the importance of delivering a working
product quickly and frequently. It involves
close collaboration between the
development team and the customer to
ensure that the product meets their needs
and expectations.
Why Agile is Used?

Creating Tangible Value: Agile places a high priority


on creating tangible value as soon as possible in a
project. Customers can benefit from early delivery of
promised advantages and opportunity for prompt
feedback and modifications.
Concentrate on Value-Added Work: Agile
methodology promotes teams to concentrate on
producing functional and value-added product
increments, hence reducing the amount of time and
energy allocated to non-essential tasks.
Agile as a Mindset: Agile represents a shift in culture
that values adaptability, collaboration, and client
happiness. It gives team members more authority
and promotes a cooperative and upbeat work
atmosphere.
Quick Response to Change: Agile fosters a culture
that allows teams to respond swiftly to constantly
shifting priorities and requirements. This
adaptability is particularly useful in sectors of the
economy or technology that experience fast
changes.
Regular Demonstrations: Agile techniques
place a strong emphasis on regular
demonstrations of project progress.
Stakeholders may clearly see the project’s
status, upcoming problems, and upcoming
new features due to this transparency.

Cross-Functional Teams: Agile fosters self-


organizing, cross-functional teams that
share information effectively, communicate
more effectively and feel more like a unit.
Core Values of Agile Software
Development
The Agile Software Development
Methodology Manifesto describe
four core values of Agile in
software development.
1.Individuals and Interactions over
Processes and Tools
2.Working Software over
Comprehensive Documentation
3.Customer Collaboration over
Contract Negotiation
4.Responding to Change over
Following a Plan
Principles of Agile
The Agile Manifesto is based on four values
and twelve principles that form the basis,
for methodologies.
These principles include:

1. Ensuring customer satisfaction through


the early delivery of software.
2. Being open to changing requirements in
the stages of the development.
3. Frequently delivering working software
with a main focus on preference for
timeframes.
4. Promoting collaboration between
business stakeholders and developers as
an element.
5. Structuring the projects around
individuals. Providing them with the
necessary environment and support.
6. Prioritizing face to face communication
whenever needed.
7. Considering working software as the
measure of the progress.
8. Fostering development by allowing
teams to maintain a pace
indefinitely.
9. Placing attention on excellence and
good design practices.
10.Recognizing the simplicity as
crucial factor aiming to maximize
productivity by minimizing the
work.
11.Encouraging self organizing teams
as the approach to design and
build systems.
12.Regularly reflecting on how to
enhance effectiveness and to make
adjustments accordingly.
Agile Scrum
Scrum is a framework used in project management
that focuses on teamwork and helps teams deliver
high-quality products on time. A set of tools,
meetings, and different roles are being described
in Scrum for timely project delivery. With the help
of this framework, the teams or groups self-
organize, structure, and manage themselves
toward a particular goal and work on that goal to
achieve it.
What is Scrum?
• In SE, scrum is a project management framework
that is used to work and self-organize toward a
particular goal. With the help of this agile
framework, the scrum team performs various
practices, meetings, and ceremonies.
• It uses the process of Iterative and the main
advantage of this framework is that it is fast and
cost-effective.
• In the field of software engineering scrum consists
of three types of roles- Scrum team, Scrum
master, and Scrum owner.
• Scrum framework is structured
which helps the teams or groups
to adapt themselves to the
requirements of the users.
• With the re-prioritization built
into the process, the team will
constantly improve and learn.
• It is important in software
engineering because, with the
help of this framework, teams are
used to self-organize towards a
particular goal.
Therefore, Scrum plays a major role in
software engineering. Scrum mainly
focuses on the teamwork, and it help
the teams to deliver high quality
products timely and effectively.
Agile Extreme Programming (XP)
Extreme programming (XP) is one
of the most important software
development frameworks of
Agile models. It is used to
improve software quality and
responsiveness to customer
requirements.
It focuses on delivering high-quality
software through frequent and
continuous feedback, collaboration,
and adaptation. XP highlights a
close working relationship between
development team, customer, and
stakeholders, with an importance
on rapid, iterative development and
deployment.
Extreme Programming (XP) is a
Software Development
Methodology, known for its
flexibility, collaboration and rapid
feedback using techniques like
continuous testing, frequent
releases, and pair programming, in
which two programmers
collaborate on the same code. XP
supports user involvement
throughout the development
process while prioritizing
simplicity and communication.
Overall, XP aims to deliver high-
quality software quickly and adapt
to changing requirements
effectively.
Difference between perspective
and agile process model

Perspective process model


• It is a way of seeing things
from different viewpoints.
• Helps to understand situations
from other positions.
• Help to consider other beliefs,
experiences and viewpoints.
• Reduce bias, judgment and
conflicts.
Agile process model

• A way of developing software


that emphasizes adaptability,
speed and informal processes.
• Focuses on delivering an
increment to the customer after
each iteration.
• Promotes a cultural shift in the
organization.
• Suitable for large projects that
can be divided into small parts
• Emphasizes adaptability and
flexibility.(Quality of being
easy to move and direct)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy