Upload
ghassani-herning-pradita
View
229
Download
0
Embed Size (px)
Citation preview
8/11/2019 01 - Introduction to Software Engineering 140901
1/28
8/11/2019 01 - Introduction to Software Engineering 140901
2/28
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Faculty of Computer ScienceUniversity of Indonesia
Topic 01:Introduction toSoftware Engineering
8/11/2019 01 - Introduction to Software Engineering 140901
3/28
8/11/2019 01 - Introduction to Software Engineering 140901
4/28
4
Outline
What is Software?
What is Software Engineering? The Essence of Software EngineeringPractice
8/11/2019 01 - Introduction to Software Engineering 140901
5/28
8/11/2019 01 - Introduction to Software Engineering 140901
6/286
Characteristics of Software
1. Software is developed or engineered , it isnot manufactured in the classical sense.
2. Software doesn't "wear out" - itsdeteriorate .
Hardware failure rate depicted in a form ofthe bathtub curve
Software failure rate depicted in a form ofthe idealized curve.
3. Although the industry is moving toward
component-based construction, mostsoftware continues to be custom-built.
8/11/2019 01 - Introduction to Software Engineering 140901
7/287
Failure Curve for Hardware: Bathtub Curve
(Source: Pressman)
Time
Infant mortality Wear out
F a
i l u r e r a
t e
8/11/2019 01 - Introduction to Software Engineering 140901
8/288
Failure Curve for Software
(Source: Pressman)
8/11/2019 01 - Introduction to Software Engineering 140901
9/289
Software Application
System software Application software Engineering/scientific software Embedded software Product-line software WebApps (Web applications)
AI software
8/11/2019 01 - Introduction to Software Engineering 140901
10/2810
What is Software Engineering?
Software engineers often encounterproblems related to a computer or existingcomputer system but sometimes theunderlying problem have nothing to do withcomputers
Therefore, we must understand the natureof the problem first:Do not impose computing machinery ortechniques on every problems.
Solve the problem first and if needed we can
use technology as a tool to implement oursolution.
8/11/2019 01 - Introduction to Software Engineering 140901
11/2811
What is Software Engineering?
Solving problems:Begin investigating a problem by analyzing it.
Break the problem in pieces that we understandand try to deal with.
Understand the relationship between pieces thathold the problem.
Once analyzed, construct the solution from thecomponents that address the problems variousaspects.
This reverse process is called synthesis :
putting together of a large structure from smallbuilding blocks.
8/11/2019 01 - Introduction to Software Engineering 140901
12/2812
Analyzing Problem(Source: Pfleeger & Atlee)
PROBLEM
Subproblem 1Subproblem 4
Subproblem 3Subproblem 2
FIGURE 1.1 The process of analysis
8/11/2019 01 - Introduction to Software Engineering 140901
13/2813
Synthesizing Solution(Source: Pfleeger & Atlee)
SOLUTION
Solution 1Solution 4
Solution 3Solution 2
FIGURE 1.2 The process of synthesis
8/11/2019 01 - Introduction to Software Engineering 140901
14/2814
What is Software Engineering?
In solving a problem, we employ a varietyof methods , tools , procedures andparadigms .
Method or technique: a formal procedure forproducing some results.
Tool: an instrument or automated system foraccomplishing something in a better way.
Procedure: a combination of tools andtechniques that, in concert, produce aparticular product.
Paradigm: a particular approach orphilosophy for building software.
8/11/2019 01 - Introduction to Software Engineering 140901
15/2815
What is Software Engineering?
Seminal definition:[Software engineering is] the establishment and
use of sound engineering principles in orderto obtain economically software that is reliableand 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).
8/11/2019 01 - Introduction to Software Engineering 140901
16/2816
Relationship Between Software Engineering andComputer Science
Source: Pfleeger & Atlee
COMPUTERSCIENCE CUSTOMER
SOFTWAREENGINEERING
Theories Computer Functions
Problem
Tools andTechniques toSolve Problem
FIGURE 1.3 The relationship betweencomputer science and software engineering
8/11/2019 01 - Introduction to Software Engineering 140901
17/2817
A Layered Technology
Software Engineering
8/11/2019 01 - Introduction to Software Engineering 140901
18/2818
Process
Process layer is the foundation .the glue that holds the technology layerstogether
enables rational and timely development
defines frameworkforms the basis for management control ofsoftware project
establishes the context in which technicalmethods are applied, work products areproduced, milestone are established, qualityis ensured, and change is properly managed.
8/11/2019 01 - Introduction to Software Engineering 140901
19/2819
Method
Method layer provide the technical how-tos forbuilding software
encompass a broad array of tasks
(include communication, requirementanalysis, design modeling, programconstruction, testing, and support)
rely on a set of basic principles thatgovern each area of the technology andinclude modeling activities and otherdescriptive techniques.
8/11/2019 01 - Introduction to Software Engineering 140901
20/2820
Tools
Tools layer provide automated or semiautomatedsupport for the process and the methods
8/11/2019 01 - Introduction to Software Engineering 140901
21/2821
Framework Activities
Communication Planning Modeling
Requirement analysis & definitionDesign
Architecture design / System design
Component design / Program design
ConstructionCode generation
Testing
Unit testing
Integration testing
System testing
DeploymentSystem deliveryMaintenance
8/11/2019 01 - Introduction to Software Engineering 140901
22/28
8/11/2019 01 - Introduction to Software Engineering 140901
23/28
23
The Essence of Practice
Polya suggests:1. Understand the problem ( communication
and analysis ).
2. Plan a solution ( modeling and softwaredesign ).
3. Carry out the plan ( code generation ).4. Examine the result for accuracy ( testing
and quality assurance ).
8/11/2019 01 - Introduction to Software Engineering 140901
24/28
24
Understand the Problem
Who has a stake in the solution to theproblem? That is, who are the stakeholders?
What are the unknowns? What data,functions, and features are required to properlysolve the problem?
Can the problem be compartmentalized? Isit possible to represent smaller problems that
may be easier to understand? Can the problem be representedgraphically? Can an analysis model be
created?
8/11/2019 01 - Introduction to Software Engineering 140901
25/28
25
Plan the Solution
Have you seen similar problems before? Arethere patterns that are recognizable in apotential solution? Is there existing software thatimplements the data, functions, and featuresthat are required?
Has a similar problem been solved? If so, areelements 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? Cana design model be created?
8/11/2019 01 - Introduction to Software Engineering 140901
26/28
26
Carry Out the Plan
Does the solution conform to theplan? Is source code traceable to thedesign model?
Is each component part of thesolution provably correct? Has thedesign and code been reviewed, orbetter, have correctness proofs beenapplied to algorithm?
8/11/2019 01 - Introduction to Software Engineering 140901
27/28
27
Examine the Result
Is it possible to test each componentpart of the solution? Has a reasonabletesting strategy been implemented?
Does the solution produce resultsthat conform to the data, functions,and features that are required? Hasthe software been validated against allstakeholder requirements?
8/11/2019 01 - Introduction to Software Engineering 140901
28/28
Q & A