Introduction
BCS1043 Software Engineering
Faculty of Computing, UMPSA
@Rozlina Mohamed 2024/25(1)
2
Outlines
• Nature of software
• Nature of software engineering
• Software engineering ethics
@Rozlina Mohamed 2024/25(1) 3
Nature of Software
What is Software?
IEEE_Std_610.12-1990
Software is 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
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
BCS1043
6
Categories of Software Based 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 Software Based on the Execution Platform
Personal computer applications
Provides functions for the end-user.
Mobile apps
Almost the same as personal computer applications but rely more on touch interface.
Server-side apps
Runs on the server.
Browser scripts
Javascript and/or HTML5 code which runs together with server-side apps.
Firmware
© 6
Run on embedded systems.
Categories of Software Based 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
Sources of Software
BCS1043 9
@Rozlina Mohamed 2024/25(1) 10
Nature of Software Engineering
What is Software Engineering? 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
What is Software Engineering? Official Definitions
IEEE
Software engineering is the application of a systematic, disciplined, quantifiable approach
to the development, operation and maintenance, i.e., the application of engineering to
software
Boehm
Software engineering is the application of science and mathematics by which the capabilities
of computer equipment are made useful to man via computer programs, procedures and
associated documentation
Sommerville
Software engineering is concerned with the theories, methods and tools that are needed to
develop the software products in a cost effective way
© Muním
Zabidi
12
The Problem with Software
• 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
Fact about Software Engineering
• 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
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
Software Engineering vs Engineering
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
Software Engineering vs Computer 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
Hardware reliability follows the “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
Small-scale Vs Large-scale software 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
Problem of Scale
Development Methods
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
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
Size in LOC of some well-known products
22
The Mythical Man-Month
What is 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
Lines of communications
If there are n workers in a
project, 2
then there are n(n−1)
pairs of communication lines
[?].
Partitioning of Big Projects
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
Cost of Software Production
• Software costs more to
maintain than it does to
develop.
• Software engineering is
concerned with cost-effective
software development.
26
Cost of Software Errors
• 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
What are the key 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
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 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
@Rozlina Mohamed 2024/25(1) 30
Software Engineering Ethics
Professional and ethical responsibility
• 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.
Issues of professional responsibility
• 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.
Issues of professional responsibility
• 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).
ACM/IEEE Code of Ethics
• 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.
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.
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.
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.
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

The Introduction to Software Engineering

  • 1.
  • 2.
    @Rozlina Mohamed 2024/25(1) 2 Outlines •Nature of software • Nature of software engineering • Software engineering ethics
  • 3.
    @Rozlina Mohamed 2024/25(1)3 Nature of Software
  • 4.
    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
  • 7.
    Categories of SoftwareBased on the Execution Platform Personal computer applications Provides functions for the end-user. Mobile apps Almost the same as personal computer applications but rely more on touch interface. Server-side apps Runs on the server. Browser scripts Javascript and/or HTML5 code which runs together with server-side apps. Firmware © 6 Run on embedded systems.
  • 8.
    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
  • 9.
  • 10.
    @Rozlina Mohamed 2024/25(1)10 Nature of Software Engineering
  • 11.
    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
  • 12.
    What is SoftwareEngineering? Official Definitions IEEE Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance, i.e., the application of engineering to software Boehm Software engineering is the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures and associated documentation Sommerville Software engineering is concerned with the theories, methods and tools that are needed to develop the software products in a cost effective way © Muním Zabidi 12
  • 13.
    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
  • 22.
    Size in LOCof some well-known products 22
  • 23.
    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
  • 30.
    @Rozlina Mohamed 2024/25(1)30 Software Engineering Ethics
  • 31.
    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