0% found this document useful (0 votes)
117 views25 pages

1.1 Introduction To Software Engineering

This document provides an introduction to software engineering. It begins with definitions of software and characteristics of software such as being developed rather than manufactured. It also discusses different types of software applications. The document then defines software engineering as the application of systematic and disciplined approaches to software development. It discusses the relationship between software engineering and computer science. The document presents software engineering as a layered technology with process, method and tools layers. It emphasizes understanding the problem, planning the solution, carrying out the plan, and examining the results as essential practices of software engineering.

Uploaded by

Arrahim Fitrah
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
117 views25 pages

1.1 Introduction To Software Engineering

This document provides an introduction to software engineering. It begins with definitions of software and characteristics of software such as being developed rather than manufactured. It also discusses different types of software applications. The document then defines software engineering as the application of systematic and disciplined approaches to software development. It discusses the relationship between software engineering and computer science. The document presents software engineering as a layered technology with process, method and tools layers. It emphasizes understanding the problem, planning the solution, carrying out the plan, and examining the results as essential practices of software engineering.

Uploaded by

Arrahim Fitrah
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 25

Software Engineering Development

Introduction to Software
Engineering
Mutia Fadhila Putri M.Kom
Slides based on the book of Pressman, Roger S., Software Engineering: A
Practitioner’s Approach, 7th Edition, Mc. Graw Hill International, USA, 2010.
References
• [Pressman] Pressman, Roger S., Software
Engineering: A Practitioner’s Approach, 8th
Edition, Mc. Graw Hill International, USA,
2015.
• [Sommerville] Sommerville, Ian, Software
Engineering, 10th Edition, Pearson-Addison
Wesley, England, 2015.

2
Outline
• What is Software?
• What is Software Engineering?
• The Essence of Software Engineering Practice

3
What is Software?

http://www.csiteks.com/software-services/

4
What is Software?
• Software is:
(1) Instructions (computer programs) that when
executed provide desired features, function, and
performance;
(2) Data structures that enable the programs to
adequately manipulate information and
(3) Documentation that describes the operation and
use of the programs.

5
Characteristics of Software
1. Software is developed or engineered, it is not
manufactured in the classical sense.
2. Although the industry is moving toward
component-based construction, most software
continues to be custom-built.
3. Software doesn't "wear out" - it’s deteriorate.
• Hardware failure rate depicted in a form of the
“bathtub curve”
• Software failure rate depicted in a form of the
“idealized curve”.

6
Failure Curve for Hardware:
Bathtub Curve

“Infant mortality” “Wear out”


Failure rate

Time

(Source: Pressman)
Failure Curve for Software

(Source: Pressman)
8
Software Application
• System software
• Application software
• Engineering/scientific software
• Embedded software
• Product-line software
• WebApps (Web applications)
• AI software

9
Information System?
1. Information system is a software
• Consists of instructions, data structures, and
documentations that provide values to its user
2. But not all software are information
systems!
• Anti-virus? BIOS?
• Medical records system? Tax filing system?
3. An IS for different organization has
different features

10
Relationship Between Software Engineering and
Computer Science
COMPUTER
CUSTOMER
SCIENCE

Computer Problem
Theories
Functions

SOFTWARE
ENGINEERING

Source: Pfleeger & Atlee


Tools and
Techniques to
Solve Problem
11
What is Software Engineering?
[2]
• Seminal definition:
• [Software engineering is] the establishment and use of
sound engineering principles in order to obtain
economically software that is reliable and works
efficiently on real machines.
• IEEE definition:
• Software Engineering:
(1)The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance
of software; that is, the application of engineering to
software.
(2)The study of approaches as in (1).

12
Solving Problem with Software
Engineering
▪ Software engineers often encounter problems
related to a computer or existing computer
system but sometimes the underlying problem
have nothing to do with computers
▪ Therefore, we must understand the nature
of the problem first:
• Do not impose computing machinery or
techniques on every problems.
• Solve the problem first and if needed we can use
technology as a tool to implement our solution.

13
Solving Problem with Software
Engineering
•1. Begin investigating a problem by analyzing it.
•Break the problem in pieces that we understand
and try to deal with.
•Understand the relationship between pieces that
hold the problem.
•2. Once analyzed, construct the solution from
the components that address the problem’s
various aspects.
•This reverse process is called synthesis: putting
together of a large structure from small building
blocks.
14
A Layered Technology

Software Engineering

15
Process
• Process layer is the foundation.
• the glue that holds the technology layers together
• enables rational and timely development
• defines framework
• forms the basis for management control of
software project
• establishes the context in which technical
methods are applied, work products are produced,
milestone are established, quality is ensured, and
change is properly managed.

16
Method and Tools
1. Method layer
• provide the technical how-to’s for building
software
• encompass a broad array of tasks (include
communication, requirement analysis, design
modeling, program construction, testing, and
support)
• rely on a set of basic principles that govern each
area of the technology and include modeling
activities and other descriptive techniques.
2. Tools layer
• provide automated or semiautomated support for
the process and the methods
17
Why do we need SE?
1. Can’t we just go straight into coding?
2. You can, but...
• Many professional environments do not endorse
ad-hoc activities such as ‘brute force, trial-and-
error’ coding
• Even if it does succeed, can it be repeated in the
next project?
3. It seems a lot of work initially, but the
benefits will be worth it in the long run

18
The Essence of Practice
• Polya suggests:
1.Understand the problem (communication and
analysis).
2.Plan a solution (modeling and software design).
3.Carry out the plan (code generation).
4.Examine the result for accuracy (testing and quality
assurance).

19
Understand the Problem
• Who has a stake in the solution to the problem? That
is, who are the stakeholders?
• What are the unknowns? What data, functions, and
features are required to properly solve the
problem?
• Can the problem be compartmentalized? Is it
possible to represent smaller problems that may
be easier to understand?
• Can the problem be represented graphically? Can an
analysis model be created?

20
Plan the Solution
• Have you seen similar problems before? Are there
patterns that are recognizable in a potential
solution? Is there existing software that implements
the data, functions, and features that are required?
• Has a similar problem been solved? If so, are
elements of the solution reusable?
• Can subproblems be defined? If so, are solutions
readily apparent for the subproblems?
• Can you represent a solution in a manner that leads to
effective implementation? Can a design model be
created?
21
Carry Out the Plan
• Does the solution conform to the plan? Is
source code traceable to the design model?
• Is each component part of the solution provably
correct? Has the design and code been
reviewed, or better, have correctness proofs
been applied to algorithm?

22
Examine the Result
• Is it possible to test each component part of the
solution? Has a reasonable testing strategy
been implemented?
• Does the solution produce results that conform
to the data, functions, and features that are
required? Has the software been validated
against all stakeholder requirements?

23
Focus

The cost effective


development of highly-
quality software
[Sommerville]

24
Terima Kasih

You might also like