Uploaded by Arooj Arif

Lecture-01-Introduction

advertisement
Software Engineering
Introduction to Software
Engineering/Overview
Motivation
•
Software can have huge impact in any
aspect of our society
•
Where can we find software?
– Software is almost everywhere!!!
Problems in Software Development
•
Common issues
– The final software does not fulfill the needs of
the customer.
– Hard to extend and improve: if you want to
add a functionality later its mission
impossible.
– Bad documentation
– Bad quality: frequent errors, hard to use, ...
– More time and costs than expected .
Communication Problem
•
The cartoon below is the best illustration. Due to
communication problem it is difficult to capture the
customer needs and correctly translate them in the
form of requirements, design and working code.
Conclusion
•
Programming is NOT enough!
– It is not enough to do your best: you must Know
what to do, and THEN do your best.
-- W. Edwards Deming.
Software Engineering
•
Software: is more than just a program code. A
program is an executable code, which serves some
computational purpose. Software is a collection of
executable programming code, associated libraries
and documentations. Software, when made for a
specific requirement is called software product.
•
Engineering: is all about developing products, using
well-defined, scientific principles and methods.
Software Engineering
•
•
Software engineering is engineering branch
associated with the development of software
product using well-defined scientific principles,
methods, and procedures.
.
IEEE defines software engineering as: The
application of a systematic, disciplined, quantifiable
approach to the development, operation, and
maintenance of software; that is the application of
engineering to software.
Software Engineering is a Systematic
Approach
• A small program can be written without using
software engineering principles.
• For large software product, software engineering
principles are necessary to achieve a good quality
software cost effectively.
• Without using software engineering principles, it
would be difficult to develop large programs.
Software Engineering Techniques
• Software engineering principles use two important
techniques to reduce problem complexity:
abstraction and decomposition.
• Abstraction: reduce the complexity of the problem.
– focus on relevant aspects
• Decomposition: complex problem is divided into
several smaller problems.
– minimize interactions among various components.
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.
– Large software
– Scalability
– Cost
– Dynamic nature
– Quality management
Characteristics of Good Software
• This software must satisfy on the following grounds:
– Operational
▪ Budget, Usability, Efficiency, Correctness, Functionality,
Dependability, Security, Safety
– Transitional
▪ Portability, Interoperability, Reusability, Adaptability
– Maintenance
▪ Modularity, Maintainability, Flexibility, Scalability
In short, Software engineering is a branch of
computer science, which uses well-defined
engineering concepts required to produce
efficient, durable, scalable, in-budget and ontime software products.
Recommended Books
•
Textbooks
– Roger S. Pressman, Software Engineering, A
Practitioner’s Approach, Latest Edition.
– Ian Sommerville, Software Engineering, Latest
Edition.
Next Lecture
•
Software development lifecycle
•
Need of software development life cycle
•
Different life cycle models
Q&A
Download