Professional Documents
Culture Documents
01 ch1 Introduction PDF
01 ch1 Introduction PDF
Engineering
!
Introduction
What is software?
Computer program and associated
documentation.
Aug-2014
SE. Introduction
Aug-2014
SE. Introduction
Attributes of good
software?
Good software should deliver the
required functionality and
performance to the user and
should be maintainable,
dependable and usable.
Aug-2014
SE. Introduction
Essential attributes of
good software
Product
characteristic
Description
Maintainability
Dependability
and security
Efficiency
Acceptability
Aug-2014
SE. Introduction
What is software
engineering?
Software engineering is an engineering
discipline that is concerned with all
aspects of software production
Not just technical process of
development. Also project
management and the development of
tools, methods etc. to support
software production.
Aug-2014
SE. Introduction
Fundamental software
engineering activities
software specification
customers and engineers define the software that is to be produced and the
constraints on its operation
software development
software is designed and programmed
software validation
software is checked to ensure that it is what the customer requires
software evolution
software is modified to reflect changing customer and market requirements.
Aug-2014
SE. Introduction
Fundamental software
engineering activities
Alternative:
defining the software development process to be used
managing the development project
describing the intended software product
designing the product
implementing the product
testing (the parts, integrating and whole) of the product
maintaining the product
Aug-2014
SE. Introduction
Aug-2014
SE. Introduction
Aug-2014
SE. Introduction
10
Other FAQs
Question
Answer
What is the difference between Computer science focuses on theory and fundamentals; software
s o f t w a r e e n g i n e e r i n g a n d engineering is concerned with the practicalities of developing and
computer science?
delivering useful software.
What is the difference between System engineering is concerned with all aspects of computer-based
software engineering and system systems development including hardware, software and process
engineering?
engineering. Software engineering is part of this more general
process.
What are the costs of software Roughly 60% of software costs are development costs, 40% are
engineering?
testing costs. For custom software, evolution costs often exceed
development costs.
What are the best software While all software projects have to be professionally managed and
engineering techniques and developed, different techniques are appropriate for different types of
methods?
system. For example, games should always be developed using a
series of prototypes whereas safety critical control systems require a
complete and analyzable specification to be developed. You cant,
therefore, say that one method is better than another.
What differences has the web The web has led to the availability of software services and the
made to software engineering?
possibility of developing highly distributed service-based systems.
Web-based systems development has led to important advances in
programming languages and software reuse.
Aug-2014
SE. Introduction
11
Software engineering
fundamentals
Some fundamental principles apply to all types of software
system, irrespective of the development techniques used:
Systems should be developed using a managed and understood
development process. Of course, different processes are used for
different types of software.
Dependability and performance are important for all types of
system.
Understanding and managing the software specification and
requirements (what the software should do) are important.
Where appropriate, you should reuse software that has already
been developed rather than write new software.
Aug-2014
SE. Introduction
12
Application types
Stand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection systems
Systems of systems
Aug-2014
SE. Introduction
13
UML
Why?
Communication effectively
Graphic annotation
Aug-2014
SE. Introduction
14
UML
Aug-2014
SE. Introduction
15
UML
Aug-2014
SE. Introduction
16
Software project
management
Activities involved in ensuring
software is delivered on time and on
schedule and in accordance with the
requirements (technical / nontechnical / budget) of the organisations
developing
and procuring the software.
Aug-2014
SE. Introduction
17
SE. Introduction
18
Risk
A risk is a probability that some
adverse circumstance will occur
Aug-2014
SE. Introduction
19
Risk
Risk
Staff turnover
Description
Experienced staff will leave the project before it is
finished.
Management
Project
There will be a change of organizational
change
management with different priorities.
Hardware
Project
Hardware that is essential for the project will not be
unavailability
delivered on schedule.
Requirements
Project and There will be a larger number of changes to the
change
product
requirements than anticipated.
Specification
Project and Specifications of essential interfaces are not
delays
product
available on schedule.
Size underestimate Project and The size of the system has been underestimated.
product
CASE tool
Product
CASE tools, which support the project, do not
underperformance
perform as anticipated.
Technology change Business
The underlying technology on which the system is
built is superseded by new technology.
Product
Business
A competitive product is marketed before the
competition
system is completed.
Aug-2014
Affects
Project
SE. Introduction
20
Risk
Consider each risk and develop a strategy to manage it
Avoidance strategies
The probability that the risk will arise is reduced;
Minimisation strategies
The impact of the risk on the project or product will be
reduced;
Contingency plans
If the risk arises, contingency plans are plans to deal with
that risk;
Aug-2014
SE. Introduction
21
Teamwork
Any work that needs teamwork?
Any work that needs individual
work?
Software development?
Aug-2014
SE. Introduction
22
Teamwork
Most software engineering is a group activity
The development schedule for most non-trivial software projects is
such that they cannot be completed by one person working alone.
SE. Introduction
23
Cost
Aug-2014
SE. Introduction
24
`
Experience-based techniques
The estimate of future effort requirements is based on the
managers experience of past projects and the application
domain. Essentially, the manager makes an informed
judgment of what the effort requirements are likely to be.
SE. Introduction
25
Method 1
A simply queue simulation 120-400 LoC
The (first release) Encounter game
4-15 queues + 30-90 additional components of comparable size
=> (30+4) x 120 to (90+15) x 400 = 5-42 KLoC
Use graphics costs 1.5 to 4 times more
=> 7.5 170 KLoC
Method 2
A good video game required 5-20 expert programmers for 1-2 years
We invert 1/10
Assume 5-25 LoC/h (fully tested code)
=> 1/10 x (5-25 lines/h) x (5-20 programmers) x (1-2 years) x (48-50 weeks/
year) x (35-60 hours/week) = 4.2-300 KLoC
Aug-2014
SE. Introduction
26
Effort in Person-months
Duration = c Effort d
= a KLOC b
= c ad KLOC bd
Software Project
2.4
1.05
2.5
0.38
Semidetached
3.0
1.12
2.5
0.35
3.6
1.20
2.5
0.32
Ex:
Effort
(person-month)
aK
LO
2.4
4.2
1.05
10
HI
2.4
300
1.05
1000
Duration (months)
Aug-2014
approx.
approx.
cP
LO
2.5
10
0.38
HI
2.5
1000
0.38
35
SE. Introduction
27
Software engineering
ethics
Ethics?
Aug-2014
SE. Introduction
28
Aug-2014
SE. Introduction
29
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 some 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.
Aug-2014
SE. Introduction
30
SE. Introduction
31
SE. Introduction
32
SE. Introduction
33
SE. Introduction
34
PUBLIC - Software engineers shall act consistently with the public interest.
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.
PRODUCT - Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
JUDGMENT - Software engineers shall maintain integrity and independence in their professional
judgment.
MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance.
PROFESSION - Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
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.
Aug-2014
SE. Introduction
35
Summary
Software engineering is an engineering discipline that is
concerned with all aspects of software production.
Essential software product attributes are maintainability,
dependability and security, efficiency and acceptability.
The high-level activities of specification, development,
validation and evolution are part of all software processes.
The fundamental notions of software engineering are
universally applicable to all types of system development.
Aug-2014
SE. Introduction
36
Summary
There are many different types of system and
each requires appropriate software
engineering tools and techniques for their
development.
The fundamental ideas of software
engineering are applicable to all types of
software system.
UML - language (communication effectively?)
Aug-2014
SE. Introduction
37
Summary
Project management is to ensure the
software to be developed as it is
required on schedule and within
budget
Risk
Planning
Cost estimation
Aug-2014
SE. Introduction
38
Summary
Software engineers have
responsibilities to the engineering
profession and society. They should not
simply be concerned with technical
issues.
Professional societies publish codes of
conduct which set out the standards of
behaviour expected of their members.
Aug-2014
SE. Introduction
39