You are on page 1of 18

INTRODUCTION TO SOFTWARE ENGINEERING

WHAT IS SOFTWARE?
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 such as requirements, design models and
user manuals.
Software products may be developed for a general market :
• Generic - developed to be sold to a range of different customers e.g.
PC software such as Excel or Word.
Software products may be developed for a particular customer :
• Custom - developed for a single customer according to their
specification.
New software can be created by developing new programs,
configuring generic software systems or reusing existing software.
Software, when made for a specific requirement is called software
product.

INTRODUCTION TO SOFTWARE ENGINEERING,


1
COURSE FACILITATOR : TATSOPTEU ENDELLY
Application of software:
1) System software.
2) Application software.
3) Engineering/scientific software.
4) Embedded software.
5) Product line software.
6) Web application software.
7) Artificial intelligence software (AI).
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.
Expenditure on software represents a significant fraction of GNP in all
developed countries.

INTRODUCTION TO SOFTWARE ENGINEERING,


2
COURSE FACILITATOR : TATSOPTEU ENDELLY
The Number of Job Openings in Software Engineering is impressive,
and young graduates can be self-empmoyed, contributing to the GNP in
the country, and hence the term digital economy.
WHAT IS SOFTWARE ENGINEERING?
Engineering is all about developing products, using well-defined,
scientific principles and methods.
Software Engineering is any of the following :
●Systematic approach for developing software
● Methods and techniques to develop and maintain quality software to
solve problems. (Software Engineering: Methods and Management,
Pfleeger, 1990)
●Study of the methodologies for developing and maintaining software
systems. (``Perspectives on Software Engineering,'' Zelkowitz, 1978)
●Practical application of scientific knowledge in the design and
construction of computer programs and the associated documentation
required to develop, operate, and maintain them. (``Software
Engineering,'' Boehm, 1976)
● Deals with establishment of sound engineering principles and methods
in order to economically obtain software that is reliable and works on
real machines. (``Software Engineering,'' Bauer, 1972)

INTRODUCTION TO SOFTWARE ENGINEERING,


3
COURSE FACILITATOR : TATSOPTEU ENDELLY
QUESTIONS ADDRESSED BY SOFTWARE ENGINEERING
• How do we ensure the quality of the software that we produce?
• How do we meet growing demand and still maintain budget
control?
• How do we avoid disastrous time delays?
WHY APPLY SOFTWARE ENGINEERING TO SYSTEMS?
Provide an understandable process for system development.
● Develop systems and software that are maintainable and easily
changed.
● Develop robust software and system.
● Allow the process of creating computing based systems to be
repeatable and manageable.
Why software engineering ?
Many software projects failed.
Large software project required large development loams.

INTRODUCTION TO SOFTWARE ENGINEERING,


4
COURSE FACILITATOR : TATSOPTEU ENDELLY
Many software project late and over budget.
Complicity of software project is increased.
Demand for new software on the market.
Why study software engineering ?
Higher productivity.
To acquire skills to develop large programs.
Ability to solve complex programming problems.
Learn techniques of specification design.
Better quality programmers.
SOFTWARE COSTS
why is software so expensive?
• Demand of more and more of software
hardware price is falling but software price rising.

Software costs often dominate computer 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.

INTRODUCTION TO SOFTWARE ENGINEERING,


5
COURSE FACILITATOR : TATSOPTEU ENDELLY
Software engineering is concerned with cost effective software
development.
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.

WHAT ARE THE ATTRIBUTES OF GOOD SOFTWARE?


The software should deliver the required functionality and
performance to the user and should be maintainable, dependable and
acceptable.
INTRODUCTION TO SOFTWARE ENGINEERING,
6
COURSE FACILITATOR : TATSOPTEU ENDELLY
Maintainability
• Software must evolve to meet changing needs;
• Ease of repairing the system after a failure has been discovered or
changing the system to include new features
• Very important for critical systems as faults are often introduced
into a system because of maintenance problems
Efficiency
• Software should not make wasteful use of system resources;
Acceptability
• Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible with other
systems
Dependability
• Software must be trustworthy;
System dependability
• For critical systems, it is usually the case that the most important
system property is the dependability of the system.
• The dependability of a system reflects the user’s degree of trust in that
system. It reflects the extent of the user’s confidence that it will operate
as users expect and that it will not ‘fail’ in normal use.
• Usefulness and trustworthiness are not the same thing. A system does
not have to be trusted to be useful.
Importance of dependability
• Systems that are not dependable and are unreliable, unsafe or insecure
may be rejected by their users.
• The costs of system failure may be very high.

INTRODUCTION TO SOFTWARE ENGINEERING,


7
COURSE FACILITATOR : TATSOPTEU ENDELLY
• Undependable systems may cause information loss with a high
consequent recovery cost.
Dependability vs Performance
• Untrustworthy systems may be rejected by their users
• System failure costs may be very high
• It is very difficult to tune systems to make them more dependable
• It may be possible to compensate for poor performance
• Untrustworthy systems may cause loss of valuable information
• Survivability
• The ability of a system to continue to deliver its services to users in the
face of deliberate or accidental attack
• This is an increasingly important attribute for distributed systems
whose security can be compromised
• Survivability subsumes the notion of resilience -the ability of a system
to continue in operation in spite of component failures
WHY IS SOFTWARE ENGINEERING NEEDED?
• To predict time, effort, and cost
• To improve software quality
• To improve maintainability
• To meet increasing demands
• To lower software costs
• To successfully build large, complex software systems
• Tofacilitate group effort in developing software
ELEMENTS OF SOFTWARE ENGINEERING
Professionalism, economics, ethics
Software requirements

INTRODUCTION TO SOFTWARE ENGINEERING,


8
COURSE FACILITATOR : TATSOPTEU ENDELLY
Software design
Software construction
Software testing
Software maintenance
Software configuration management
Software engineering management
Software engineering processes
Software engineering tools and methods
Software quality
PROGRAMMING VS SOFTWARE ENGINEERING
Programming is different from Software Engineering
Programming without Software Engineering is just hacking

INTRODUCTION TO SOFTWARE ENGINEERING,


9
COURSE FACILITATOR : TATSOPTEU ENDELLY
What are the key challenges facing software engineering?
Heterogeneity, delivery and trust.
Heterogeneity
• Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Delivery/ Schedule Pressure
• Developing techniques that lead to faster delivery of software;
•Products need to be created and updated at a constant, rapid pace.
Trust

INTRODUCTION TO SOFTWARE ENGINEERING,


10
COURSE FACILITATOR : TATSOPTEU ENDELLY
• Developing techniques that demonstrate that software can be trusted
by its users
• Changing requirements.
The product domain can be constantly changing during the course of
a product development cycle. New technology becomes available.
Competitors release new products that have features that weren’t
thought of. Innovators think of wonderful new ideas that will make
the product more competitive.
Also, Adapting for hardware changes is only one source of
requirements churn for software engineers. Unfortunately,
requirements changes come from many sources. It is often very hard
for customers to express exactly what they want in a product
(software is only thought-stuff for them too!). They often don’t know
what they want until they see some of what they’ve asked for.

PROFESSIONAL AND 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

Ethics vs Law
Ethics are personal code of behavior
Law is minimum standard imposed by society
Law represents will of majority (violation punishable by government)
Ethics are suggested, not mandated (violation can result in
malpractice suit, loss of job, …)
issues of professional responsibility
Confidentiality
INTRODUCTION TO SOFTWARE ENGINEERING,
11
COURSE FACILITATOR : TATSOPTEU ENDELLY
• Engineers should normally respect the confidentiality of their employers
or clients irrespective of whether or not a formal confidentiality
agreement has been signed.
Competence
• Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is outside their competence
level.
Intellectual property rights
• Engineers should be aware of local laws governing the use of
intellectual property such aspatents, copyright, etc. They should be
careful to ensure that the intellectual property of employers and clients is
protected.
Computer misuse
• Software engineers should not use their technical skills to misuse other
people’s computers. Computer misuse ranges from relatively trivial
(game playing on an employer’s machine, say) to extremely serious
(dissemination of viruses)
THE SOFTWARE CRISIS
The tragedy of software engineering is not that we don’t know how to
plan and conduct software projects, but that we know how and just
don’t do it….” Richard E. Fairley
A software failure is a software project that has one or more of the
following:
• Over budget
•Late
• Does not satisfy user needs or expectations
• Does not meet functional or performance requirements
• Does not meet quality requirements

INTRODUCTION TO SOFTWARE ENGINEERING,


12
COURSE FACILITATOR : TATSOPTEU ENDELLY
The construction of new software, which is pleasing to both user and
buyer and does not contain errors, is an unexpectedly hard problem. It is
perhaps the most difficult problem in engineering today. Referred to as
the “software crisis,” it has become the longest continuing crisis in the
engineering world, and it continues unabated.” W. W. Royce 1929 –
1995
What is causing software crisis?
Software requirements do not adequately describe user needs or
customer expectations
Project planning is frequently unrealistic, incomplete, or ignored
Project cost and schedule estimates are underestimated or
established by management edict
Software quality is difficult to specify, design, and build-to
Software development progress is difficult to see, progress is often
unknown
Changes in requirements are not accompanied by changes in software
plans
Design is changed without changing requirements
Standards are not used or documented
How do we solve software engineering crisis?
Ans : Software Engineering

What is the difference between software engineering and


computer science?
Computer science is concerned with theory and fundamentals;
software engineering is concerned with the practicalities of developing
and delivering useful software.

INTRODUCTION TO SOFTWARE ENGINEERING,


13
COURSE FACILITATOR : TATSOPTEU ENDELLY
Software engineering is closer to good business practices than science
Computer science theories are still insufficient to act as a complete
underpinning for software engineering (unlike e.g. physics and electrical
engineering).
System engineering is concerned with all aspects of systems
development including hardware, software and process engineering.
Software engineering is part of this process
concerned with developing the software infrastructure, control,
applications and databases in the system.
System engineers are involved in system specification, architectural
design, integration and deployment
System Engineering
Problem definition (requirements analysis)
Solution analysis (software design)
Process planning
Process control
Product evaluation (verification, validation, and testing)

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.

INTRODUCTION TO SOFTWARE ENGINEERING,


14
COURSE FACILITATOR : TATSOPTEU ENDELLY
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 the 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 the 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 the requirement is not feasible. The only feasible and
economical solution is to update the existing software so that it matches
the latest requirements.
SOFTWARE PARADIGMS
Software paradigms refer to the methods and steps, which are taken
while designing the software. There are many methods proposed and
are implemented. But, we need to see where in the software engineering
concept, these paradigms stand. These can be combined into various
categories, though each of them is contained in one another:

INTRODUCTION TO SOFTWARE ENGINEERING,


15
COURSE FACILITATOR : TATSOPTEU ENDELLY
Programming paradigm is a subset of Software design paradigm which is
further a subset of Software development paradigm.
SOFTWARE DEVELOPMENT PARADIGM
This paradigm is known as software engineering paradigms; where all
the engineering concepts pertaining to the development of software are
applied. It includes various researches and requirement gathering which
helps the software
product to build. It consists of :
Requirement gathering
Software design
Programming
Software Design Paradigm
This paradigm is a part of Software Development and includes :
Design
Maintenance
Programming
Programming Paradigm
This paradigm is related closely to programming aspect of software
development.
This includes :
Coding

INTRODUCTION TO SOFTWARE ENGINEERING,


16
COURSE FACILITATOR : TATSOPTEU ENDELLY
Testing
Integration
SOFTWARE ENGINEERING PRINCIPLES:

SOFTWARE DEVELOPMENT PRACTICES


Engineers adopt a systematic and organized approach to their work. As
you learn software engineering, you should be exposed to many specific
practices (or techniques) for developing software:
• Requirements engineering
• System analysis
• High-level design/architecture
• Low-level design
• Coding
• Integration
• Design and code reviews
• Testing
• Maintenance
• Project management
• Configuration management

INTRODUCTION TO SOFTWARE ENGINEERING,


17
COURSE FACILITATOR : TATSOPTEU ENDELLY
INTRODUCTION TO SOFTWARE ENGINEERING,
18
COURSE FACILITATOR : TATSOPTEU ENDELLY

You might also like