CS352 Software Engineering (Software Engineering in the Small)
CHAPTER 1: INTRODUCTION TO SOFTWARE ENGINEERING · chapter 1: introduction to software engineering...
Transcript of CHAPTER 1: INTRODUCTION TO SOFTWARE ENGINEERING · chapter 1: introduction to software engineering...
CHAPTER 1:
INTRODUCTION
TO SOFTWARE
ENGINEERING
DKT 311
SOFTWARE
ENGINEERING
1
Prayer
Allahumma Ya Alim Ya Hakim Ya Rashid,
kurniakanlah kami dengan ilmu,
kepintaran dan kebijaksanaan kepada
kami supaya kami dapat menggunakan
ilmuMu ke arah kebaikan.
Allahumma Ya Ba’its, kurniakan kami
dengan semangat untuk menuntut
ilmuMu
DKT 311 : SOFTWARE ENGINEERING 2
Attendance & Class
implementation
Compulsory for every class & lab session
Online either synchronous or asynchronous
Asynchronous – guided lesson using Google
Classroom
DKT 311 : SOFTWARE ENGINEERING 3
Coursework
Assignment – 10%
Laboratory Task / Report – 20%
UMLet
Mid-term Examination – 20%
DKT 311 : SOFTWARE ENGINEERING 4
Course Outcome
Define and describes the software engineering terms and concepts
Explain the software process, management, validation and verification
Analyze the problem based on software engineering process models and specification document
Apply software engineering techniques for engineering problem
DKT 311 : SOFTWARE ENGINEERING 5
Lab
Install : UMLet software
Implementation : online via Google meet
(for the tutorial/assist the lab report)
6
Discussion / consultation
We can set a meeting via Google meet /
WA call / message
7
8
INTRODUCTION TO SOFTWARE ENGINEERING
9
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
Bespoke (custom) - developed for a single customer
according to their specification
DKT 311 : SOFTWARE ENGINEERING
What is Engineering?
More explanation in the video
https://youtu.be/bipTWWHya8A
Engineering discipline
Using appropriate theories and methods to
solve problems bearing in mind
organizational and financial constraints
11
12
What is software engineering?
Software engineering is an engineering discipline which is concerned with all aspects of software production
Software engineers should adopt:
a systematic and organized approach to their work
use appropriate tools and techniques depending on the problem to be solved
Engineers make thing work, they apply theories, methods and tools where these are appropriate.
DKT 311 : SOFTWARE ENGINEERING
13
Software engineering is: the systematic use of
many disciplines, tools, and resources for the
practical application.
Engineering is the art and science of managing
engines for practical application.
To manage these engines, we have to consider
all aspects of the intended applications, such
as operational concepts, requirements, design, development, and maintenance.
What is software engineering?
DKT 311 : SOFTWARE ENGINEERING
Why we need Software Engineering?
Please watch the video:
https://www.youtube.com/watch?v=R3Nz
Tt0BTWE
14 DKT 311 : SOFTWARE ENGINEERING
15
Back in 1970 less than 1 % of the public could
have intelligently described what computer
software meant.
Today most of the public at large feel that they
understand software. But do they?
In order to answer this question we need to
examine the characteristics of software:
1. software is developed or engineered, it is not
manufactured
2. software does not wear out.
Why we need Software Engineering?
DKT 311 : SOFTWARE ENGINEERING
16
Not like hardware which exhibits relatively
high failure rate early in its life, then defects
are corrected and failure rate drops to a
steady level then later on the failure rates rise
again as the hardware components suffer
from the cumulative affect of dust, vibration
…etc.
The software on the other hand, the failure
rates is due to side effects to changes and
modifications.
Why we need Software Engineering?
DKT 311 : SOFTWARE ENGINEERING
17
Finally even the industry is moving toward
component based assembly, most
software continues to be custom built.
Why we need Software Engineering?
DKT 311 : SOFTWARE ENGINEERING
18
What are the key challenges facing in software engineering?
Coping with legacy systems ( old, valuable systems must be maintained and updated), coping with increasing diversity and coping with demands for reduced delivery times.
Heterogeneity, systems are required to operate as distributed across networks that include a different type of hardware and software
Delivery, there is increasing pressure for faster delivery of software
DKT 311 : SOFTWARE ENGINEERING
Software engineering diversity
There are many different types of software
system and there is no universal set of
software techniques that is applicable to
all of these.
The software engineering methods and
tools used depend on the type of
application being developed, the
requirements of the customer and the
background of the development team.
Chapter 1 Introduction 19
Users
Those who use the software
Customers
Those who pay for the software
Software developers
Those who develop, design and implement the
software / codes.
Development Managers
Those who govern the software’s project
management
All four roles can be fulfilled by the same
person
Software Engineering Stakeholder
DKT 311 : SOFTWARE ENGINEERING
Usability Users can learn it and fast and get their job done easily
Efficiency
It doesn’t waste resources such as CPU time and memory
Reliability It does what it is required to do without failing
Maintainability It can be easily changed
Reusability
Its parts can be used in other projects, so reprogramming is not needed
Software Engineering Quality
DKT 311 : SOFTWARE ENGINEERING
BUT; The different qualities can conflict Increasing efficiency can reduce
maintainability or reusability
Increasing usability can reduce efficiency
Setting objectives for quality is a key
engineering activity design to meet the objectives
Avoids ‘over-engineering’ which wastes money
Optimizing is also sometimes necessary
E.g. obtain the highest possible reliability
using a fixed budget
Software Engineering Quality
DKT 311 : SOFTWARE ENGINEERING
Confidentiality respect the confidentiality of your employers or
clients(agreement)
Competence should not knowingly accept work that is outside your
competence.
Intellectual property rights be aware the use of intellectual property such as patents and
copyright.
ensure that the intellectual property of employers and clients is protected.
Computer misuse not use your technical skills to misuse other people’s computers.
Computer misuse ranges from relatively trivial (game playing on an employer’s machine) to extremely serious (dissemination of viruses or other malware).
Software Engineering Ethics
DKT 311 : SOFTWARE ENGINEERING
Software crisis; Poor software design.
Doesn't meet their expectations.
Never delivered or late delivered.
Over budget.
Software bugs.
Software engineering methods is to; To meet expectations.
Avoid crisis.
Software Engineering Problems
DKT 311 : SOFTWARE ENGINEERING
Frequently asked questions about
software engineering Question Answer
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.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software
engineering activities?
Software specification, software development, software
validation and software evolution.
What is the difference between software
engineering and computer science?
Computer science focuses on theory and fundamentals;
software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software
engineering and system engineering?
System engineering is concerned with all aspects of
computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.
DKT 311 : SOFTWARE ENGINEERING 25
Frequently asked questions
about software engineering Question Answer
What are the key challenges facing
software engineering?
Coping with increasing diversity, demands for reduced
delivery times and developing trustworthy software.
What are the costs of software
engineering?
Roughly 60% of software costs are development costs,
40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering
techniques and methods?
While all software projects have to be professionally
managed and developed, different techniques are
appropriate for different types of 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 can’t, therefore, say that one method is better than
another.
What differences has the web made to
software engineering?
The web has led to the availability of software services
and the possibility of developing highly distributed service-
based systems. Web-based systems development has led
to important advances in programming languages and
software reuse.
DKT 311 : SOFTWARE ENGINEERING 26