• Tidak ada hasil yang ditemukan

Bagian 2 Bagian 2

N/A
N/A
Nguyễn Gia Hào

Academic year: 2023

Membagikan "Bagian 2 Bagian 2"

Copied!
26
0
0

Teks penuh

(1)

Catatan Kuliah Catatan Kuliah

Rekayasa Perangkat Lunak Rekayasa Perangkat Lunak

(Software Engineering) (Software Engineering)

Bagian 2 Bagian 2

copyright © 2006

R.S. Pressman & Associates, Inc M. Idham Ananta Timur, S.T., M.Kom.

Hanya digunakan di lingkungan Universtias

Hanya boleh digandakan untuk mahasiswa di lingkungan universitas yang menggunakan buku Software Engineering: A Practitioner's Approach.

Selain itu dilarang keras menggandakan.

Presentasi, slide atau hardcopy tidak boleh digunakan untuk

(2)

Software Engineering: A Practitioner’s Approach, 6/e Software Engineering: A Practitioner’s Approach, 6/e

Bab 11 Bab 11

Desain Level Komponen Desain Level Komponen

copyright © 1996, 2001, 2005

R.S. Pressman & Associates, Inc.

For University Use Only

May be reproduced ONLY for student use at the university level

when used in conjunction with Software Engineering: A Practitioner's Approach.

Any other reproduction or use is expressly prohibited.

(3)

Apakah Komponen ? Apakah Komponen ?

OMG Unified Modeling Language Specification OMG Unified Modeling Language Specification [OMG01] [OMG01]

mendefinisikan komponen sebagai mendefinisikan komponen sebagai

 “… “… a modular, deployable, and replaceable part of a system that a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.”

encapsulates implementation and exposes a set of interfaces.”

 Pandangan OO : Sebuah komponen terdiri dari Pandangan OO : Sebuah komponen terdiri dari sekumpulan class2x yang berkolaborasi

sekumpulan class2x yang berkolaborasi

 Pandangan Konvensional: logika, struktur data internal Pandangan Konvensional: logika, struktur data internal yang dibutuhkan untuk mengimplementasi logika

yang dibutuhkan untuk mengimplementasi logika proses dan sebuah interface yang memungkinkan proses dan sebuah interface yang memungkinkan

komponen untuk dipanggil sehingga data dapat komponen untuk dipanggil sehingga data dapat

dimasukkan ke dalamnya.

dimasukkan ke dalamnya.

(4)

Komponen OO Komponen OO

PrintJ ob c omputeJ ob

initiateJ ob

numberOf Pages numberOf Sides paperType paperWeight paperSize paperColor magnif ication colorRequirements productionFeatures collationOptions bindingOptions coverStock bleed priority tot alJ obCost WOnumber

PrintJ ob

computePageCost () computePaperCost () computeProdCost () computeTotalJ obCost () buildWorkOrder() checkPriority () passJ obto Production() elaborated design class

<<int erf ace>>

co mput eJ o b computePageCost () computePaperCost ( ) computeProdCost () computeTotalJ obCost ()

<<in terf ace>>

in itiateJ o b buildWorkOrder() checkPriority ( ) passJ obt o Production()

design c omponent numberOf Pages

numberOf Sides paperType magnif ic ation produc tionFeat ures

PrintJ ob

c omputeJ obCost( ) passJ obt oPrinter( ) analysis c lass

(5)

Komponen Konvensional Komponen Konvensional

ComputePageCost design component

accessCostsDB getJ obData

elaborated module PageCost

in: job size in: color=1, 2, 3, 4 in: pageSize = A, B, C, B out: BPC

out: SF in: numberPages in: numberDocs in: sides= 1, 2 in: color=1, 2, 3, 4 in: page size = A, B, C, B out: page cost

job size (J S) =

numberPages * numberDocs;

lookup base page cost (BPC) -->

accessCostsDB (J S, color);

lookup size factor ( SF) -->

accessCostDB (J S, color, size) job complexity factor ( J CF) = getJ obData (numberPages, numberDocs,

sides, color, pageSize, pageCost) accessCostsDB (jobSize, color, pageSize, BPC, SF)

computePageCost()

(6)

Prinsip2x Desain Dasar Prinsip2x Desain Dasar

The Open-Closed Principle (OCP). The Open-Closed Principle (OCP). “sebuah modul[komponen] harus terbuka untuk “sebuah modul[komponen] harus terbuka untuk ekstensi, namun tertutup untuk modifikasi.

ekstensi, namun tertutup untuk modifikasi.

The Liskov Substitution Principle (LSP). The Liskov Substitution Principle (LSP). “Subclass harus dapat disubstitusi oleh “Subclass harus dapat disubstitusi oleh basis class nya.

basis class nya.

Dependency Inversion Principle (DIP). Dependency Inversion Principle (DIP). “Tergantung pada abstraksi, tidak “Tergantung pada abstraksi, tidak tergantung pada konkret.”

tergantung pada konkret.”

The Interface Segregation Principle (ISP). “banyak interface spesifik client lebih baik The Interface Segregation Principle (ISP). “banyak interface spesifik client lebih baik daripada satu interface general purpose.

daripada satu interface general purpose.

The Release Reuse Equivalency Principle (REP). The Release Reuse Equivalency Principle (REP). “Bagian-bagian kecil yang dapat “Bagian-bagian kecil yang dapat digunakan kembali adalah bagian-bagian kecil yang akan direlease.”

digunakan kembali adalah bagian-bagian kecil yang akan direlease.”

The Common Closure Principle (CCP). The Common Closure Principle (CCP). “Class2x yang berubah bersama-sama “Class2x yang berubah bersama-sama adalah milik bersama.”

adalah milik bersama.”

The Common Reuse Principle (CRP). The Common Reuse Principle (CRP). “Class2x yang tidak digunakan kembali “Class2x yang tidak digunakan kembali bersama-sama tidak dikelompokkan bersama.”

bersama-sama tidak dikelompokkan bersama.”

Source: Martin, R., “Design Principles and Design Patterns,” downloaded from Source: Martin, R., “Design Principles and Design Patterns,” downloaded from http:www.objectmentor.com, 2000.

http:www.objectmentor.com, 2000.

(7)

Panduan Desain Panduan Desain

 Komponen Komponen

 Konvensi penyebutan nama harus ditentukan untuk Konvensi penyebutan nama harus ditentukan untuk

komponen2x yang menjadi bagian dari model arsitektur dan komponen2x yang menjadi bagian dari model arsitektur dan kemudian disempurnakan dan diuraikan sebagai bagian dari kemudian disempurnakan dan diuraikan sebagai bagian dari model level komponen

model level komponen

 Interfaces Interfaces

 Interface menyediakan informasi penting mengenai Interface menyediakan informasi penting mengenai komunikasi dan kolaborasi (yang akan membantuk kita komunikasi dan kolaborasi (yang akan membantuk kita mendapatkan OCP)

mendapatkan OCP)

 Dependencies dan Inheritance Dependencies dan Inheritance

 Adalah ide yang bagus untuk membuat model dependency Adalah ide yang bagus untuk membuat model dependency dari kiri ke kanan dan intheritance dari bawah ke atas.

dari kiri ke kanan dan intheritance dari bawah ke atas.

(8)

Kohesi Kohesi

Pandangan konvensional: Pandangan konvensional:

Sebuah modul tunggal Sebuah modul tunggal

OO view: OO view:

cohesion menyatakan bahwa sebuah komponen atau class cohesion menyatakan bahwa sebuah komponen atau class

melakukan enkapsulasi hanya atribut2x dan operasi2x yang punya melakukan enkapsulasi hanya atribut2x dan operasi2x yang punya kaitan erat dengan yang satu yang lain dan dengan class atau

kaitan erat dengan yang satu yang lain dan dengan class atau komponen itu sendiri.

komponen itu sendiri.

Level kohesi Level kohesi

Fungsional Fungsional

Lapisan/Layer Lapisan/Layer

Komunikasi Komunikasi

Sekuensial Sekuensial

Prosedural Prosedural

Temporal Temporal

utility utility

(9)

Coupling Coupling

Pandangan Konvensional: Pandangan Konvensional:

Derajat dimana sebuah komponen terhubung dengan komponen Derajat dimana sebuah komponen terhubung dengan komponen lain dan dengan dunia eksternal

lain dan dengan dunia eksternal

Pandangan OO : Pandangan OO :

Pengukuran kualitatif terhadap derajat dimana class2x saling terkait Pengukuran kualitatif terhadap derajat dimana class2x saling terkait satu dengan yang lain

satu dengan yang lain

Level coupling Level coupling

Content Content

Common Common

Control Control

Stamp Stamp

Data Data

Routine call Routine call

Type use Type use

Inclusion or import Inclusion or import

External External

(10)

Component Level Design-I Component Level Design-I

 Langkah 1. Identifikasi semua class2x desain yang Langkah 1. Identifikasi semua class2x desain yang berkaitan dengan domain permasalahan.

berkaitan dengan domain permasalahan.

 Langkah 2. Identifikasi semua class2x desain yang Langkah 2. Identifikasi semua class2x desain yang berkaitan dengan domain infrastruktur.

berkaitan dengan domain infrastruktur.

 Langkah 3. teliti semua class2x desain yang tidak dikenali Langkah 3. teliti semua class2x desain yang tidak dikenali sebagai komponen yang dapat digunaka kembali.

sebagai komponen yang dapat digunaka kembali.

 Langkah 3a. Tentukan detail pesan ketika class2x atau Langkah 3a. Tentukan detail pesan ketika class2x atau komponen berkolaborasi.

komponen berkolaborasi.

 Step 3b. Identifikasi interface yang tepat untuk setiap Step 3b. Identifikasi interface yang tepat untuk setiap komponen.

komponen.

(11)

Component-Level Design-II Component-Level Design-II

 Langkah 3c. Teliti atribut2x dan tentukan tipe2x data dan Langkah 3c. Teliti atribut2x dan tentukan tipe2x data dan struktur data yang dibutuhkan untuk mengimplementasi struktur data yang dibutuhkan untuk mengimplementasi mereka.

mereka.

 Langkah 3d. Langkah 3d. Gambarkan aliran proses di setiap operasi secara Gambarkan aliran proses di setiap operasi secara detail.

detail.

 Langkah 4. Gambarkan sumber data persistence (database dan Langkah 4. Gambarkan sumber data persistence (database dan file) dan identifikasi class2x yang diminta untuk mengelolanya.

file) dan identifikasi class2x yang diminta untuk mengelolanya.

 Langkah 5. Kembangkan dan perinci representasi perilaku Langkah 5. Kembangkan dan perinci representasi perilaku untuk class atau komponen.

untuk class atau komponen.

 Langkah 6. Teliti diagram deployment untuk menyediakan Langkah 6. Teliti diagram deployment untuk menyediakan detail implementasi tambahan.

detail implementasi tambahan.

 Step 7. Faktorkan setiap representasi desain level komponen Step 7. Faktorkan setiap representasi desain level komponen dan selalu perhatikan alternatif2x.

dan selalu perhatikan alternatif2x.

(12)

Collaboration Diagram Collaboration Diagram

:ProductionJob

:WorkOrder

:JobQueue 1: buildJob (WOnumber)

2: submitJob (WOnumber)

(13)

Refactoring Refactoring

PrintJ ob computeJ ob

initiateJ ob

ProductionJ ob buildJ ob

submitJ ob WorkOrder

appropriate attributes

buildWorkOrder () getJ obDescriiption

J obQueue

appropriate attributes

checkPriority ()

<<interface>>

initiateJ ob

passJ obToProduction()

(14)

Activity Diagram Activity Diagram

validate attributes input

accessPaperDB(weight) returns baseCostperPage

size = B paperCostperPage = paperCostperPage *1 .2

size = C paperCostperPage = paperCostperPage *1 .4

size = D paperCostperPage = paperCostperPage *1 .6

color is custom

paperCostperPage = paperCostperPage *1 .1 4 color is standard

paperCostperPage = baseCostperPage

returns ( paperCostperPage )

(15)

Statechart Statechart

buildingJ obData entry/ readJ obData() exit/displayJ obData() do/ checkConsistency() include/ dataInput

entry/ computeJ ob exit/ save totalJ obCost

formingJ ob entry/ buildJ ob exit/ save WOnumber do/

computingJ obCost

submittingJ ob entry/ submitJ ob exit/initiateJ ob do/ place on J obQueue

behavior within the state buildingJ obData

dataInputCompleted [all data items consistent]/ displayUserOptions dataInputIncomplete

jobCostAccepted [customer is authorized]/

getElectronicSignature

(16)

Object Constraint Language (OCL) Object Constraint Language (OCL)

 Melengkapi UML dengan memungkin software engineer Melengkapi UML dengan memungkin software engineer

menggunakan grammar dan syntax formal untuk membangun menggunakan grammar dan syntax formal untuk membangun penyataan yang tidak ambigu tanpa elemen2x model desain penyataan yang tidak ambigu tanpa elemen2x model desain

 Pernyataan bahasa OCL yang paling sederhana dibangun Pernyataan bahasa OCL yang paling sederhana dibangun dengan 4 bagian ::

dengan 4 bagian ::

 (1) sebuah context (1) sebuah context yang menyatakan situasi terbatas dimana yang menyatakan situasi terbatas dimana statemen tersebut valid;

statemen tersebut valid;

 (2) sebuah property (2) sebuah property yang menampilkan beberapa karakterstik dari yang menampilkan beberapa karakterstik dari konteks(mis jika context adalah class, properti adalah atribut)

konteks(mis jika context adalah class, properti adalah atribut)

 (3) sebuah operation (3) sebuah operation (mis aritmetika) yang memanipulasi atau (mis aritmetika) yang memanipulasi atau menentukan properti, dan

menentukan properti, dan

 (4) (4) keywords (mis if, then, else, and, or, not, implies) yang keywords (mis if, then, else, and, or, not, implies) yang digunakan untuk ekspresi kondisional.

digunakan untuk ekspresi kondisional.

(17)

Contoh OCL Contoh OCL

context

context PrintJob::validate(upperCostBound PrintJob::validate(upperCostBound : Integer, custDeliveryReq :

: Integer, custDeliveryReq :

Integer) Integer)

pre: pre: upperCostBound > 0 upperCostBound > 0

and custDeliveryReq > 0 and custDeliveryReq > 0

and self.jobAuthorization = 'no' and self.jobAuthorization = 'no' post: if post: if self.totalJobCost <= self.totalJobCost <=

upperCostBound upperCostBound

and self.deliveryDate <= and self.deliveryDate <=

custDeliveryReq custDeliveryReq

then then

self.jobAuthorization = 'yes' self.jobAuthorization = 'yes'

endif endif

(18)

Desain Algoritma Desain Algoritma

 Aktivitas desain paling dekat dengan Aktivitas desain paling dekat dengan coding

coding

 pendekatan: pendekatan:

 review gambaran desain untuk komponen review gambaran desain untuk komponen

 Gunakan langkah-langkah penyempurnaan Gunakan langkah-langkah penyempurnaan untuk mengembangkan algoritma

untuk mengembangkan algoritma

 Gunakan pemrograman terstruktur untuk Gunakan pemrograman terstruktur untuk implementasi logika prosedural

implementasi logika prosedural

 Gunakan ‘formal methods’ untuk Gunakan ‘formal methods’ untuk membuktikan logika

membuktikan logika

(19)

Langkah2x Penyempurnaan Langkah2x Penyempurnaan

open open

walk to door;

walk to door;

reach for knob;

reach for knob;

open door;

open door;

walk through;

walk through;

close door.

close door.

repeat until door opens repeat until door opens turn knob clockwise;

turn knob clockwise;

if knob doesn't turn, then if knob doesn't turn, then take key out; take key out;

find correct key; find correct key;

insert in lock; insert in lock;

endif endif

pull/push door pull/push door move out of way;

move out of way;

end repeat

end repeat

(20)

Model Desain Algoritma Model Desain Algoritma

 Menampilkan algoritma pada level detail Menampilkan algoritma pada level detail yang dapat direview kualitasnya

yang dapat direview kualitasnya

 pilihan2x: pilihan2x:

 grafis (mis flowchart, box diagram) grafis (mis flowchart, box diagram)

 pseudocode (mis PDL) pseudocode (mis PDL) ... choice of many ... choice of many

 Bahasa pemrograman Bahasa pemrograman

 Tabel Keputusan Tabel Keputusan

 Lakukan penelusuran untuk menilai kualitas Lakukan penelusuran untuk menilai kualitas

(21)

Pemrograman Terstruktur Pemrograman Terstruktur

untuk desain prosedural untuk desain prosedural

Gunakan sejumlah konstruksi logika Gunakan sejumlah konstruksi logika

sequence sequence

conditionalconditional — if-then-else, select-case if-then-else, select-case

loopsloops — do-while, repeat until do-while, repeat until

Mengarah pada kode yang mudah dibaca dan diuji Mengarah pada kode yang mudah dibaca dan diuji

Penting untuk memperoleh kualitas tinggi Penting untuk memperoleh kualitas tinggi

Tapi tidak cukup Tapi tidak cukup

Dapat digunakan untuk membantu koreksi

Dapat digunakan untuk membantu koreksi

(22)

Desain prosedur terstruktur Desain prosedur terstruktur

a x1 b x2

x 3

4

5

c d

e f

g x

x

add a condition Z,

if true, exit the program

(23)

Tabel Keputusan Tabel Keputusan

Conditions

regular customer silver customer gold customer special discount Rules

no discount

apply 8 percent discount apply 15 percent discount

apply additional x percent discount T

F T

T T

T T

F

1 3 4 5 6

F

T T

T 2

Rules

(24)

Program Design Language (PDL) Program Design Language (PDL)

if-then-else

if condition x

then process a;

else process b;

endif PDL easy to combine with source code

machine readable, no need for graphics input graphics can be generated from PDL

enables declaration of data as well as procedure

easier to maintain

(25)

Why Design Language?

Why Design Language?

can be a derivative of the HOL of choice e.g., Ada PDL

machine readable and processable can be embedded with source code, therefore easier to maintain

can be represented in great detail, if designer and coder are different

easy to review

(26)

Tugas Akhir Semester Tugas Akhir Semester

 Buat Model Analisis dari SRS yang anda buat sebelumnya. Model analisis Buat Model Analisis dari SRS yang anda buat sebelumnya. Model analisis berisi diagram :

berisi diagram :

Use Case Diagram Use Case Diagram

ERD (pendekatan konvensional) ERD (pendekatan konvensional)

DFD (pendekatan konvensional) DFD (pendekatan konvensional)

Activity/Sequence Diagram (Pendekatan OO) Activity/Sequence Diagram (Pendekatan OO)

Class Diagram (Pendekatan OO) Class Diagram (Pendekatan OO)

 Buat Model Desain dari model analisis yang anda buat Buat Model Desain dari model analisis yang anda buat

Rancangan User Interface Rancangan User Interface

 Dinilai dari keterpaduan, kelengkapan, dan alur logika Dinilai dari keterpaduan, kelengkapan, dan alur logika

 Dikumpulkan ketika ujian akhir semester Dikumpulkan ketika ujian akhir semester

 Kelas A disampul mika warna merah Kelas A disampul mika warna merah

 Kelas B disampul mika warna kuning Kelas B disampul mika warna kuning

Referensi

Dokumen terkait

The equipment consists of, A service unit to provide stabilized, variable voltage supply A tubular metal duct with the following accessories: An electric fan to draw air 200 – 250 W