SOFTWARE
ENGINEERING
CO3001
CHAPTER 1 - INTRODUCTION Anh Nguyen-Duc
Tho Quan-Thanh
Adapted from [Link] WEEK 1
TOPICS COVERED
Professional software development
What is meant by software engineering.
Ethical & sustainable software engineering
A brief introduction to ethical issues that affect software engineering.
CH1. INTRODUCTION
2
WHAT IS SOFTWARE?
Software =
Computer program(s)
+ associated
documentation
Software products
may be developed
for
a particular customer
(bespoken ) khac hag cu the
or a general market
(market driven)
thi truong chung, dinh huong thi truong
CH1. INTRODUCTION
3
SOFTWARE IS COMPLEX
complex: nhieu phan don gian lien quan den nhau
complicated: kho hieu hoac kho giai thich
Complex complicated
Complex = composed of many simple parts
related to one another
Complicated = not well understood, or explained
CH1. INTRODUCTION
4
TYPE OF SOFTWARE
CH1. INTRODUCTION
5
SOFTWARE ENGINEERING using appropriate theories and
methods to solve problems
bearing in mind organizational
and financial constraints.
ky sy phan mem la ky su ky luat co lien quan toi tat ca khia canh
cua san pham phan mem
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
6
WHO IS IN CHARGE FOR THE SPECIFICATION?
Product specification at initial stage and the changes later
Generic products
The software engineering team
Customized products
The customer
Agile value. Working software over
Comprehensive document
CH1. INTRODUCTION
7
GOOD SOFTWARE?
“Good” is a general attribute:
of a high quality or level
to be desired or approved of
Break-down “good” quality into required quality attributes:
performance
maintainable
dependable
usable
CH1. INTRODUCTION
8
IMPORTANCE OF SOFTWARE ENGINEERING
Quality can mean the difference between excellence and
disaster
Airbus A400M Atlas crash in 2015, 4 killed
IMPORTANCE OF SOFTWARE ENGINEERING
8/2016: Security breach with Bitcoin cost 72 mil. Usd lost in
market
SOFTWARE COSTS
Software costs ~ computer system costs
Costs to maintain > to develop
Software engineering is concerned with cost-effective software
development.
CH1. INTRODUCTION
11
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.
CH1. INTRODUCTION
12
IMPORTANCE OF SOFTWARE ENGINEERING
We need:
Reliability & trustworthy products
Delivering on time
Reusable
Cost effective in changing/evolution
More?
Aug 2019 CH1. INTRODUCTION
13
IMPORTANCE OF SOFTWARE ENGINEERING
A bridge from customer needs to programming implementation
Customer
Psofttware Engineer
First law of software engineering
Software engineer is willing to learn the problem domain
(problem cannot be solved without understanding it first)
14
FUNDAMENTAL SOFTWARE ENGINEERING ACTIVITIES
Aug 2019 CH1. INTRODUCTION
15
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
16
SOFTWARE DIVERSITY
Many different types of software system
Stand-alone
Transaction-based
Embedded system no universal set of
Batch processing
Entertainment software techniques
Modeling and simulation applicable to all!
System of systems
Software development is context-specific
Large companies
SME
Startups
In-house
Outsourcing
CH1. INTRODUCTION
17
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
18
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
19
SOFTWARE ENGINEERING ETHICS
Aug 2019 CH1. INTRODUCTION
20
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
21
SOFTWARE ENGINEERING AND SUSTAINABILITY
Aug 2019 CH1. INTRODUCTION
22
SOFTWARE ENGINEERING AND SUSTAINABILITY - EXAMPLE
Green Software Engineering is an emerging
discipline at the intersection of climate science,
software practices and architecture, electricity
markets, hardware and data centre design.
Green Software Engineering concerns the design,
development and operation of software-intensive
products in a way that reduces pollution, promotes
sustainability, and minimizes risk to human health and
the environment without sacrificing economic viability
and efficiency
Aug 2019 [Link] CH1. INTRODUCTION
23
SOFTWARE ENGINEERING AND SUSTAINABILITY - EXAMPLE
Carbon: Build applications that are carbon efficient.
Electricity: Build applications that are energy efficient.
Carbon Intensity: Consume electricity with the lowest carbon intensity.
Embodied Carbon: Build applications that are hardware efficient.
Energy Proportionality: Maximize the energy efficiency of hardware.
Networking: Reduce the amount of data and distance it must travel across
the network.
Demand Shaping: Build carbon-aware applications.
Measurement & Optimization: Focus on step-by-step optimizations that
increase the overall carbon efficiency.
Aug 2019 [Link] CH1. INTRODUCTION
24
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
25
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.
Sustainability is an emerging concern in all engineering
discipline, including software development and operation.
Aug 2019 CH1. INTRODUCTION
26