An Introduction To Software Engineering Ecnomics
An Introduction To Software Engineering Ecnomics
Engineering Ecnomics
Ms. Iqra Ijaz
BS(SE) 7th Semester
Objectives
To introduce software engineering economics and
to explain its importance
Importance of 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 Gross National Product (GNP) in all
developed countries.
Programming Aspects
Software economics is the field that seeks to
enable significant improvements in software
design and engineering through economic
reasoning about product, process, program, and
portfolio and policy issues.
Economic aspects of software
engineering
Software engineering economics is about making
decisions related to software engineering in a
business context. Software engineering
economics provides a way to study the attributes
of software and software processes in a
systematic way that relates them to economic
measures.
Human relations aspects of software
engineering
Focusing on the different social and cognitive
(connected with thinking or conscious mental
processes) aspects of software development, the
book addresses topics such as teamwork, customer
- software-engineer relationships, and learning
processes in software development. These topics
are central to developers in understanding the
multifaceted nature of the process.
Software Trends
Progressive Web Apps. Progressive Web Apps
(PWA) lie somewhere between a web application
and a mobile app, giving users the most up-to-date
user experience seamlessly across devices.
AI-Driven Development
5G Proliferation
Immersive Technologies
Cloud Services
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 maintain than it does to
develop. For systems with a long life, maintenance
cost may be several times development costs.
Software engineering is concerned with cost-
effective software development.
FAQs about software engineering
What is software?
What is software engineering?
What is difference between software engineering
and computer science?
What is difference between software engineering
and system engineering?
What is a software process?
What is a software process model?
FAQs about software engineering
What are the costs of software engineering?
What are software engineering methods?
What is CASE?
What are the attributes of good software?
What are the key challenges facing software
engineering?
What is Software?
Computer programs and associated documentation
such as requirements, design models and user manuals.
Software product may be developed for a particular
customer or may be developed for a general market.
Software products may be
Generic (for a range of different customers)
Bespoke (for a single customer according to their need)
New software can be created by developing new
programs, configuring generic software systems or
reusing existing software.
What is Software Engineering?
Software Engineering is an engineering discipline
that is concerned with all aspects of software
production.
Software Engineers should adopt a systematic and
organized approach to their work and use
appropriate tools and techniques depending on the
problem to be solved, the development constraints
and the resources available.
What is difference between software
engineering and computer science?
Computer Science is concerned with theory and
fundamentals.
Computer Science theories are still insufficient to
act as a complete foundation for software
engineering.
Software Engineering is concerned with the
practicalities of developing and delivering useful
software.
What is difference between software
engineering and system engineering?
System Engineering is concerned with all aspects
of computer-based systems development including
hardware, software and process engineering.
System Engineers are involved in system
specification, architectural design, integration and
deployment.
Software engineering is part of this process
concerned with developing the software
infrastructure, control, application and database in
the system.
What is a software process?
A set of activities whose goal is the development
or evolution of software.
Generic activities in all software processes are:
Specification (SRS) – what the system should do
and its development constraints.
Development – production of software system
Validation – checking the software as what the
customer wants.
Evolution – changing the software in response to
changing demands.
What is a software process model?
Generic Process Models
Waterfall
Iterative development
Component-based software engineering
Spiral
What are the costs of software
engineering?
Roughly 60% of costs are development costs, 40%
are testing costs, for software evolution (software
changing) costs often exceed development costs.
Costs vary depending on the types of the system
being developed and the requirements of the
system attributes such as performance and system
reliability.
Distribution of costs depends on the development
model that is used.
What are software engineering methods?
Structured approaches to software development which
include system models, notations, rules, design advice
and process guidance.
Model description:
Description of graphical models which should be produced.
Rules:
Constraints applied to system models.
Recommendations:
Advice on good design practice
Process guidance:
What activities to follow.
What is CASE?
Result in high-quality & defect-free software's.
Software systems that are intended to provide
automated support for software process activities.
CASE systems are often used for method support.
Upper-CASE
Tools to support the early process activities of
requiremnets and design
Lower-CASE
Tools to support later activities such as programming,
debugging and testing
E.g. UML, Front page
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.
Maintainability
Software must evolve to meet changing needs
Dependability
Software must be trustworthy
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.