Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 29

School of Science and Engineering

(SSE)

CSC-3324
Software Engineering I

Chapter 1:
General Background & Definitions
(~3hours / 1Week)

Dr. Driss Kettani


Menu…

 Software Engineering: What & Why …

 Software Process vs. Software Product …

 Software Engineers Ethic …

Software Engineering I / Prof. Driss Kettani / Spring 2021


General Context / Introduction
 Software Industry has evolved steadily from its founding days in
the 1940s until nowadays…
 It played several important roles throughout history in different
aspects…
 With the growing usage of Software in big industries (in the 60s
and 70s), Major problems appeared  Software Crisis…
 Specifications AND (Time + Budget)…
 Birth of Software Engineering… Models and methodologies to
elaborate Software Applications…

Software Engineering is not Software Development !


Software Engineering I / Prof. Driss Kettani / Spring 2021
Why do we need Software Engineering ?

 Today, Software has become an important pillar of the 21st


Century, in almost all aspects of life… Software is just
everywhere!
 OUR Dependency/Reliance on Software is extremely high… Will
be higher and higher…
 Yet, Software Engineering is a young discipline, and is still
developing in different directions…
 Mobile Computing, Agile development, cloud computing, IOT, AI,
Big data, etc…

Software Engineering I / Prof. Driss Kettani / Spring 2021


Why do we need Software Engineering ?
  2013 2013 2014 2014 2015 2015
Spending Growth Spending Growth Spending Growth
(%) (%) (%)
Devices 677 1.1 685 1.2 725 5.8

Data Center 140 -0.1 140 0.4 144 2.9

E/se Software 300 5.1 321 6.9 344 7.3

IT Services 932 0.0 967 3.8 1,007 4.1

Telecom Services 1,624 -1.2 1,635 0.7 1,668 2.0

Overall IT 3,673 0.0 3,749 2.1 3,888 3.7

Worldwide IT Spending Forecast (Billions of U.S. Dollars)


Source: Gartner (June 2014) 

Software Engineering I / Prof. Driss Kettani / Spring 2021


Why do we need Software Engineering ?
2020 2021 2022
2020 2021 2022
Growth Growth Growth
Spending Spending Spending
(%)   (%)   (%)  

Data Center
178,466 2.5 191,648 7.4 201,659 5.2
Systems

Enterprise
529,028 9.1 598,957 13.2 669,114 11.7
Software

Devices 696,990 -1.5 793,973 13.9 800,172 0.8


IT Services 1,071,281 1.7 1,176,676 9.8 1,277,228 8.5

Communicat
ions 1,396,287 -1.4 1,444,980 3.5 1,481,878 2.6
Services

Overall IT 3,87 0.9 4,21 8.6 4,430 5.3

Worldwide IT Spending Forecast (Billions of U.S. Dollars)


Source: Gartner (July 2021) 

Software Engineering I / Prof. Driss Kettani / Spring 2021


Why do we need Software Engineering ?

 23% of all projects undertaken by internal information


systems organizations are cancelled before their
completion

 49% of projects cost 189% of their original estimates


Facts and
Statistics:
 Only 28% of projects are completed on time and within
budget

 Projects completed have 42% of the originally


proposed features or functions.

Software Engineering I / Prof. Driss Kettani / Spring 2021


Why do we need Software Engineering ?
 Ariane-5 Program:
◦ Fate: Self-Destructed 40 seconds after launch
◦ Cause: Unhandled floating point Exception in ADA code.
◦ Result: $500million...

 Mars Polar Lander Probe


◦ Fate: was destroyed in its final descent to the planet in 1999…
◦ Cause: Fake signals/Noise, when the lander’ legs were deployed,
they gave false indication that the lander had landed -> engine
stop….
◦ Result: The engines shutoff 100feet above the surface… $165million

Software Engineering I / Prof. Driss Kettani / Spring 2021


Why do we need Software Engineering ?
 Aviation:
◦ A poorly programmed Ground-based altitude warning system was
responsible for the crash of a Korean air craft… Causing the death
of 228 people…

◦ Several (recent) crashes of the Boing-737 Max…


 Car Industry:
 Ford, Toyota, Volkswagen, etc.
 An updated compilation of “funny” Software bugs is available
online at http://www5.in.tum.de/~huckle/bugse.html

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
Product vs. Process

Software
All the methods,
techniques and tools
contributing to the
production of
software… It is
interested in the
Process and the
Product…
Engineerin
g

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… / What is a Soft. Engineering Product?

A software product is a merchandise


consisting of a computer program
that is offered for sale to serve the
needs of a certain business or
public interest.

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… / What is a Soft. Engineering Product?

SAS (Software As Service) vs. SAP (Software


As Product)

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… /… / What is a GOOD Soft. Product?
McCall Boehm Bowen Dromey ISO- ISO-
[1] [2] [3] [4] 9126 25010
[8] [10]
Maintainability + + + + +
Flexibility + +
Testability + +
Correctness + +
Efficiency + + + + +
Reliability + + + + + +
Integrity + +
Usability + + + + +
Portability + + + + + +
Reusability + + +
Interoperability + +
Understandability +
Functionality + + +
Modifiability +
Performance +
Supportability
Security +
Compatibility +
Software Engineering I / Prof. Driss Kettani / Spring 2021
What is Software Engineering ?
…/.../ Attributes of a GOOD Soft. Product?

Dependability

Software
Maintainability Maintenance
PRODUCT

Usability

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
…/.../ Attributes of a GOOD Soft. Product?
◦ Maintainability
 Defined as the ability of the product to evolve to meet the
changing requirements and needs.

◦ Dependability
 The software should not cause physical or economic damage in
the event of failure (Reliability, Security and Safety)

◦ Maintenance
 Daily bugs fixing and users support…

◦ Usability
 Software should have an appropriate user interface and
documentation.

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
…/.../ Attributes of a GOOD Soft. Product?

A good product fulfills a major part of its


requirements, in addition to having a
maximum/reasonable number of soft.
Product Attributes…

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… / What is a Soft. Engineering Process?
 The path that will lead to elaborate/build a product is called a
process…

 Software Process: Structured set of activities (steps) required to


develop a software system...

 Activities may vary depending on the organization and type of


system being developed…

 There exist generic steps that are fundamental for the


development of the final product…

 Usually: Specifications, Programming, Validation and


Evolution…

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… /… /What is a GOOD Soft. Engineering Process?

A good process, in addition to yielding


the right product, fulfills a reasonable
number of good process attributes…

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… /… / Attributes of a GOOD Soft. Process?

Understandability

Rapidity Visibility

PROCESS

Reliability Supportability

Acceptability

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
… /… / Attributes of a GOOD Soft. Process?

 Understandability: Is the process defined and understandable?


 Visibility: Is the process progress externally visible?
 Supportability: Can the process be supported by CASE tools?
 Acceptability: Is the process acceptable to those involved in it?
 Reliability: Are process errors discovered before they result in
product errors?
 Rapidity: How fast can the system be produced?

Software Engineering I / Prof. Driss Kettani / Spring 2021


What is Software Engineering ?
Product vs. Process

A good software process does


not always yield a good
product !

Software Engineering I / Prof. Driss Kettani / Spring 2021


Software Engineering Code of Ethics?
What is it?

 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…

Software Engineering I / Prof. Driss Kettani / Spring 2021


Software Engineering Code of Ethics?
What is it?
 Confidentiality: Privacy of the client or employer should be
respected.
 Competence: Software engineers should not misrepresent his
level of competence.
 Intellectual Property Rights: Patents and copyright of the
employer and client should be protected…
 Computer Misuse: Technical skills of the software engineer
should not be used to misuse other people’s computers.
Dissemination of viruses is a very relevant example of
Computer Misuse…
Software Engineering I / Prof. Driss Kettani / Spring 2021
Software Engineering Code of Ethics?
What is it?
 The professional societies in the US have cooperated to produce
a code of ethical practice… See http://www.acm.org/about/se-
code
 Members of these organisations sign up to the code of practice
when they join.
 The Code contains eight 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.

Software Engineering I / Prof. Driss Kettani / Spring 2021


Summary of the Chapter

 Software Engineering is a discipline concerned with


theories and tools for professional software development...
 The major goals of software engineering are to produce
reliable, good, and cost effective products…
 A good software should contain the following attribute:
Maintainability, Dependency, Efficiency, Usability…
 A software engineering process is a structured set of
activities (steps) required to develop a software system…

Software Engineering I / Prof. Driss Kettani / Spring 2021


Summary of the Chapter
 The characteristics of a good software engineering process:
Understandability, Visibility, Supportability, Acceptability,
Reliability and Rapidity…
 Some software engineering process models are widely used
and universally recognized: Component-based model,
Prototyping model, The waterfall model…
 In the Software engineering community as well as in any
professional field, engineers must respect the social and
legal framework under which they operate…

Software Engineering I / Prof. Driss Kettani / Spring 2021


Quiz Questions

 What is Software Engineering?


 Why do we need Software Engineering?
 What is a product?
 Give and explain the four attributes of a product.
 What is a good product?
 What is a software process?
 Give/explain the six attributes of a soft. process.
 What is a good software process?

Software Engineering I / Prof. Driss Kettani / Spring 2021


Quiz Questions
 Why is Software Engineering an important field?
 How can you explain the so frequent failures in
software development in Morocco and around the
world?
 What is Software Engineering?
 What is a good product?
 What is a good software?
 Is it 100% guarantied to deliver a good product if we
follow a good process?
 Is a product attribute also a process attribute? Why?

Software Engineering I / Prof. Driss Kettani / Spring 2021


Software is a great combination
between artistry and
engineering. When you finally
get done and get to appreciate
what you have done it is like a
part of yourself that you`ve put
together…

Bill Gates

Software Engineering I / Prof. Driss Kettani / Spring 2021

You might also like