Rekayasa Perangkat Lunak - elista:. - elearning ista

14 downloads 287 Views 366KB Size Report
Rekayasa. Perangkat Lunak. TI1153. Restyandito e-mail. : [email protected] website ..... 2005 (bab 9). ▫ Pressman,Roger S., Rekayasa Perangkat Lunak:.
TI 1153 REKAYASA PERANGKAT LUNAK 1

Rekayasa Perangkat Lunak

KONSEP DESAIN

TI1153

Restyandito e-mail : [email protected] website : http://lecturer.ukdw.ac.id/~dito TI1153 – Software Process

Desain

Desain

What ? ‰ ‰

Pihak yang terlibat :

Creative process of transforming the problem into a solution Description of the solution

‰ ‰

‰ ‰

Customer harus memahami apa yang dilakukan sistem Pengembang harus mengetahui bagaimana sistem bekerja

Proses Desain :

Solusi : ‰

© Restyandito - 2

‰

Pemecahan masalah tidak unik Sulit mencari pemecahan terbaik Solusi tidak bersifat statis

‰ ‰

desain konseptual Æ apa desain teknis Æ bagaimana proses iteratif

Desainer desain konseptual

customer

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 3

TI1153 – Konsep & Prinsip Desain

desain teknis

pengembang

© Restyandito - 4

Konsep & Prinsip Desain - 1

TI 1153 REKAYASA PERANGKAT LUNAK 1

Desain

Desain

Desain Konseptual ‰ ‰ ‰ ‰ ‰

Mengapa tidak langsung dibuat implementasinya?

ditulis dalam bahasa yg dipahami customer tidak menggunakan istilah-istilah teknis menjelaskan fungsi sistem tidak tergantung pada implementasi sistem dihubungkan dengan dokumen requirement

‰

Kita harus mempertimbangkan dampak dari requirements nonfungsional

‰

Sistem harus disesuaikan dengan lingkungan implementasi

‰

Pemodelan analisis tidak cukup formal, sehingga diperlukan: ƒ peyempurnaan analisis class ƒ menentukan determine operations ƒ menentukan bagaimana class saling berkomunikasi

Desain Teknis ‰

‰ ‰ ‰

menjelaskan konfigurasi perangkat keras, kebutuhan perangkat lunak, communication interface, I/O, jaringan, dsb. hirarki dan fungsi dari komponen-komponen perangkat lunak struktur data alir data

TI1153 – Konsep & Prinsip Desain

‰

Hasil analisis harus divalidasi Seberapa baik pemodelan kebutuhan dan analisis menjelaskan sistem? Hal apa yang masih belum jelas?

© Restyandito - 5

TI1153 – Konsep & Prinsip Desain

Desain Core Workflows

© Restyandito - 6

Workers & Artifacts

Phases Inception

Elaboration

Construction

Transition

Architect

Use-Case Engineer

Component Engineer

bertanggung jawab pada

bertanggung jawab pada

bertanggung jawab pada

Requirements

Iteration

Analysis Design Implementation Testing iter. #1 TI1153 – Konsep & Prinsip Desain

© Restyandito

iter. #2











iter. #n-1

iter. #n

increments © Restyandito - 7

Design Model

Deployment Architecture Model Description

TI1153 – Konsep & Prinsip Desain

Use-Case Realization —Design

Design Class

Interfaces Design Subsystem

© Restyandito - 8

Konsep & Prinsip Desain - 2

TI 1153 REKAYASA PERANGKAT LUNAK 1

Workers

Artifacts

ƒ

architect - responsible for the integrity and the architecture of the design and deployment models

ƒ

use-case engineer - responsible for one or more use-case realizations—design makes all textual descriptions and diagrams describing the usecase realization readable and suited for their purpose

ƒ

component engineer - defines and maintains the operations, methods, attributes, relationships and implementation of one or more design classes. May also maintain the integrity of one or more subsystems

TI1153 – Konsep & Prinsip Desain

© Restyandito - 9

ƒ

design model - describes the physical realization of a use case; focuses on how functional and nonfunctional requirements, together with implementation environment constraints, impact the system

ƒ

deployment model - describes the physical distribution of the system in terms of how functionality is distributed among computational nodes

ƒ

architecture description - contains the architecturally significant artifacts of the design model and all of the deployment model Æ two views of architecture - design model view and deployment model view

TI1153 – Konsep & Prinsip Desain

Artifacts

© Restyandito - 10

Desain - Proses

ƒ

use-case realization—design - describes how a specific use case is realized and performed in terms of design classes and their objects

ƒ

design class - an abstraction of a class or similar construct in the system’s implementation

Architect

Architectural Design

Æ use programming language to specify a design class ƒ

design subsystem - organizes artifacts of the design model into more manageable pieces

ƒ

interface - specifies the operations provided by design classes and subsystems Component Engineer

Æ separates operations from their implementation

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 11

Design Use Cases

Use-Case Engineer

TI1153 – Konsep & Prinsip Desain

Design Classes

Design Subsystems

© Restyandito - 12

Konsep & Prinsip Desain - 3

TI 1153 REKAYASA PERANGKAT LUNAK 1

Design Model

‰

conceptual model

‰

physical model

‰

design Æ generic

‰

implementation Æ specific

‰

less formal

‰

more formal

‰

less expensive to develop

‰

more expensive to develop

‰

few layers

‰

many layers

‰

focus on interactions

‰

focus on sequence

‰

outline of design

‰

implementation of design

Analysis Model

Design Model component level design Interface design

architectural design

.D es c

data design

created by software engineering environments

‰

may not be maintained

‰

maintained throughout life cycle

D

bj O a

‰

.R .D .

created by developer meetings

D at

‰

E

Analysis Model

data dictionary

pr oc es .F .D

.

s

sp ec

S.T.D. control spec

TI1153 – Konsep & Prinsip Desain

© Restyandito - 13

TI1153 – Konsep & Prinsip Desain

Design Model

© Restyandito - 14

Design Goals performance criteria

Component-level design menghasilkan deskripsi prosedur software. Interface design menjelaskan bagaimana software berkomunikasi dalam dirinya, dengan sistem yang bertukar informasi dengannya, dan dengan manusia yang menggunakannya. DFD diperlukan untuk desain ini. Architectural design mendefinisikan relasi antara elemen-elemen struktural utama, pola desain yang digunakan untuk mencapai kebutuhan yang ditentukan untuk sistem dan batasan-batasan yang mempengaruhi bagaimana desain arsitektural ini diterapkan. Desain ini berdasarkan spesifikasi sistem, model analisis (bagian DFD) dan interaksi antara subsistem. Data design mengubah informasi menjadi struktur data untuk mengimplementasikan software. Data design dibuat berdasarkan data dictionary dan ERD. TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 15

maintenance criteria

response time throughput memory

extensibility modifiability adaptability portability readability

dependability criteria

cost criteria

robustness reliability availability fault tolerance security safety

development deployment upgrade maintenance administration traceability

end user criteria utility usability TI1153 – Konsep & Prinsip Desain

© Restyandito - 16

Konsep & Prinsip Desain - 4

TI 1153 REKAYASA PERANGKAT LUNAK 1

Design Issues

Design Issues

data management — Bagaimana penanganan data?

‰

Sistem dijalankan pada Perangkat Lunak/Perangkat Keras apa? ƒ hardware ƒ System software ƒ distribution

➠ files? relational DBMS? object-oriented DBMS? access control — Bagaimana penentuan akses?

➠ global access table? access control list? capability?

‰

Bahasa pemrograman apa yang dipakai? ƒ OO, non-OO ƒ memory management

control flow — Bagaimana proses dimulai dan diatur?

➠ procedure-driven? event-driven? threaded? ‰

boundary conditions

Bagaimana sistem yang sudah ada? ƒ ƒ ƒ ƒ

➠ system start-up, system shutdown ➠ exceptions ‰

DBMS UIMS Network facilities legacy systems

Bagaimana organisasi / orang yang terlibat? ƒ Lokasi yg terdistribusi ƒ Kompetensi tim

TI1153 – Konsep & Prinsip Desain

© Restyandito - 17

Konsep Desain

TI1153 – Konsep & Prinsip Desain

© Restyandito - 18

Konsep Desain

1. ABSTRACTION

1. ABSTRACTION

Abstraction adalah gambaran dari fungsi suatu program. Gambaran ini bisa bertingkat-tingkat. Tingkat yang paling atas adalah gambaran suatu fungsi program dengan menggunakan bahasa alami. Pada tingkat terendah, menghasilkan abstraksi yang bersifat prosedural / langkah perlangkah dengan menggunakan istilah yang teknis dan bisa diimplementasikan menjadi fungsi program.

Contoh: Iklan Part Time Job - Fungsi pendaftaran calon part-timer

Pada saat beralih dari tingkat ke tingkat, kita menggunakan procedural dan data abstraction. Procedural abstraction adalah urutan prosedur yang mempunyai tujuan khusus,dan data abstraction adalah koleksi data yang digunakan pada fungsi tersebut.

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 19

Abstraction 1 (highest level) Calon part-timer dalam melakukan upload syarat-syarat yang diperlukan untuk melamar: surat lamaran, CV, foto, transkrip, data diri. Abstraction 2 (lower level) Procedural abstraction : tampilkan pilihan part-time job input data verifikasi format kirim data TI1153 – Konsep & Prinsip Desain

Data abstraction : nama is STRING nim is STRING foto is IMAGE FILE surat_lamaran is PDF FILE © Restyandito - 20

Konsep & Prinsip Desain - 5

TI 1153 REKAYASA PERANGKAT LUNAK 1

Konsep Desain

Konsep Desain

2. REFINEMENT

3. MODULARITY

Refinement adalah penjelasan detil dari abstraction Refinement membantu designer untuk memperlihatkan detil dari lowest level dari abstraction. Abstraction dan refinement merupakan konsep yang saling melengkapi. Contoh dari refinement tentang fungsi sebuah pintu

Software dibagi-bagi menjadi beberapa component yang disebut modul-modul. Modul-modul ini nantinya disatukan / diintegrasikan untuk memenuhi kebutuhan sistem. Dalam pembentukan modul-modul berlaku pernyataan-pernyataan berikut: Jika C(p1) > C(p2) dimana C adalah complexity dari suatu modul, maka E(p1) > E(p2) dimana E adalah waktu yang diperlukan. Semakin rumit sebuah modul, maka waktu yang digunakan untuk menyelesaikan modul tersebut makin banyak. C(p1+p2) > C(p1) + C(p2) dan

TI1153 – Konsep & Prinsip Desain

© Restyandito - 21

Konsep Desain

TI1153 – Konsep & Prinsip Desain

3. MODULARITY

Modul yang rumit dipecah lagi menjadi beberapa modul untuk memudahkan penyelesaian masalah. Namun semakin banyak modul, maka waktu/biaya untuk integrasikan modul-modul tersebut juga makin tinggi.

Menurut Wasserman95

© Restyandito

© Restyandito - 22

Konsep Desain

3. MODULARITY

TI1153 – Konsep & Prinsip Desain

E(p1+p2) > E (p1) + E(p2)

© Restyandito - 23

Modular decomposition (function) –High-level description of functions –Lower-level explanations of component organization and interface Data-oriented decomposition (data) –High-level description of data structures –Lower-level description of what data are involved and how they are related Event-oriented decomposition (events) –High-level description of states –Lower-level description of state transformations

TI1153 – Konsep & Prinsip Desain

© Restyandito - 24

Konsep & Prinsip Desain - 6

TI 1153 REKAYASA PERANGKAT LUNAK 1

Konsep Desain

Konsep Desain

3. MODULARITY

4. SOFTWARE ARCHITECTURE

Outside-in design (user inputs) –High-level description of all possible inputs –Lower-level description of system response to each input

struktur software secara keseluruhan : struktur hirarki / berjenjang dari modul-modul program.

Object-oriented design (objects) –High-level description of object types –Lower-level description of object attributes, actions, and relations

TI1153 – Konsep & Prinsip Desain

© Restyandito - 25

Konsep Desain

Berapa sudut pandang arsitektur perangkat lunak: – conceptual atau logical view (major design elements) – implementation view (modules, packages, etc) – process view (concurrent systems) – deployment view (distributed systems)

TI1153 – Konsep & Prinsip Desain

© Restyandito - 26

Konsep Desain

4. SOFTWARE ARCHITECTURE

5. SOFTWARE PROCEDURE

Untuk menggambarkan struktur modul-modul tersebut beberapa model yang ada adalah : - framework model : identifikasi pola yang berulang-ulang - dynamic model : identifikasi bagaimana konfigurasi sistem berubah karena kejadian-kejadian tertentu - process model : fokus pada proses teknis yang harus dikerjakan sistem - functional model : menggambarkan hirarki sistem berdasarkan fungsinya

Fokus pada detil proses pada tiap modul. Prosedur menjelaskan proses, urutan kejadian, proses perulangan, penentuan keputusan / arah. Ini bisa digambarkan dengan menggunakan Flow Chart yang bertingkat.

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 27

6. INFORMATION HIDING Ide dari information hiding (menyembunyikan informasi) adalah modul dirancang sedemikian rupa sehinga inforamsi (prosedur dan data) yang di dalamnya tidak dapat di akses oleh modul lain yang tidak memerlukannya. Modul yang efektif adalah modul yang berdiri sendiri dan berkomunikasi dengan modul lain yang memang diperlukan. TI1153 – Konsep & Prinsip Desain

© Restyandito - 28

Konsep & Prinsip Desain - 7

TI 1153 REKAYASA PERANGKAT LUNAK 1

Desain Arsitektur

Desain Arsitektur

PIPES AND FILTERS MODEL

PIPES AND FILTERS MODEL

Sistem merupakan serangkaian komputasi independen (filter) yang secara bertahap merubah (transform) masukan.

Keuntungan ; Filter dapat digunakan kembali ; sistem dapat diextends ; concurrency Kerugian : batch processing : bagaimana menangani aplikasi yg interaktif? : filter dapat menduplikasi fungsionalitas : bagaimana menangani error?

TI1153 – Konsep & Prinsip Desain

© Restyandito - 29

Desain Arsitektur

TI1153 – Konsep & Prinsip Desain

© Restyandito - 30

Desain Arsitektur

REPOSITORY MODEL

REPOSITORY MODEL

Pada model ini data disimpan secara terpusat untuk semua sub-sistem.

Keuntungan ; Efisien untuk share jumlah data yang besar ; Sub-system tidak perlu repot dengan bagaimana data dibuat dan manajemen terpusat contoh: backup, keamanan, re-index. Kerugian : Sub-system harus mengikuti model yang sudah ditetapkan. : Evolusi data sulit dan mahal : Sulit untuk distribusi layanan secara efisien, karena yang melayani hanya satu.

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 31

TI1153 – Konsep & Prinsip Desain

© Restyandito - 32

Konsep & Prinsip Desain - 8

TI 1153 REKAYASA PERANGKAT LUNAK 1

Desain Arsitektur

Desain Arsitektur

CLIENT-SERVER MODEL

CLIENT-SERVER MODEL

Model ini terdiri dari sekumpulan server yang berdiri sendiri dan masing-masing menyediakan layanan untuk sub-sistem. Ada clientclient (sub-system) yang menggunakan layanan server dan tersedia network yang mengijinkan client untuk akses layanan dari server.

Keuntungan ; Distribution data secara langsung ; Penggunaan sistem jaringan secara efektif –hardware jadi murah ; Mudah untuk tambahkan server baru atau updgrade server yang sudah ada Kerugian : Tidak ada data model, jadi organisasi data macam-macam, sehingga integrasi data sulit : Redundant management : Tidak ada pusat register nama dan service, sehingga kalau tidak tahu nama server dan service-nya sulit ditemukan

TI1153 – Konsep & Prinsip Desain

© Restyandito - 33

Desain Arsitektur

TI1153 – Konsep & Prinsip Desain

© Restyandito - 34

Desain Arsitektur

LAYERING MODEL

LAYERING MODEL

Model ini membangun sistem dengan lapisan-lapisan hirarkis dan protokol-protokol interaksi. -Lapisan dalam, menyediakan servis untuk lapisan luar -Lapisan luar, berlaku sebagai ‘klien’ dari lapisan dalam

TI1153 – Konsep & Prinsip Desain

© Restyandito

© Restyandito - 35

TI1153 – Konsep & Prinsip Desain

© Restyandito - 36

Konsep & Prinsip Desain - 9

TI 1153 REKAYASA PERANGKAT LUNAK 1

Desain Arsitektur LAYERING MODEL Keuntungan ; Abstraksi hirarkis ; Relatif mudah untuk menambah lapisan ; Lapisan dapat digunakan kembali

PRINSIP DESAIN

Kerugian : Sulit untuk membuat struktur sistem pada lapisan : Abstraksi hirarkis tidak selalu tampak dari requirement : performance

TI1153 – Konsep & Prinsip Desain

© Restyandito - 37

Prinsip Desain

Beberapa prinsip desain yang baik diantaranya: — Usability — Efficiency — Reliability — Maintainability — Reusability

© Restyandito

© Restyandito - 38

Prinsip Desain

Desain yang baik, secara umum jika dapat meningkatkan keuntungan dengan mengurangi biaya dan meningkatkan pendapatan.

TI1153 – Konsep & Prinsip Analisis

TI1153 – Konsep & Prinsip Analisis

Prinsip Desain #1 Divide and conquer Memecahkan masalah yg besar lebih sulit dibandingkan dengan menyelesaikan serangkaian masalah yang kecil-kecil ) sekelompok orang bekerja utk masalah tertentu ) tidak semua orang memiliki keahlian / spesialisasi ) bagian-bagian yg kecil lebih mudah dipahami ) bagian bisa diubah tanpa mempengaruhi bagian lain Apa yang dibagi? ? sistem terdistribusi Ö client server ? sistem Ö sub-sistem ? sub-sistem Ö beberapa package ? package Ö class Ö method

© Restyandito - 39

TI1153 – Konsep & Prinsip Analisis

© Restyandito - 40

Konsep & Prinsip Desain - 10

TI 1153 REKAYASA PERANGKAT LUNAK 1

Prinsip Desain

Prinsip Desain

Prinsip Desain #2 High Cohesion

Prinsip Desain #3 Low Copling

Sub-sistem / modul yg berhubungan erat dipisahkan dari subsistem / modul yg tidak berhubungan. Jenis-jenis kohesi: ˆ functional ➠ satu modul satu fungsi (single computation) ˆ layer ➠ fasilitas utk mengakses fungsi2 yg berhubungan ˆ communicational ➠ modul yg mengakses/memanipulasi data yg sama ˆ sequential ➠ procedure yg menjadi input utk procedure berikutnya ˆ Procedural ➠ procedur yg saling menggunakan satu dg lain ˆ temporal ➠ modul yg dijalankan pada saat yg bersamaan ˆ utility ➠ utility yg berhubungan dan tidak dapat dikelompokkan di salah satu kohesi di atas TI1153 – Konsep & Prinsip Analisis

© Restyandito - 41

Prinsip Desain

content ➠ satu komponen dpt memodifikasi data dr komponen lain common ➠ penggunaan variabel global control ➠ satu komponen memanggil procedur di komponen lain stamp ➠ satu komponen menggunakan obj lain sbg argumen data ➠ tipe argumen yhg digunakan berupa primitive/class library routine ➠ suatu rutin (method) memanggil rutin yg lain inclusion/import ➠ komponen mengimport/include package external ➠ komponen memiliki ketergantungan dg faktor eksternal seperti OS, shared library, perangkat keras

© Restyandito

TI1153 – Konsep & Prinsip Analisis

© Restyandito - 42

Prinsip Desain #4 High Level Abstraction

Jenis-jenis kopling:

TI1153 – Konsep & Prinsip Analisis

X Prinsip Desain

Prinsip Desain #3 Low Copling ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ

Copling terjadi jika terjadi saling ketergantungan antar modul

© Restyandito - 43

Desain yang menyembunyikan detail sehingga mengurangi kompleksitas

Prinsip Desain #5 Increase Reusability Prinsip Desain #6 Design for Flexibility Mengantisipasi perubahan yg mungkin terjadi di masa depan ) mengurangi kopling dan meningkatkan kohesi ) membuat abstraksi ) biarkan opsi-opsi tetap terbuka

TI1153 – Konsep & Prinsip Analisis

© Restyandito - 44

Konsep & Prinsip Desain - 11

TI 1153 REKAYASA PERANGKAT LUNAK 1

Prinsip Desain

Referensi

Prinsip Desain #7 Anticipate Obsolesence Merencanakan untuk mengikuti perkembangan teknologi

) hindari penggunaan teknologi yg masih dini ) hindari penggunaan library yg spesifik pada environment tertentu

) cari SW yg memiliki dokumentasi / library yg baik ) pilih vendor yang memiliki dukungan jangka panjang ) gunakan teknologi dan standar yang didukung oleh banyak

ƒ Pressman, Roger S., Software Engineering: A Practitioner’s Approach, 6th Edition, McGraw-Hill, 2005 (bab 9) ƒ Pressman,Roger S., Rekayasa Perangkat Lunak: Pendekatan Praktisi (Buku 1), Penerbit Andi, 2002 (bab 13)

vendor

Prinsip Desain #8 Design for Portability Prinsip Desain #9 Design for Testability TI1153 – Konsep & Prinsip Analisis

© Restyandito - 45

TI1153 – Konsep & Prinsip Desain

© Restyandito - 46

The End

terima kasih

© Restyandito

Konsep & Prinsip Desain - 12