01 - Ch1 Introduction
01 - Ch1 Introduction
ENGINEERING
CHAPTER 1 -
INTRODUCTION
WEEK 1
SOFTWARE ENGINEERING
CH1. 2
INTRODUCTION
SOFTWARE using appropriate theories and
ENGINEERING methods to solve problems
bearing in mind organizational
and financial constraints.
Examples?
CH1. 4
INTRODUCTION
WHO IS IN CHARGE FOR THE
SPECIFICATION?
Product specification at initial stage and the
c hanges later
Generic products
Who else? What roles?
The software developer - Marketing department?
- Customer supporter?
Customized products - …
The customer
CH1. 5
INTRODUCTION
GOOD
SOFTWARE?
Attributes of good software:
deliver required functionality
performance
maintainable
dependable
usable
CH1. 6
INTRODUCTION
SOFTWARE
COSTS
Software costs ~ computer system costs
Costs to maintain > to develop
CH1. 7
INTRODUCTION
SOME FAQ S ABOUT SOFTWARE
ENGINEERING
Question Answer
What is the difference between Computer science focuses on
software engineering and theory and fundamentals; software
computer science? engineering is concerned with the
practicalities of developing and
delivering useful software.
What is the difference between System engineering is concerned
software engineering and system with all aspects of computer-based
engineering? systems development including
hardware, software and process
engineering. Software engineering
is part of this more general
process.
CH1. 8
INTRODUCTION
IMPORTANCE OF SOFTWARE
ENGINEERING
We need:
Reliability & trustworthy products
Delivering on time
Reusable
Cost effective in changing/evolution
More?
CH1. 9
INTRODUCTION
FUNDAMENTAL SOFTWARE
ENGINEERING ACTIVITIES
Software specification
Define the software specification and constraints
Software development
Design and program the software
Software validation
Check to ensure that the software is what the customer
requires.
Software evolution
Modify the software to reflect the c hange
CH1. 10
INTRODUCTION
GENERAL ISSUES THAT AFFECT
MOST SOFTWARE
Heterogeneity
Increasingly, systems are required to operate as
distributed systems across networks that include different
types of computer and mobile devices.
Business and social c hange
Business and society are changing incredibly quickly as
emerging economies develop and new technologies
become available. They need to be able to change their
existing software and to rapidly develop new software.
Security and trust
As software is intertwined with all aspects of our lives, it is
essential that we can trust that software.
CH1. 11
INTRODUCTION
SOFTWARE ENGINEERING
DIVERSITY
Many different types of software system
➔ no universal set of software techniques applicable
to all
Application types
- Stand-alone
- Transaction-based
- Embedded system
- Batch processing
- Entertainment
- Modeling and simulation
- Data collection
- System of systems
CH1. 12
INTRODUCTION
SOFTWARE ENGINEERING
FUNDAMENTALS
Some fundamental principles apply to all types
of software system:
Use a managed and understood development process
Consider dependability and performance
Understand and manage the software specification
and requirements
Try reuse software
CH1. 13
INTRODUCTION
SOFTWARE
ENGINEERING ETHICS
Ethics?
(Oxford dictionary) Moral principles that govern a
person’s behaviour or the conducting of an activity.
CH1. 14
INTRODUCTION
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.
CH1. 15
INTRODUCTION
IEEE CODE OF
ETHICS
1. to accept responsibility in making decisions consistent
with the safety, health and welfare of the public, and
to disclose promptly factors that might endanger the
public or the environment;
2. to avoid real or perceived conflicts of interest
whenever possible, and to disclose them to affected
parties when they do exist;
3. to be honest and realistic in stating claims or estimates
based on available data;
4. to reject bribery in all its forms;
5. to improve the understanding of tec hnology, its
appropriate application, and potential consequences;
CH1. 16
INTRODUCTION
IEEE CODE OF ETHICS
(CONT.)
6. to maintain and improve our technical competence and to
undertake technological tasks for others only if qualified
by training or experience, or after full disclosure of
pertinent limitations;
7. to seek, accept, and offer honest criticism of technical
work, to acknowledge and correct errors, and to credit
properly the contributions of others;
8. to treat fairly all persons regardless of such factors as
race, religion, gender, disability, age, or national origin;
9. to avoid injuring others, their property, reputation, or
employment by false or malicious action;
10. to assist colleagues and co-workers in their professional
development and to support them in following this code of
ethics.
CH1. 17
INTRODUCTION
ACM CODE OF ETHICS AND
PROFESSIONAL CONDUCT
1.1 Contribute to society and human well-being.
1.2 Avoid harm to others.
1.3 Be honest and trustworthy.
1.4 Be fair and take action not to discriminate.
1.5 Honor property rights including copyrights and
patent.
1.6 Give proper credit for intellectual property.
1.7 Respect the privacy of others.
1.8 Honor confidentiality.
CH1. 18
INTRODUCTION
ACM SE CODE OF ETHICS AND
PROFESSIONAL PRACTICE
(SHORT VERSION)
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.
CH1. 19
INTRODUCTION
SUMMA
RY
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.
CH1. 20
INTRODUCTION
SUMMARY
(CONT.)
There are many different types of system and eac h
requires appropriate software engineering tools
and techniques for their development.
The fundamental ideas of software engineering are
applicable to all types of software system.
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.
CH1. 21
INTRODUCTION
READING Self-study
MORE
CH1. 22
INTRODUCTION
DECIDE INITIAL TEAM
ISSUES
Set the meeting agenda and time limits.
Choose the team leader (leadership strategy?).
Decide how the team will communicate.
Identify the customer.
The party or parties who want this application.
Get an understanding of the project in general
terms.
Don’t be embarrassed if project seems too vague to
you.
Probe until you are comfortable.
CH1. 23
INTRODUCTION
SET TEAM
EXPECTATIONS
Get everyone’s commitment to taking required time
Define an expected average number of hours per week
If not forthcoming:
Industrial: alert management
Academic: inform instructor; implement written mutual evaluations
Gather dates of planned absences
Choose team emphasis: accomplishment / learning
Accomplishment (capable product): get a good mix of
leadership, technical, writing, customer relations
Learning: sacrifice accomplishment by allowing members to
experience new activities.
Understand manager’s / instructor’s emphasis.
CH1. 24
INTRODUCTION
SPECIFY HOW THE TEAM WILL
COMMUNICATE
General policy:
if in doubt, communicate. Redundancy is OK!
Acknowledgement:
Team members should acknowledge all electronic communication specifically targeted to them,
whether asked to acknowledge or not. Senders should follow up on all significant communication that
is not acknowledged.
CH1. 25
INTRODUCTION