Complete Sesion
M Reza R I.,S.Kom,.M.T.I
Kata pengantar
Definisi design oleh IEEE6 10.12-90 adalah sebagai berikut :
“proses pendefinisian arsitektur, komponen, interface dan
karakteristik lain dari sistem atau komponen” dan “ hasil dari
proses itu”. Di tampilkan sebagai proses, software design
adalah aktivitas terus menerus dari software engineering yang
mana software requirements dianalisa dalam rangka untuk
menghasilkan deskripsi dari struktur internal software yang
berperan sebagai basis untuk konstruksinya. Lebih pastinya,
sebuah softaware design (hasilnya) harus dapat
mendeskripsikan arsitektur software.Karenanya, bagaimana
software dipecah dan disusun menjadi komponen-komponen,
dan tampilan antara komponen-komponen tersebut, harus juga
dapat mendeskripsikan komponen pada tingkatan detil yang
menyediakan konstruksi mereka.
Software design memainkan peranan penting
dalam membangun software. Software design
mengijinkan software engineers untuk
membuat beberapa model yang membentuk
sejenis blueprint dari solusi menjadi
implementasi.
Aktivitas Software design
Dalam daftar standar software life cycle process
seperti pada Software Life Cycle Processes, software
design terdiri atas dua aktivitas yang sangat sesuai
antara software requirements analysis dan software
construction :
- Software architectural design(sering disebut
toplevel design) : Menggambarkan software’s
top-level structure dan mengorganisasi dan
mengidentifikasi berbagai komponen.
- Software detailed design : menggambarkan tiap
komponen secara cukup mendetail untuk
konstruksinya.
General Concepts design
Software bukan satu-satunya media yang
melibatkan desain. Dalam pemahaman secara
umum, kita dapat melihat desain sebagai
bentuk pemecahan masalah. Sebagai contoh,
kita mengambil konsep dari masalah yang
tidak mempunyai solusi nyata, sangat menarik
sebagai bagian untuk memahami batasan dari
desain. Sejumlah ide dan konsep lain juga
menarik untuk memahami desain dalam
pemahaman umum : tujuan, batasan, alternatif,
representasi dan solusi.
Software Design Process
Software design secara umum terdiri atas proses dua
langkah:
- Architectural Design
Architectural design mendeskripsikan bagaimana
software dipecah dan disusun menjadi beberapa
komponen (the software architecture)
- Detailed Design
Detailed design mendeskripsikan perilaku khusus
komponen tersebut. Hasil dari proses tersebut
merupakan kumpulan dari model-model dan artefak
yang merekam keputusan utama yang telah diambil
1.4. Enabling Techniques
Prinsip dari Software design , juga disebut dengan
teknik penyediaan, adalah ide utama berdasarkan
pada berbagai pendekatan dan konsep yang berbeda
dari software design.
Macam Enabling Techniques sebagai berikut :
Abstraction
Coupling and cohesion
Decomposition and modularization
Encapsulation/information hiding
Separation of interface and implementation
Sufficiency, completeness and primitiveness
1.4.1 Abstraction
Abstraction adalah karakteristik dasar dari
sebuah entitas yang membedakan entitas
tersebut dari entitas yang lain
Abstraction mendefinisikan batasan dalam
pandangan viewer
Abstraction bukanlah pembuktian
nyata,hanya menunjukkan intisari/pokok dari
sesuatu
1.4.2. Coupling and cohesion
Coupling didefinisikan sebagai kekuatan
hubungan antara module, sementara
cohesion didefinisikan bagaimana elemen-
elemen membuat modul tersebut saling
berkaitan.
1.4.3. Decomposition modularization
Pendekomposisian dan pemodularisasian
software besar menjadi sejumlah software
independen yang lebih kecil, biasanya
dengan tujuan untuk menempatkan
fungsionalitas dan responsibilitas pada
komponen yang berbeda.
1.4.4 Encapsulation
Encapsulation adalah menyembunyikan
implementasi dari client, sehingga client hanya
tergantung pada interface
Ilustrasi Encapsulation
Seorang Professor bisa megajar 4 class pada
semester depan
1.4.5. Separation of interface and
implementation
Pemisahan interface dan implementasi
melibatkan pendefinisian sebuah komponen
melalui penspesifikasian sebuah public
interface, diketahui oleh clients, terpisah dari
detil bagaimana sebuah komponen
direalisasikan.
1.4.6. Sufficiency, completeness and
primitiveness
Pencapaian ketercukupan, kelengkapan dan
primitiveness, berarti memastikan bahwa
komponen software menangkap semua
karakteristik penting dari sebuah abstraksi
dan tidak lebih.
Key issue in software design
Architectural structures
Sebuah sistem famili yag terkait dengan pattern
sebuah vocabulary dari komponen dan connector type
Suatu batasan dimana dapat dikombinasikan
Creational patterns
membuat sebuah object berdasarkan
prototype yng dibuat terlebih dahulu
contoh : builder, factory, prototype, singelton
Structural Pattern
contoh : adapter, bridge ,proxy
Behavioral Pattern
contoh: command, visitors, iterator
3.3 Families of programs and
Frameworks
penggunaan kembali desain dari sebuah perangkat
lunak untuk mendesain families dari perangkt lunak.
Hal tersebut disebut juga software product line
RegistrationForm ScheduleAlgorithm
RegistrationManager
addStudent(Course, StudentInfo)
Course
name
RegistrationUser numberCredits
name
Student open()
addStudent(StudentInfo)
major
Professor
tenureStatus
CourseOffering
location
open()
addStudent(StudentInfo)
Object diagrams
pulseRate: height:
PhenomenonType PhenomenonType
People.dll
User
Course.dll
Course
Courses.dll
People.dll
Student Professor
Course Course
Offering
Collaboration responsibilities cards
(CRCs)
digunakan untuk menandakan nama dari
suatu komponen (class), responsibilities, dan
nama komponen lain yang terkait.
Deployment Diagram
Deployment diagram menunjukkan kofigurasi run-time
processing nodes dan komponen yang bergantung padanya.
Registration Database
Main
Library Building
Dorm
ERD Notation
One common form:
(0, m)
object1 relationship object 2
(1, 1)
attribute
Another common form:
object1 relationship
object 2
(0, m) (1, 1)
The ERD: An Example
NmDepan Inisial NmBlk
Nama
JenisKel bekerja
untuk
Pegawai Departemen
NoKTP
mengepalai
(0,N )
JmlPegawai
TglMulai
mengatur
bekerja
memimpin
pada
(1,1 )
menanggung
LamaJam Proyek
(1,1 )
Nama Hubungan
JenisKel TglLahir
Interface description languages (IDLs)
Student
Attend
class
aCourse : theManager :
CurriculumManager
Course
4: new course
Data flow diagrams (DFDs)
Data flow diagram (DFD) – suatu model proses yang
digunakan untuk melukiskan alir data melalui suatu sistem
dan pekerjaan atau pengolahan yang dilakukan oleh sistem
itu. Atau yang biasa disebut juga dengan bubble chart,
transformation graph, and process model.
Simple Data Flow Diagram
Decision tables and diagrams
digunakan untuk merepresentasikan
kombinasi complex dari suatu kondisi dan
aksi.
Flowcharts and structured flowcharts
1: fill in info
2: submit
3: add course(Sue, math 01)
4: are you open?
5: are you open?
6: add (Sue)
7: add (Sue)
Statechart Diagram
[ Count = 10 ] ^Course
Cancel course
Report.Create report
Cancelled Closed
Cancel course
Formal Specification Language
Mathematical formal yang didasarkan pada
logika dengan pendukungan beberapa
bahasa pemrograman (e.g. type system and
parameterization)
Merupakan non-executable models
Dirancang untuk menetapkan apa yang akan
dihitung dan bukan bagaimana perhitungan
harus terpenuhi
Bahasa formal didasarkan pada axiomatic set
theory atau logika higher-order.
Program Design Language
(PDL) if condition x
then process a;
else process b;
endif
if-then-else PDL
easy to combine with source code
easier to maintain
3.6 Software Design Strategies and
Methods
General Strategies
Function-oriented (structured) Design
Object-oriented Design
Data-structure Centered Design
Component-based Design (CBD)
Other Methods
General Strategies
Beberapa contoh dari kegunaan strategi
umum dalam proses desain adalah divide-
and-conquer and stepwise refinement, top-
down vs bottom-up strategies, data
abstraction and information hiding, use of
heuristics, use of patterns and pattern
languages, use of an iterative and
incremental approach.
Data Abstraction
door
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
details of enter
algorithm
walk to door;
reach for knob;
module • algorithm
controlled
interface • data structure
• details of external interface
clients "secret"
Shared memory
F1 F2 F3
F4 F5
A function-oriented view of design