Terjemahan model analisis menjadi desain software
procedural design EntityRelationship Diagram
Data Flow Diagram
interface design
Data Dictionary
architectural design State-Transition Diagram
data design
Software Design/ Disain PL Definisi Umum dari disain the process of applying various techniques and principles for the purpose of defining a device, a process, or a system in sufficient detail to permit its physical realization.
Goal/Tujuan: Membuat model yang akan diimplementasikan
Engineering or Art?/ Engineering / Seni
Software Design Model Functional model
Information model
Behavioral model
Data design Design
Architectural design Code
Other requirements
Procedural design
Program modules
Test
Integrated & validated software
Terjemahan Model Analisis (cont.) Data design mengubah model informasi (entity relationship diagram dan data dictionary) menjadi struktur data Architectural design berisi hubungan antar elemen dalam program Interface design menjelaskan bagaimana bagaimana komunikasi di dalam perangkat lunak, dengan sistem, dan dengan manusia yang menggunakannya. Sebuah interface mengandung maksud sebuah aliran informasi.
Data Design Mengubah objek data yang didefinisikan pada model analisis menjadi struktur data yang ada dalam perangkat lunak Atribut yang dimiliki objek data, hubungan di antara objek data, dan penggunaannya dalam program, semuanya mempengaruhi pemilihan struktur data
Architectural Design Menggunakan karakteristik aliran informasi dalam model analisis untuk menghasilkan struktur program Sebuah data flow diagram dipetakan menjadi struktur program menggunakan dua pendekatan Transform mapping Transaction mapping
Transform mapping : diterapkan untuk sebuah aliran data yang menunjukkan batas yang jelas antara data yang masuk dan yang keluar
Architectural Design (cont.) DFD dipetakan menjadi sebuah struktur yang mengalokasikan kontrol menjadi input, pemorsesan, dan output bersama dengan hirarki modul Transaction mapping : diterapkan jika sebuah item informasi menyebabkan percabangan DFD dipetakan menjadi sebuah struktur yang mengalokasikan kontrol menjadi sebuah substruktur yang mendapatkan dan mengevaluasi sebuah transaksi
Architectural Design Tujuannya adalah untuk membuat struktu program yang modular dan merepresentasikan hubungan control diantara modul Mengkombinasikan program dan struktur dengan mendefinisikan interfaces yang mengijinkan data mengalir diseluruh program Holistic view dari software
Interface Design Meliputi antarmuka program internal dan eksternal serta desain untuk antarmuka pengguna Desain antarmuka internal dan eksternal diarahkan oleh informasi yang diperoleh dari model analisis
Procedural Design Setelah data & program structure telah ditetapkan, selanjutnya menentukan detil procedural tanpa ambiguity mengubah elemen struktural dari arsitektur program menjadi deskripsi prosedural dari komponen perangkat lunak Design Notations Structured programming Graphical design notation Tabular design notation Program design language (PDL)
Petunjuk Dalam Melakukan Desain Sebuah desain harus menunjukkan organisasi secara hirarkis Sebuah desain harus bersifat modular; jadi, sebuah perangkat lunak seharusnya dapat dibagi-bagi secara lojik menjadi beberapa elemen yang melakukan fungsi atau subfungsi secara spesifik Sebuah desain harus mengandung abstraksi data dan prosedural Sebuah desain harus mengarah pada modulmodul (prosedur atau subrutin) yang menunjukkan karakteristik fungsional
Petunjuk Dalam Melakukan Desain (cont.) Sebuah desain harus mengarah pada antarmuka yang mengurangi kompleksitas hubungan antar modul dan dengan lingkungan luar Sebuah desain harus diturunkan menggunakan metode yang berulang yang diarahkan oleh informasi yang dihasilkan pada tahap analisis perangkat lunak
Prinsip Desain Proses desain tidak boleh mengalami tunnel vision Desain harus dapat dilacak ke model analisis Tidak melakukan desain pada hal yang sama berulang-ulang Desain harus merepresentasikan masalah pada keadaan nyata Desain harus memperlihatkan keseragaman dan integrasi
Prinsip Desain (cont.) Desain harus terstruktur untuk mengatisipasi adanya perubahan
Desain bukan coding, coding bukan desain Penilaian kualitas desain harus dilaksanakan pada saat desain tersebut dibuat Desain harus di-review untuk meminimasi kesalahan konseptual
Software Design Fundamentals Good design is not accomplished by chance Disain yang baik tidak diselesaikan secara kebetulan
Fundamental concepts provide the framework for getting it right
Design Fundamentals Abstraction Refinement Modularity Software Architecture Control Hierarchy Data Structure Software Procedure Information Hiding
Design Fundamentals Abstraction
Levels of detail/language used to describe a problem 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.
Design Fundamentals (cont.) Refinement/perbaikan Top-down strategy In each step, one or several instructions of the given program are decomposed into more detailed instructions. This successive decomposition or refinement of specification terminates when all instructions are expressed in terms of any underlying computer or programming language. [Wirth]
Modularity Membagi software menjadi kompnen-komponen terpisah yang terintegrasi untuk menampilkan kemampuan software
Design Fundamentals (cont.) Software Architecture The hierarchical structure of procedural components & the structure of data Transition between analysis and design
Control Hierarchy/Program Structure Organization of modules that implies a hierarchy of control Metrics - depth, width, fan-out, fan-in Visibility & connectivity
Control Hierarchy Manager
Module A
Module D
Module F
Module B
Module E
Module K
Module G
Module H
Module I
Module J
Module C
Module L
Module N
Module M
Module O
Module R
Module P
Module Q
Design Fundamentals (cont.) Data Structure Logical representation of the relationship among individual data elements Scalar, sequential vector, array, linked list, hierarchical data structure
Software Procedure Processing details of each module Precise specification includes sequence of events, decision points, repetitive operations, data organization
Design Fundamentals (cont.) Information Hiding Modules should be characterized by design decisions that each hides from all others Modules are designed so that information within a module is inaccessible to other modules with no need for the information Defines and enforces access constraints
Modular Design Benefits Reduces complexity Facilitates change Easier implementation afforded by parallel development
Activation Mechanisms Pattern of Control
Functional Independence Design software so that each module addresses a specific sub-function of requirements and has a simple interface when viewed from other parts of the program structure
Benefits Easier to develop Easier to maintain & test
Measures of Independence Cohesion Coupling
Cohesion A cohesive module should do just one thing. Levels of Cohesion Coincidental Logical Temporal Procedural Communicational Sequential Functional
Coupling Measure of interconnection among modules Levels of Coupling No direct coupling Data coupling Stamp coupling Control coupling External coupling Common coupling Content coupling
Dokumentasi Desain I. II. III. IV. V. VI. VII.
Lingkup Sistem Desain Data Desain Architectural Desain Antarmuka Desain Prosedural Catatan Khusus Appendix