Lecture 1 Part One- Software Engineering
Lecture 1 Part One- Software Engineering
Lecture 1 Part One- Software Engineering
Introduction
Topics
• Introduction to Software Engineering
– What is Software?
– What is Software Engineering?
– Why Software Engineering?
– Why Software Engineering is Difficult?
– Software Attributes.
– What affects software engineering?
– What are Software Fundamental Activities?
– Software engineering ethics
2
What is software?
• Computer programs and associated documentation.
• Software products may be developed for a
particular customer or may be developed for a
general market.
• Software products may be
– Generic - developed to be sold to a range of different
customers e.g. PC software such as Excel or Word.
– Custom - developed for a single customer according to
their specification.
• New software can be created by developing a new
programs, configuring generic software systems or reusing
existing software. 3
What is software?
• Generic products These are stand-alone
systems that are produced by a
development organization and sold on the
open market to any customer who is able to
buy them.
• Examples of this type of product include
software for PCs such as databases, word
processors, drawing packages, and project-
management tools.
4
What is software?
• Customized (or bespoke) products - These
are systems that are commissioned by a
particular customer.
• A software contractor develops the
software especially for that customer.
• Examples of this type of software include
control systems for electronic devices,
systems written to support a particular
business process, and air traffic control
systems. 5
What is Software Engineering?
6
What is Software Engineering?
• 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.
• Engineering discipline, Engineers make things
work.
• All aspects of software production, Software
engineering is not just concerned with the
technical processes of software development.
– It also includes activities such as software project management and the
development of tools, methods, and theories to support software production. 7
What is Software Engineering?
• Practical application of computer science,
management techniques, and other skills to:
design, construct, and maintain software
and its documentation
9
What is the difference between software
engineering and computer science?
12
Why Software Engineering?
• Software affects nearly every aspect
of our everyday lives and has become
pervasive (universal) in our commerce,
our culture, and our everyday
activities.
• Software can have huge impact in any
aspect of our society.
13
Why 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 GNP in all developed
countries. 14
Why Software Engineering?
15
Why Software Engineering?
• Where can we find software?
• Some popular ones…
16
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 to maintain than it does
to develop. For systems with a long life,
• maintenance costs may be several times
development costs.
• Software engineering is concerned with cost
effective software development. 17
What are the costs of software
engineering?
• Roughly 60% of costs are development costs,
40% are testing costs. For custom software,
evolution costs often exceed development
costs.
• Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
system reliability.
• Distribution of costs depends on the
development model that is used.
18
Why Software Engineering is Difficult?
20
Why Software Engineering is Difficult?
– Maintainability
– Dependability and security
– Efficiency
– Acceptability
22
Software Attributes
• Maintainability
Software should be written in such a way so that it can
evolve to meet the changing needs of customers. This is a
critical attribute because software change is an inevitable
requirement of a changing business environment
• Acceptability
Software must be acceptable to the type of users
for which it is designed. This means that it must be
understandable, usable, and compatible with other
systems that they use. 24
What affects software engineering?
27
What are Software Fundamental Activities?
• Software evolution
The software is modified to reflect changing
customer and market requirements.
1. Confidentiality
2. Competence
3. Intellectual property rights
4. Computer misuse
31
Software engineering ethics
• Confidentiality
A Software Engineer should normally respect the
confidentiality of your employers or clients
irrespective of whether or not a formal
confidentiality agreement has been signed.
• Competence
A Software Engineer should not misrepresent your
level of competence. You should not knowingly
accept work that is outside your competence.
33
Software engineering ethics
34
Software engineering ethics
• Computer misuse
A Software Engineer should not use your technical
skills to misuse other people’s computers.
35
IEEE Computer Society Code of Ethics
41
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 42
Effort, Software Size, & Complexity
43
Effort, Software Size, & Complexity
44
Key points
46
Key points