SOFTWARE
ENGINEERING
– AN INTRODUCTION
Dr. Vani Vasudevan
1
The Importance of Software
• Software packs and delivers the most important product of our
time- Information
• Software is the differentiator
Ø Hardware is general-purpose, software is application-specific
Ø Hardware is becoming a commodity
• Software is often costlier than the hardware it runs on.
• Software is crucial for business success
28/04/23 Dr. Vani Vasudevan 2
The Importance of Software
Consider a Nike salesman called who moves around with a laptop taking orders from big departmental stores.
Because of the database on the laptop, The salesperson is able to talk of all the styles available, the lead times,
the popularity ratings of the various styles, etc.
Once the salesperson takes the order, he thanks the buyer, and promises to be back the next day with a
statement of the discounts that will be available to the buyer based on his past buying history.
All is well till one day the salesman’s girlfriend, who works for the competing shoe and sports apparel firm
Reebok, is given a laptop that helps her do not only what Sam (her boyfriend) can do, but also computes
discounts the moment the order is entered. This allows her client to modify his order to his satisfaction and
confirm the order right away instead of waiting for the salesperson to come back the next day. So Sam finds, in
due course, that he loses business from his once-regular customers.
Why does this happen simply because one laptop software is better than the other? Don’t the shoes themselves
count? Since the quality of shoes is practically the same (and this is the key point in a highly competitive market)
it is the service that counts. And this example shows how service is catalyzed by superior software.
Software has become a key underpinning element of national activity. Every sector of the economy including
transport, telecommunications, manufacturing, services and finance today depends significantly on computers —
and hence software — for its operations, and this dependence is increasing.
The basic paradigm governing the application of computers has always been to use hardware that is fairly
general-purpose in nature, and develop software to customise that hardware to application-specific needs. Thus,
while hardware is rapidly moving towards becoming a commodity, software is the factor that differentiates. In the
commercial context, this means that the quality of software driving computer-based solutions differentiates a
company from its competitors. It is not unusual for organisations to spend more on software than they did on the
hardware it runs on.
The development and supply of software, both customised and packaged, has thus been recognised as an
industry in its own right, and is in fact one of the fastest growing industry segments in the Indian economy today.
Like any other real-world endeavour of economic significance, software development has its own problems and
pitfalls. We look at some of these here, after a brief historical interlude to put them in perspective.
2
The Software Crisis
■ Early software development was ‘personalized’
■ As sophistication of applications grew, programs grew in size and
complexity
■ Maintenance became difficult
■ Software projects were taking a lot longer than originally envisaged.
■ Software was costing a lot more to develop than initially estimated.
■ Software was being delivered to the customer only to fail.
■ Errors found by the customer were extremely difficult to trace and fix.
28/04/23 Dr. Vani Vasudevan 3
The Software Crisis
In the early years of computer applications, the focus of development and innovation was on
hardware ¾ software was largely viewed as an afterthought. Computer programming was an art, at
best an arcane practice known to a gifted few. Programmers did not follow any disciplined or
formalised approaches ¾ these were confined to hardware designers. In this personalised approach,
design was implicitly performed in one’s head, and documentation was often nonexistent.
This way of doing things was adequate for a while, until the sophistication of computer applications
outgrew this rough-hewn approach. Software soon took over more and more functions which were
hitherto done manually or were hard-automated. As “software houses” emerged, software began to
be developed for widespread distribution. Software development projects produced tens of thousands
of source program statements. With no tools or methods of managing this increasing complexity, the
number of errors began to accelerate. But the personalised nature of programming made
maintenance, or the fixing of these errors, exceedingly difficult. The following situation resulted:
•Software projects were taking a lot longer than initially envisaged.
•Software was costing a lot more to develop than at first estimated.
•Software was being delivered to the customer only to fail.
•Errors found by the customer were extremely difficult to track down and fix.
These problems are collectively referred to as the “software crisis”. Clearly, there was a need to
rethink software development practices. The consensus which emerged was to borrow ideas about
systematic development from another discipline, namely engineering.
3
Need For Engineering Approach
■ Programming was considered as an ‘art’
■ Since it was personalized, the design was implicitly preformed in one’s head and not
on paper
■ Later, business outgrowth called for sophistication in software development
■ People tried to use the same techniques they adopted for programming, but failed
■ Problems are not technical, but with people management, estimation and
configuration management
■ People decided to borrow ideas about systematic development from engineering,
giving rise to a new discipline called “Software Engineering”
28/04/23 Dr. Vani Vasudevan 4
Need for Engineering Approach
Some characteristics of the software scenario as it obtains today are
•Hardware sophistication has outpaced our ability to build
software that completely taps its potential;
•Our ability to build software cannot keep pace with the
demand for new software;
•Our ability to maintain existing programs is undermined by
poor design and haphazard development practices;
It is clear that a discipline for software development must exist --one
that integrates comprehensive methods for all stages in software development,
better tools for automating these methods, more powerful techniques for software
quality assurance, and an overall philosophy for coordination, control and
management. Such a discipline is Engineering.
4
Software Engineering
Software Engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation and maintenance of
software; i.e., the application of engineering to software.
- (IEEE Standard Glossary of Software Engineering Terminology)
28/04/23 Dr. Vani Vasudevan 5
Software Engineering
Software Engineering, the term coined at a NATO-sponsored conference in 1968, has
come to represent the gamut of systematic approaches to the design, development
and maintenance of software. The definition given below is reproduced from the IEEE
Standard Glossary of Software Engineering Terminology:
Software Engineering is the application of a systematic, disciplined, quantifiable
approach to the development, operation and maintenance of software; i.e., the
application of engineering to software.
5
Software Engineering
28/04/23 Dr. Vani Vasudevan 6
6
The Role for Software Engineering
28/04/23 Dr. Vani Vasudevan
(Figure 1-1). 7
7
The purpose of software engineering(1/2)
■ The purpose of software engineering is to develop software-based systems that let
customers achieve business goals.
■ The customer may be a hospital manager who needs patient-record software to be
used by secretaries in doctors’ offices;
or,
■ a manufacturing manager who needs software to coordinate multiple parallel
production activities that feed into a final assembly stage.
28/04/23 Dr. Vani Vasudevan 8
8
The purpose of software engineering (2/2)
■ Software engineer must understand the customer’s business needs and design
software to help meet them.
■ This task requires
1. The ability to quickly learn new and diverse disciplines and business
processes
2. The ability to communicate with domain experts, extract an abstract
model of the problem from a stream of information provided in
discipline-specific jargon, and formulate a solution that makes sense in
the context of customer’s business
3. The ability to design a software system that will realize the proposed
solution and gracefully evolve with the evolving business needs for
many years in the future.
28/04/23 Dr. Vani Vasudevan 9
9
Software Engineering and Programming
■ Software engineering is often confused with programming.
■ Software engineering is the creative activity of understanding the business problem,
coming up with an idea for solution, and designing the “blueprints” of the solution.
■ Programming is the craft of implementing the given blueprints (Figure 1-1).
28/04/23 Dr. Vani Vasudevan 10
10
More on Software Engineering…
■ Some people say software engineering is about writing loads of
documentation. Other people say software engineering is about writing a
running code. It is neither one.
■ Software engineering is about understanding business problems, inventing
solutions, evaluating alternatives, and making design tradeoffs and choices.
It is helpful to document the process (not only the final solution) to know
what alternatives were considered and why particular choices were made.
■ But software engineering is not about writing documentation. Software
engineering is about delivering value for the customer, and both code and
documentation are valuable.
28/04/23 Dr. Vani Vasudevan 11
11
More on 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.
28/04/23 Dr. Vani Vasudevan 12
Software costs
² 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.
² Software engineering is concerned with cost-effective software development.
28/04/23 Dr. Vani Vasudevan 13
Software products
² Generic products
§ Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
§ Examples – PC software such as graphics programs, project management
tools; CAD software; software for specific markets such as appointments
systems for dentists.
² Customized products
§ Software that is commissioned by a specific customer to meet their own
needs.
§ Examples – embedded control systems, air traffic control software, traffic
monitoring systems.
28/04/23 Dr. Vani Vasudevan 14
14
Product specification
² Generic products
§ The specification of what the software should do is owned by the software
developer and decisions on software change are made by the developer.
² Customized products
§ The specification of what the software should do is owned by the customer
for the software and they make decisions on software changes that are
required.
28/04/23 Dr. Vani Vasudevan 15
15
Essential attributes of good software
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable and
compatible with other systems that they use.
28/04/23 Dr. Vani Vasudevan 16
16
Software engineering
² Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
² Engineering discipline
§ Using appropriate theories and methods to solve problems bearing in
mind organizational and financial constraints.
² All aspects of software production
§ Not just technical process of development. Also project management and
the development of tools, methods etc. to support software production.
28/04/23 Dr. Vani Vasudevan 17
17
Importance of software engineering
² More and more, individuals and society rely on advanced software systems. We
need to be able to produce reliable and trustworthy systems economically
and quickly.
² It is usually cheaper, in the long run, to use software engineering methods
and techniques for software systems rather than just write the programs as if
it was a personal programming project.
² For most types of system, the majority of costs are the costs of changing the
software after it has gone into use.
28/04/23 Dr. Vani Vasudevan 18
18
Software process activities
² Software specification, where customers and engineers define the software
that is to be produced and the constraints on its operation.
² Software development, where the software is designed and programmed.
² Software validation, where the software is checked to ensure that it is what the
customer requires.
² Software evolution, where the software is modified to reflect changing
customer and market requirements.
28/04/23 Dr. Vani Vasudevan 19
19
References
■ Software Engineering – A Practitioners Approach, Roger Pressman, 7th Edition, Mc-
Graw Hill.
■ Sommerville, I. (2011) Software Engineering, 9th edn, Addison-Wesley, Wokingham,
England
28/04/23 Dr. Vani Vasudevan 20
20