SOFTWARE
ENGINEERING
CO3001
CHAPTER 1 - INTRODUCTION Thang Bui
(bhthang@[Link])
WEEK 1
TOPICS COVERED
Professional software development
What is meant by software engineering.
Software engineering ethics
A brief introduction to ethical issues that affect
software engineering.
Aug 2019 CH1. INTRODUCTION 2
SOFTWARE ENGINEERING using appropriate theories and
methods to solve problems
bearing in mind organizational
and financial constraints.
Software engineering is an engineering
discipline that is concerned with all aspects of
software production
technical process of development, project
management , the development of tools,
methods etc.
Aug 2019 CH1. INTRODUCTION 3
WHAT IS SOFTWARE?
Computer programs and associated
documentation.
Software products may be developed for
a particular customer (Customized products)
or a general market (Generic products)
Examples?
Aug 2019 CH1. INTRODUCTION 4
WHO IS IN CHARGE FOR THE SPECIFICATION?
Product specification at initial stage and the
changes later
Generic products
The software developer Who else? What roles?
- Marketing department?
- Customer supporter?
Customized products - …
The customer
Aug 2019 CH1. INTRODUCTION 5
GOOD SOFTWARE?
Attributes of good software:
deliver required functionality
performance
maintainable
dependable
usable
Aug 2019 CH1. INTRODUCTION 6
SOFTWARE COSTS
Software costs ~ computer system costs
Costs to maintain > to develop
Software engineering is concerned with cost-
effective software development.
Aug 2019 CH1. INTRODUCTION 7
SOME FAQS 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.
Aug 2019 CH1. INTRODUCTION 8
IMPORTANCE OF SOFTWARE ENGINEERING
We need:
Reliability & trustworthy products
Delivering on time
Reusable
Cost effective in changing/evolution
More?
Aug 2019 CH1. INTRODUCTION 9
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 change
Aug 2019 CH1. INTRODUCTION 10
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 change
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.
Aug 2019 CH1. INTRODUCTION 11
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
Aug 2019 CH1. INTRODUCTION 12
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
Aug 2019 CH1. INTRODUCTION 13
SOFTWARE ENGINEERING ETHICS
Ethics?
(Oxford dictionary) Moral principles that govern a
person’s behaviour or the conducting of an activity.
Fundamental Software engineering ethics
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
but involves following a set of principles that are morally
correct.
Aug 2019 CH1. INTRODUCTION 14
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 2019 CH1. INTRODUCTION 15
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 technology, its
appropriate application, and potential consequences;
Aug 2019 CH1. INTRODUCTION 16
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.
Aug 2019 CH1. INTRODUCTION 17
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.
Aug 2019 CH1. INTRODUCTION 18
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.
Aug 2019 CH1. INTRODUCTION 19
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 2019 CH1. INTRODUCTION 20
SUMMARY (CONT.)
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.
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 2019 CH1. INTRODUCTION 21
READING MORE Self-study
Aug 2019 CH1. INTRODUCTION 22
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.
Aug 2019 CH1. INTRODUCTION 23
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.
Aug 2019 CH1. INTRODUCTION 24
SPECIFY HOW THE TEAM WILL COMMUNICATE
General policy:
if in doubt, communicate. Redundancy is OK!
Usual Meeting place and time
Alternative meeting
Standards:
The MS WORD is used for documenting
E-mail should be via any compatible Yahoo email (especially for attachments)
Preferred mode of electronic communication:
Ex: Unless a communication is of very limited interest to the group, it should be posted to the group
site, [Link] with automatic notification to every member. The “subject” format should be Attn.
<name(s)>: subject matter.
Alternative mode of electronic communication:
For 1-1 communication of very limited group interest, members will use e-mail and/or telephone.
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.
Aug 2019 CH1. INTRODUCTION 25