What is Software?
IEEE_Std_610.12-1990
Softwareis the collection of computer programs, procedure rules
and associated documentation and data.
Documentatio
n
Operating
procedure
s
Program
s
Software = Program + Documentation + Operating
procedures
4
5.
Importance of Software
•Software affects every aspect of our lives
• Already many systems are connected to the cloud
• With IR 4.0 and IoT, the number of interconnected devices will only
rise
• The percentage of software as part of system cost is also rising
100%
Hardware
%
compute
r cost
Software
0%
Year 5
6.
BCS1043
6
Categories of SoftwareBased on the Goal
Software
System
software
Windows Linux
System
development
software
Netbeans
Java
programming
language
Utility software
GMail
Google
Chrome
Figma,
Microsoft
Word
Moodle
Application
software
Kalam
UMPSA E-
Community
Categories of SoftwareBased on Development Approach
Generic
• Designed for a broad customer market.
• Very common requirements.
• Sometimes called shrink-wrapped software.
• Example: Microsoft Office
Custom
• Designed for a single customer.
• Unique requirements that cannot be satisfied by generic
products.
• Sometimes called bespoke software.
• Example: Airbus A320 flight control
8
What is SoftwareEngineering? Layman’s Definition
Sofware Engineering
Science and art of building
significant software that are:
• on time
• on budget
• with acceptable performance
Cheap
Fast
Good
Pricey Too
late
LOL
Bad
11
The Problem withSoftware
• Dependence on software is high & rising
• Need for highly reliable software
• But much software has low quality in terms of
• Reliability
• Cost to produce
• Time to deliver
• Levels of satisfaction is far below other products e.g. buildings, cars
• We are in a perpetual ‘software crisis’
• We need to have a way to engineer software to have the same quality as other
products. Move from ad hoc, unpredictable software development towards a
systematic one.
13
14.
Fact about SoftwareEngineering
• Most development work is evolution, based on previous work
• Software Engineering tries to apply well understood techniques in a organized
and disciplined way
• Many well-accepted practices have been formally standardized e.g. by the IEEE
or ISO
• Software engineering techniques are needed because large systems
cannot be completely understood by one person
• Teamwork and co-ordination are required
• The challenge: to divide the work and ensure the finished products work
properly
14
15.
15
Software is designed,not manufactured Costs are concentrated in
engineering, not manufacturing
Software is flexible This can both good and bad
Most software is custom-built Can’t be built using 100% reusable
components, like a car
Software lasts a long time Unlike other products
Software doesn’t wear out But changes in users’ needs and environment require
software maintenance
oftware Engineering is Different Compared to other engineering products
16.
Software Engineering vsEngineering
Issue Software Engineering Engineering
Foundations Computer science, information Science, math, empirical
knowledge science, discrete math
Cost Software engineering and consulting In some projects, manufacturing
costs are
costs are often more than the half substantially higher
than engineering cost total cost
Replication
Trivial
Some systems require less development effort
but more attention to manufacturing issues
Innovation New ideas are welcomed Untested innovations are limited
Age 50 years old thousands of
years
Title Self-appointed In many places, it is illegal to call
yourself an engineer without specific
accreditation
Management Few software engineers
manage anyone
Some engineers manage
construction, manufacturing or
maintenance crews
16
17.
Software Engineering vsComputer Science
Issue Software Engineering Computer
Science
Ideal Constructing software applications
for real-world use today
Finding eternal truths about problems
and algorithms for posterity
Results Working applications
Correctness of algorithms,
computational complexity
Additional knowledge Domain knowledge Mathematics
Budgets/schedules Fixed Open-ended
Notable personalities Barry Boehm, Fred Brooks, Dan Bricklin Edgar Dijkstra, Donald Knuth, Alan
Turing
Practitioners A few million Less than 100k
worldwide
17
18.
Hardware reliability followsthe “bath-tub curve”.
Software doesn’t follow this pattern.
Failure
rate
Time
Burn
in
Useful life Wear out
Hardware
.
Failure
rate
Time
Test/Debug Useful life Obsolescence
Upgrade
Upgrade
Upgrade
Software
.
18
Software Engineering is Different
19.
Small-scale Vs Large-scalesoftware projects
Programming-in-the-small
• Programming is done by one
person.
• Activity is short-lived.
• Problem is small enough for one
person
to
master.
Programming-in-the-Large
• Real-world software fall in this
category.
• Team consists coders, system
engineers,
tester &
customers.
• Software may be split into 100’s
of
modules, each with similar complexity
to the one on the left.
• Modules must interface with
other
modules.
• Changes in a module may affect
other
modules
.
19
20.
Problem of Scale
DevelopmentMethods
Formal
Project
Management
Informal
Inform
al
Formal
Small
Project
s
Large
Comple
x
Project
Big projects require:
• Formal methods of development
• Formal methods of project
management.
• Abstraction skills
• Communications skills.
20
21.
Measuring the Effort
•Cost of developing software is generally measured in terms of person-months of
effort spent in development.
• Lines of code (LOC) is commonly used to measure productivity.
• Programmer Productivity = 10 to 20 lines of code a day
• Numerous studies have found 10:1 differences in productivity and quality
among individuals and even among teams
21
The Mythical Man-Month
Whatis the man-month?
• Cost varies as the product of the number men and the number of months
• Progress does not
• Hence the man-month as a unit for measuring the size of a job is a dangerous
and deceptive myth
• It implies that men and months are interchangeable
23
24.
Lines of communications
Ifthere are n workers in a
project, 2
then there are n(n−1)
pairs of communication lines
[?].
25.
Partitioning of BigProjects
Table: IBM productivity in lines of code
per programmer per month [?].
Project size
(man/
months)
Productivity
(lines of
code/month)
1
10
100
1000
439
220
110
55
Table: Productivity plummets as
interactions increase [?].
Interations Productivity
Very
few
Some
Many
10,000 LoC/man-
year
5,000 LoC/man-year
1,500 LoC/man-year
• Programmer productivity plummets on big systems, mostly because of
interactions required between team members [?].
Brook’s Law
Adding people to a late project makes it later [?].
25
26.
Cost of SoftwareProduction
• Software costs more to
maintain than it does to
develop.
• Software engineering is
concerned with cost-effective
software development.
26
27.
Cost of SoftwareErrors
• Software errors cost the U.S. economy $60
billion annually in rework, lost productivity, and
actual damages.
• Software costs often dominate computer
system costs (this we already know)
• Software costs more to maintain than to
develop.
• For systems with a long life, maintenance
costs may be several times development
costs.
• Much much cheaper to catch bugs early!
27
28.
What are thekey challenges facing software
engineering?
• Coping with legacy systems, coping with increasing diversity and coping with
demands for reduced delivery times
• Legacy systems
• Old, valuable systems must be maintained and updated
• Heterogeneity
• Systems are distributed and include a mix of hardware and software
• Delivery
• There is increasing pressure for faster delivery of software
29.
What are theattributes of good software?
• The software should deliver the required functionality and performance to the user and
should be maintainable, dependable and usable
• Maintainability
• Software must evolve to meet changing needs
• Dependability
• Software must be trustworthy
• Efficiency
• Software should not make wasteful use of system resources
• Usability
• Software must be usable by the users for which it was designed
Professional and ethicalresponsibility
• Software engineering involves wider responsibilities than
simply the application of technical skills
• Software engineers must behave in an honest and
ethically responsible way if they are to be respected as
professionals
• Ethical behaviour is more than simply upholding the law.
32.
Issues of professionalresponsibility
• Confidentiality
• Engineers should normally respect the confidentiality of their
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
• Competence
• Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is outwith their
competence.
33.
Issues of professionalresponsibility
• Intellectual property rights
• Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They should be
careful to ensure that the intellectual property of employers and
clients is protected.
• Computer misuse
• Software engineers should not use their technical skills to misuse
other people’s computers. Computer misuse ranges from relatively
trivial (game playing on an employer’s machine, say) to extremely
serious (dissemination of viruses).
34.
ACM/IEEE Code ofEthics
• The professional societies in the US have cooperated to produce
a code of ethical practice.
• Members of these organisations sign up to the code of practice
when they join.
• The Code contains eight Principles related to the behaviour of
and decisions made by professional software engineers, including
practitioners, educators, managers, supervisors and policy
makers, as well as trainees and students of the profession.
35.
Code of ethics- principles
• 1. PUBLIC
• Software engineers shall act consistently with the public interest.
• 2. CLIENT AND EMPLOYER
• Software engineers shall act in a manner that is in the best interests of their client
and employer consistent with the public interest.
• 3. PRODUCT
• Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
36.
Code of ethics- principles
• 4. JUDGMENT
• Software engineers shall maintain integrity and independence in their
professional judgment.
• 5. MANAGEMENT
• Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software
development and maintenance.
• 6. PROFESSION
• Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
37.
Code of ethics- principles
• 7. COLLEAGUES
• Software engineers shall be fair to and supportive of their colleagues.
• 8. SELF
• Software engineers shall participate in lifelong learning regarding the practice of
their profession and shall promote an ethical approach to the practice of the
profession.
38.
Typical Ethical dilemmas
•Disagreement in principle with the policies of senior
management
• Your employer acts in an unethical way and releases a safety-
critical system without finishing the testing of the system
• Participation in the development of military weapons systems
or nuclear systems without the authorization of government
authorities