Software Engineering Unit-1: Introduction
NOTES ON:
SOFTWARE ENGINEERING
1 Er. Sanjay Kumar Sah
Email: kumarsanjay.sah2@[Link]
UNIT-1 INTRODUCTION
1.1 Definition of Software, Types of
Software, Characteristics of Software,
Attributes of Good Software
1.2 Definition of Software Engineering,
Software Engineering Costs, Key
Challenges that Software Engineering
Facing
1.3 System Engineering and Software
Engineering, Professional Practice
2
Er. Sanjay Kumar Sah 1
Software Engineering Unit-1: Introduction
IS THERE AN “OFFICIAL” NAME?
Software Engineering!
Information Systems Engineering!
Systems Engineering!
Information Systems Development!
Which
one?
SOFTWARE
Software is the non-touchable parts of the computer.
Software is more than just a program code.
▪ Software is collection of executable programming
code, associated libraries and documentations.
▪ Software, when made for a specific requirement is
called software product.
Software products may be developed for a particular
customer or may be developed for a general market.
Software products may be:
Generic - developed to be sold to a range of different
customers.
4
Custom - developed for a single customer according to their
specification.
Er. Sanjay Kumar Sah 2
Software Engineering Unit-1: Introduction
DEFINITION OF SOFTWARE
Computer Software, or only software, is a kind of program
that enable a user to perform some specific task or used to
operate a computer.
It directs all the peripheral devices on the computer system –
what to do and how to perform a task.
PC software plays the role of mediator between the user and
computer hardware.
Without software, a user can’t perform any task on a digital
computer.
A computer system can be divided into three components: the
hardware, the software, and the users.
Types of Software
Software can be further divide into mainly two parts:
1. System Software 5
2. Application Software
1. SYSTEM SOFTWARE
System software is a collection of programs designed to
operate, control, and extend the processing capabilities of the
computer itself.
These software products comprise of programs written in low-
level languages, which interact with the hardware at a very
basic level.
System software serves as the interface between the hardware
and the end users.
The best-known example of system software is an operating
system.
Some examples of system software are Operating System, 6
Compilers, Interpreter, Assemblers, etc.
Er. Sanjay Kumar Sah 3
Software Engineering Unit-1: Introduction
2. APPLICATION SOFTWARE
Application software also called end-user programs or
merely an application used for a specific purpose.
It programmed for simple as well as complex tasks.
It either be installed or access online.
It can be a single program or a group of small programs
that referred to as an application suite.
Application software can be used by the user to complete
specific tasks, such as creating word processors
documents, spreadsheets, presentations, graphics,
sending the emails, etc. 7
SOFTWARE ENGINEERING
Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods.
Software Engineering is an engineering discipline
which is concerned with all aspects of software
production.
Software Engineers should adopt a systematic and
organised approach to their work and use appropriate
tools and techniques depending on the problem to be
solved, the development constraints and the resources
available. 8
Er. Sanjay Kumar Sah 4
Software Engineering Unit-1: Introduction
SOFTWARE ENGINEERING
The economies of all developed nations are dependent on
software.
More and more systems are software controlled.
Software engineering is concerned with theories,
methods and tools for professional software development.
DEFINITIONS OF SOFTWARE ENGINEERING
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.
IEEE defines software engineering as:
1. The application of a systematic, disciplined, quantifiable
approach to the development, operation and maintenance of
software; that is, the application of engineering to software.
2. The study of approaches as in the above statement.
Fritz Bauer, a German computer scientist, defines software
engineering as:
▪ Software engineering is the establishment and use of sound
engineering principles in order to obtain economically
software that is reliable and work efficiently on real 10
machines.
10
Er. Sanjay Kumar Sah 5
Software Engineering Unit-1: Introduction
SOFTWARE ENGINEERING VS COMPUTER
SCIENCE
Computer science is concerned with theory and
fundamentals; software engineering is concerned
with the practicalities of developing and delivering
useful software.
Computer science theories are currently insufficient
to act as a complete form the basis for software
engineering.
Software engineering is a branch of computer
science, which uses well-defined engineering
concepts required to produce efficient, durable, 11
scalable, in-budget and on-time software products.
11
SOFTWARE EVOLUTION
The process of developing a software product using software
engineering principles and methods is referred to as software
evolution.
This includes the initial development of software and its
maintenance and updates, till desired software product is
developed, which satisfies the expected requirements.
12
12
Er. Sanjay Kumar Sah 6
Software Engineering Unit-1: Introduction
SOFTWARE EVOLUTION
Evolution starts from the requirement gathering process.
After which developers create a prototype of the intended
software and show it to the users to get their feedback at the
early stage of software product development.
The users suggest changes, on which several consecutive
updates and maintenance keep on changing too.
This process changes to the original software, till the desired
software is accomplished.
Even after the user has desired software in hand, the
advancing technology and the changing requirements force
the software product to change accordingly.
Re-creating software from scratch and to go one-on-one with
requirement is not feasible.
The only feasible and economical solution is to update the 13
existing software so that it matches the latest requirements.
13
NEED OF SOFTWARE ENGINEERING
The need of software engineering arises because of
higher rate of change in user requirements and
environment on which the software is working.
1. Large Software:
▪ It is easier to build a wall than to a house or
building, likewise, as the size of software become
large engineering must step to give it a scientific
process.
2. Scalability:
▪ If the software process were not based on scientific
and engineering concepts, it would be easier to re-
14
create new software than to scale an existing one.
14
Er. Sanjay Kumar Sah 7
Software Engineering Unit-1: Introduction
NEED OF SOFTWARE ENGINEERING
3. Cost:
▪ As hardware industry has shown its skills and huge
manufacturing has lower down the price of computer and
electronic hardware.
▪ But the cost of software remains high if proper process is
not adapted.
4. Dynamic Nature:
▪ The always growing and adapting nature of software hugely
depends upon the environment in which user works.
▪ If the nature of software is always changing, new
enhancements need to be done in the existing one.
▪ This is where software engineering plays a good role.
5. Quality Management:
▪ Better process of software development provides better and
15
quality software product.
15
ATTRIBUTES OF GOOD SOFTWARE
The software should deliver the required functionality
and performance to the user and should be maintainable,
dependable and usable.
Well-engineered and crafted software is expected to have
the following characteristics:
1. Maintainability:
▪ Software must evolve to meet changing needs
2. Dependability:
▪ Software must be trustworthy
16
16
Er. Sanjay Kumar Sah 8
Software Engineering Unit-1: Introduction
ATTRIBUTES OF GOOD SOFTWARE
3. Efficiency:
▪ Software should not make wasteful use of system
resources
4. Usability:
▪ Software must be usable by the users for which it was
designed
5. Operational:
▪ This tells us how well software works in operations.
6. Transitional:
▪ This aspect is important when the software is moved
17
from one platform to another.
17
SUCCESSFUL SOFTWARE SYSTEM
Software development projects have not always
been successful.
When do we consider a software application
successful?
Development completed.
It is useful.
It is usable.
It is used.
Cost-effectiveness, maintainability implied. 18
18
Er. Sanjay Kumar Sah 9
Software Engineering Unit-1: Introduction
REASONS FOR FAILURE
Schedule slippage
Cost over-runs
Does not solve user’s problem
Poor quality of software
Poor maintainability
Ad hoc software development results in such
problems:
▪ No planning of development work (e.g., no milestones
defined)
▪ Deliverables to user not identified
▪ Poor understanding of user requirements
▪ No control or review
▪ Technical incompetence of developers
▪ Poor understanding of cost and effort by both developer
and user 19
19
APPLY ENGINEERING APPROACH
Planning and control even more important in
software development engineering approach:
▪ Attempt to estimate cost/effort
▪ Plan and schedule work
▪ Involve user in defining requirements
▪ Identify stages in development
▪ Define clear milestones so that progress can
be measured
▪ Schedule reviews both for control and quality
▪ Define deliverables
▪ Plan extensive testing
20
20
Er. Sanjay Kumar Sah 10
Software Engineering Unit-1: Introduction
JOB OF SOFTWARE DEVELOPER IS
DIFFICULT
Dealing with Users:
▪ Defined requirements
▪ Concern with ease-of-use and response time
Dealing with Technical People:
▪ Concerned with coding, databases, file structures, etc.
Dealing with Management:
▪ Concerned with return on their investment
▪ Cost-benefit analysis 21
▪ Schedule
21
SOFTWARE COSTS
Software costs often dominate system costs.
The costs of software on a PC are often greater than
the hardware cost.
Software costs more to maintain than it does to
develop.
For systems with a long life, maintenance costs may
be several times development costs.
Software engineering is concerned with cost-
effective software development. 22
22
Er. Sanjay Kumar Sah 11
Software Engineering Unit-1: Introduction
WHAT ARE THE COSTS OF SOFTWARE
ENGINEERING?
Roughly 60% of costs are development costs, 40%
are testing costs.
For custom software, evolution costs often exceed
development costs.
Costs vary depending on the type of system being
developed and the requirements of system attributes
such as performance and system reliability.
Distribution of costs depends on the development
model that is used. 23
23
KEY CHALLENGES FACING SOFTWARE
ENGINEERING
Coping with legacy systems, coping with increasing
diversity and coping with demands for reduced delivery
times.
1. Legacy systems:
▪ Old, valuable systems must be maintained and
updated.
2. Heterogeneity:
▪ Systems are distributed and include a mix of
hardware and software.
3. Delivery:
▪ There is increasing pressure for faster delivery of
24
software.
24
Er. Sanjay Kumar Sah 12
Software Engineering Unit-1: Introduction
SOFTWARE ENGINEERING AND SYSTEM
ENGINEERING
1. System Engineer:
A System Engineer is a person who deals with the overall management
of engineering projects during their life cycle (focusing more on physical
aspects).
They follows an interdisciplinary approach governing the total technical
and managerial effort required to transform requirements into
solutions.
They are generally focused with all aspects of computer-based system
development not only this but also hardware, software and process
engineering etc. are included.
Systems Engineering Methods:
▪ Stakeholder Analysis
▪ Interface Specification
▪ Design Tradeoffs
▪ Configuration Management
▪ Systematic Verification and Validation 25
▪ Requirements Engineering
25
SOFTWARE ENGINEERING AND SYSTEM
ENGINEERING
2. Software Engineer:
A Software Engineer is a person who deals with the designing and
developing good quality of software applications/software products.
They follows a systematic and disciplined approach for software
design, development, deployment and maintenance of software
applications.
They are generally concerned with all aspects of software
development, infrastructure, control, applications and databases in
the system.
Software Engineering Methods:
▪ Process Modeling
▪ Incremental Verification and Validation
▪ Process Improvement
▪ Model-Driven Development
▪ Agile Methods 26
▪ Continuous Integration
26
Er. Sanjay Kumar Sah 13
Software Engineering Unit-1: Introduction
SOFTWARE ENGINEERING VS SYSTEM
ENGINEERING
System engineering is concerned with all aspects of computer-
based systems development including hardware, software and
process engineering.
Software engineering is part of this more general process.
Software engineering is concerned with all aspect of the
development and evolution of the computer system or other
complex system.
Whereas software plays major roles in system engineering.
System engineering is there for, concerned with hardware
development process design.
System Engineers requires a broader education background
like Engineering, Mathematics and Computer science etc.
While Software Engineers requires Computer Science or
27
Computer Engineering background.
27
PROFESSIONAL & ETHICAL RESPONSIBILITY
Software engineering involves wider
responsibilities than simply the application of
technical skills.
Software engineers must behave in an honest
and ethically responsible way if they are to be
respected as professionals.
Ethical behaviour is more than simply upholding
the law.
28
28
Er. Sanjay Kumar Sah 14
Software Engineering Unit-1: Introduction
ISSUES OF PROFESSIONAL RESPONSIBILITY
1. Confidentiality:
▪ Engineers should normally respect the confidentiality of their
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
2. Competence:
▪ Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is outside their competence.
3. Intellectual Property Rights:
▪ Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc.
▪ They should be careful to ensure that the intellectual property of
employers and clients is protected.
4. Computer Misuse:
▪ Software engineers should not use their technical skills to misuse
29
other people’s computers.
29
SUMMARY
Software engineering is an engineering discipline which is
concerned with all aspects of software production.
Software products consist of developed programs and
associated documentation. Essential product attributes are
maintainability, dependability, efficiency and usability.
Methods are organised ways of producing software. They
include suggestions for the process to be followed, the
notations to be used, rules governing the system descriptions
which are produced and design guidelines.
Software engineers have responsibilities to the engineering
profession and society. They should not simply be concerned
with technical issues.
Professional societies publish codes of conduct which set out
30
the standards of behaviour expected of their members.
30
Er. Sanjay Kumar Sah 15
Software Engineering Unit-1: Introduction
PRACTICE QUESTIONS
1. Define software and explain the types of software.
2. What are the characteristics of software? Explain.
3. Explain the attributes of a good software.
4. Define the software engineering. Why we need the
software engineering?
5. What are the software engineering costs?
6. Explain the key challenges that software engineering
facing.
7. Differentiate between the system engineering and
software engineering.
8. What is the professional and ethical responsibility of a
software engineer? Describe the issues of professional
responsibility. 31
31
FOR YOUR ATTENTION !
Any Questions?
32
32
Er. Sanjay Kumar Sah 16