Software
Engineering
NEED FOR SOFTWARE ENGINEERING
Need for Software Systems
 Economies of the world
 Industries
 Expectations of high reliability
 Intangible
 Different Types of Software
Systems
Professional Software Development
 Software engineering is intended to support professional
software development, rather than individual programming.
 A professionally developed software system is often more than
a single program.
Software Engineering - Definition
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.
Project management - systematic, disciplined, quantifiable approach, Scope & Time & Cost & Quality, Software
Tools
Software Engineering Some Basic
Considerations
 Theories, methods and tools (e.g. prototyping)
 Systematic & scientific
 Computer assistance
 Finding out user’s requirements -> Formal/Semi
Formal specification
 Error free
 Easy to understand
Software Engineer
 Adopt a systematic and organized approach to
their work.
 Use appropriate tools and techniques depending
on the
 Problem to be solved
 Development constraints
 Resources available
Why Software engineering is
important?
1. We need to be able to produce reliable and
trustworthy systems economically and quickly.
2. The majority of costs are the costs of changing the
software after it has gone into use.
software failures
Increasing
Demands
Low
Expectations
Over Budget, Over Schedule, Programming/testing Error
Key challenges facing Software
Engineering
Heterogeneity
Delivery - Business and Social
Change
Security and Trust
Classic Mistakes
 User Expectations Ambiguity
 Mythical man-month (n(n − 1) / 2)
 Communications - Jargon
Software engineering Vs
Computer
Science
System
Engineering
Need for Software Engineering