rekayasa perangkat lunak software design fundamentals

17
Tugas 07 RPL Nama : Listyowatik NIM : 120103256 Prodi : Teknik Informatika Rekayasa Perangkat Lunak SOFTWARE DESIGN FUNDAMENTALS

Upload: listyowatik-yanie

Post on 04-Jul-2015

1.440 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Rekayasa Perangkat Lunak software design fundamentals

Tugas 07 RPL

Nama : ListyowatikNIM : 120103256Prodi : Teknik Informatika

Rekayasa Perangkat Lunak

SOFTWARE DESIGN FUNDAMENTALS

Page 2: Rekayasa Perangkat Lunak software design fundamentals

THE DEVELOPMENT PHASE AND SOFTWARE DESIGN

Fase pengembangan terdiri dari 3langkah :• Design• Code Generation (manual or

automatic)• Testing

Setiap langkah melakukan transformasiinformasi dalam suatu cara yangakhirnya menghasilkan softwarekomputer yang valid

Software requirementsDijelaskan dengan “Infor-mationDomain”, “Func-tional and performancrequirments”, “Feed the design step”

Development Phase

Page 3: Rekayasa Perangkat Lunak software design fundamentals

Menggunakan metodelogi :

1. Data Design difokuskan pada definisi dari struktur data

2. Architectural Design mendefinisikan hubungan antara elemenstruktur utama dari program

3. Procedural Design mengubah struktur elemen ke dalamprosedur software

THE DEVELOPMENT PHASE AND SOFTWARE DESIGN

Page 4: Rekayasa Perangkat Lunak software design fundamentals

THE DESIGN PROCESS

@ Software design a process through

which requirements are translated into a

representation of software

@Software design dibagi dalam 2 tahap :

1. Preliminary Design

Pada tahap ini difokuskan dengan trans-

formasi dari keperluan / kebutuhan ke

dalam data dan arsitektur software

2. Detail Design

Difokuskan pada penghalusan represen-

tasi arsitektur yang berisi struktur data

detail dan algoritma untuk software

Hubungan antara aspek tehnikdan management pada desain

Page 5: Rekayasa Perangkat Lunak software design fundamentals

DESAIN AND SOFTWARE QUALITY

Beberapa tuntunan dalam melakukan agar dihasilkan desaindengan kriteria yang baik, yaitu suatu desain haruslah :1. Memperlihatkan organisasi hirarki yang mengontrol

elemen-elemen software.2. Berkenaan dengan modul. Software secara logika

terbagi dalam elemen-elemen yang membentuk fungsidan sub fungsi.

3. Berisi representasi yang berbeda dan terpisah dari datadan prosedur.

4. Membentuk modul ( contoh subroutine dan procedure )yang memperlihatkan karakteristik fungsi yang tidaksaling bergantung.

5. Diturunkan dengan menggunakan metode perulanganyang didukung oleh informasi yang ada selama analisakebutuhan software.

Page 6: Rekayasa Perangkat Lunak software design fundamentals

THE EVOLUTION OF SOFTWARE DESIGN

Evolusi dari desain software merupakan proses yang

berkelanjutan terus selama 3 dekade

Beberapa metodologi telah tumbuh, dan secara umum

memiliki karakteristik sebagai berikut :

1. Sebuah mekanisme untuk menterjemahkan representasi

domain informasi ke dalam representasi desain

2. Notasi untuk merepresentasikan fungsi komponen-komponen

dan interfaces-nya

3. Heuristics untuk penghalusan dan pemartisian

4. Petunjuk untuk penaksiran kualitas

Page 7: Rekayasa Perangkat Lunak software design fundamentals

DESIGN FUNDAMENTALS

Membantu software enginee untuk menjawabpertanyaan-pertanyaan berikut :1. Apakah kriteria yang dapat dipakai untuk

mempartisi software menjadi sejumlah komponen ?2. Bagaimana fungsi atau struktur data dipisahkan dari

suatu representasi konseptual software3. Apakah ada kriteria yang seragam yang menetapkan

kualitas tehnik dari suatu software desainREFINEMENT

“Stepwise refinement” adalah strategi desain top-down pertama yang diajukan oleh Nicklaus Wirth

Refinement sebenarnya merupakan suatu prosespengembangan ( elaborasi )

Page 8: Rekayasa Perangkat Lunak software design fundamentals

SOFTWARE ARCHITECTURE

Arsitektur perangkat lunak menyinggung2 karakteristik penting dari sebuahprogram komputer :1. Hirarki struktur dari komponen-

komponen prosedural ( modul )2. Data struktur

P3

P1

P4P5

P2S1 S2

S3

S4 S5

SO F TWARE SO LUT IO NPR OBLEM T O BE SO LVE

VIA SO FT WARE

Evolution of structure

PR O BLEM

ST RUCT URE 1

S1 S2 S3 S4 S5

S1 S4 S5

S3

S2

S1 S2 S5

S4

S3

ST RUCT URE 2 ST RUCT URE 3

Different Structure

Page 9: Rekayasa Perangkat Lunak software design fundamentals

PROGRAM STRUCTURE

Program structure menampilkan /

menyajikan organisasi ( seringkali

organisasi hirarki ) dari komponen-

komponen program ( modul-modul )

dan mengandung arti hirarki dari

kontrol program

Notasi yang digunakan adalah

diagram tree. Biasanya dinamakan

structure chart Terminologi Structure

Page 10: Rekayasa Perangkat Lunak software design fundamentals

DATA STRUCTURE

Menggambarkan relasi logikal antara sejumlah elemen dari “dari”. Contoh :

type G = array [1..100] of integer;......Procedure S ( var T : G ; n : integer ; sum : integer );Var

I : integer;begin

sum := 0;for I:=1 to n do

sum := sum + t[i];end;

Page 11: Rekayasa Perangkat Lunak software design fundamentals

SOFTWARE PROCEDURE

Difokuskan pada detail pemrosesan dari setiap modul secaraindividu. Prosedur harus mengandung spesifikasi yang benar /tepat dari pemrosesan, termasuk : sequence of events, decision

points, repetitive operations, dan struktur data.

MO DULE A

MO DULE A

Procedure dengan sebuah modul

Page 12: Rekayasa Perangkat Lunak software design fundamentals

Software is divided into separately named andaddressable elements, called modules, that areintegrated to satisfy problem requirementsMisalkan :

C(x) = fungsi kompleksitasdari suatu masalah

E(x) = fungsi usaha/waktuyang diperlukan untuk memecahkan suatumasalahP1 ,P2 = masalah 1, masalah 2Jika : C(P1) > C(P2) maka :

E(P1) > E(P2)Berdasarkan penelitian :C ( P1 + P2 ) > C ( P1 ) + C ( P2 )E ( P1 + P2 ) > E ( P1 ) + E ( P2 )Konklusi :Kompleksitas suatu masalah gabungan P1 dan P2

akan berkurang jika masalah tersebut dipisahkanAkan lebih mudah menyelesaikan suatu masalahjika dipecah / dipartisi

MODULARITY

LO

ST

O

R E

FF

OR

T

NUMBER O F MO DU LES

Region O f M inimum Cost

M

TO T AL SO FTWAR E C O ST

CO ST T O INT ERF ACE

CO ST / MO DULE

Modularity & Software Cost

Page 13: Rekayasa Perangkat Lunak software design fundamentals

ABSTRACTION

Jika kita menggunakan suatu solusi modular untuk beberapamasalah, maka beberapa level / tingkat abstrasi dapatditampilakn / diperlihatkan. Pada level tertinggi, suatu solusi berada pada term yang

umum dengan menggunakan bahasa natural Level yang lebih rendah lebih berorientasi pada prosedur-

prosedurKeuntungan :1. Jika diperlukan modifikasi selama testing dan maintenance

data & prosedur disembunyikan dari bagian lain, dariprogram / software secara keseluruhan.

2. Kesalahan-kesalahan yang terjadi selama modifikasi tidakmerambat pada bagian lain.

Page 14: Rekayasa Perangkat Lunak software design fundamentals

EFFECTIVE MODULAR DESIGN

Modular design mereduksi komplesitas masalah, menyediakan fasilitas untuk

melakukan perubahan ( dalam hal pemeliharaan ), dan memudahkan implementasi

dengan pengembangan paralel dari bagian-bagian yang berbeda dalam suatu sistem

MODULE TYPES

Abstraksi dan information hiding dipakai untuk mendefinisikan modul-modul di dalam

lingkungan software architecture

1. Di dalam structure software, suatu modul mungkin dikategorikan sebagai berikut :

2. Sequential module dieksekusi tanpa interupsi yang dilakukan software aplikasi

3. Incremental module dapat diinterupsi oleh program aplikasi dan kemudian

kembali ke titik semula setelah interupsi selesai

4. Parallel module dieksekusi secara simultan dengan modul lain dalam lingkungan

Concurrent multiprocessor

Page 15: Rekayasa Perangkat Lunak software design fundamentals

FUNCTIONAL INDEPENDENCE

Konsep functional independence berkembang dari modularitas dan konsep abstraksi serta informationhidingIndependence diukur dengan menggunakan 2 kriteria kualitatif, yaitu :1. Cohesion ( keterpautan ) Perluasan / kelanjutan dari information hiding Suatu modul kohesif membentuk sebuah tugas tunggal di dalam suatu software prosedur dan

memerlukan sedikit interaksi dengan prosedur yang dibuat dalam bagian lain dari suatu programCoincidental cohesion :sebuah modul yang membentuk sejumlah tugas yang berhubungan satu sama lain dengan longgarLogically cohesion :sebuah modul yang membentuk tugas-tugas yang dihubungkan secara logicalTemporal cohesion :jika sebuah modul berisi sejumlah tugas yang dihubungkan dengan segala yang harus dieksekusi di dalamwaktu yang bersamaan.Procedural cohesion :jika pemrosesan elemen-elemen dari suatu modul dihubungkan dan harus dieksekusi dalam urutan spesifikCommunication cohesion :jika pemrosesan elemen-elemen dikonsentrasikan pada satu area dari suatu struktur data2. Coupling ( bergandengan ) Merupakan suatu pengukuran dari keterkaitan / keterhubungan antara sejumlah modul dalam struktur

program Coupling tergantung pada kompleksitas interface antar modul

Page 16: Rekayasa Perangkat Lunak software design fundamentals

DATA DESIGN

Data Desain merupakan aktivitas penting yang diselenggarakanselama proses perekayasaan perangkat lunak.

Data Desain berpengaruh besar terhadap kualitas software yang dibuat / didesain. Karena kompleksitas dari struktur program dan prosedur dapat dipengaruhi oleh bagaimana desain data yang kita buat.

Proses desain data yang diringkat oleh Wasserman. “Well - Designed” data dapat menyebabkan struktur program

lebih baik, modularitas, dan menghilangkan kompleksitasprocedural.

Wasserman mengajukan beberapa prinsip yang dipakai untukspesifikasi dan desain data.

Prinsip-prinsip tersebut merupakan basis untuk desain data yangdapat dipadukan pada fase definisi dan fase pengembanganpada proses perekayasaan perangkat lunak

Page 17: Rekayasa Perangkat Lunak software design fundamentals

S E L E S A I . . .