University of Kelaniya
Sri Lanka
Software Engineering
COSC 21052
INTRODUCTION
SACHINTHA PITIGALA
[email protected]
© 2022 - Sachintha Pitigala
1
What is Software Engineering?
What is a Software?
Programs Documentation
• A software consists of set of programs and documentations.
What is Engineering?
• Engineering is the use of scientific principles to design and build machines, structures,
and other items, including bridges, tunnels, roads, vehicles, and buildings.
2
So, What is Software Engineering?
The seminal definition:
[Software engineering is] the establishment and use of sound engineering principles in order
to obtain economically software that is reliable and works efficiently on real machines.
The IEEE definition:
Software Engineering: The application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software.
Why do we need it?
• Large Software
• Scalability
• Cost
• Dynamic Nature
• Quality Management
Reasons for Failures
• Schedule Slippage
• Cost over-runs
• Doesn’t solve user’s problem
• Poor quality of software
• Poor maintainability
3
Why?
• Because, Ad hoc Software Development
• 'Ad hoc' is a term used to refer to
o spontaneous events which happen without planning.
Why Ad Hoc Development?
• No planning of development work (no milestones defined)
• Deliverables to user not identified
• Poor understanding of user requirements
• No control or review
• Technical incompetence of developer
• Poor understanding of cost and effort by both developer and user
Attributes of Good Software
• Maintainability
o Software must evolve to meet changing needs
• Dependability
o Software must be trustworthy
• Efficiency
o Software should not make wasteful use of system recourses
• Acceptability
o Software must be accepted by users for which it was designed
(User friendliness, Reliability, Reusability, Interoperability
How can we built a Good Software?
• Applying the engineering approach
o Attempt to estimate cost/effort
o Plan and schedule work
o Involve user in defining requirements
o Identify stages in development
o Define clear milestones so that progress can be measured
o Schedule reviews both for control and quality
o Define deliverables
o Plan extensive testing
4
Why it is Difficult?
• Dealing with users
− Define 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
− Schedule
Types of Software
• System Software
• Application Software
Types of Software
• Generic Software
• Bespoke Software (Custom Built Software)