
Design Engineering and Software Development Overview
Explore the transformative process in design engineering from analysis to model realization, emphasizing key concepts like design quality and process. Dive into the iterative design process for software development, focusing on blueprints and design principles for creating effective software solutions.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Teknik Informatika S1 Rekayasa Perangkat Lunak Design
SILABUS MATA KULIAH 8. Pembahasan UTS + Tugas SKPL 9. Presentasi SKPL 10. Design + Tugas DPPL 11. Presentasi DPPL 12. Testing 13. Presentasi Tugas Besar (1) 14. Presentasi Tugas Besar (2)
Design Engineering 1. Transformasi Perancangan dari Model Analisis ke Model 2. Design Process and Design Quality 3. Design Concepts (Abstract, Architecture, Modularity, Information Hiding, Functional Hiding, Functional Independence, Refinement) 4. Design Model
A Design Note one or more components" in the software design PSPEC Process SPECification
Transformasi dari Model Analisis ke Model Perancangan
Design Process Sebuah proses iteratif melalui kebutuhan yang diterjemahkan ke dalam sebuah cetak biru untuk membangun perangkat lunak. Seluruh proses perancangan, kualitas peningkatan perancangan dinilai dengan sekumpulan perancangan walkthroughs. kajian teknikal formal atau Petunjuk untuk mengevaluasi sebuah perancangan yang baik : Rancangan harus diimplementasikan seluruhnya baik kebutuhan yang explicit dan implicit Rancangan harus mudah dibaca Rancangan seharusnya menyediakan sebuah gambaran lengkap dari perangkat lunak
Design Process Cetak biru (blue print) adalah kerangka kerja terperinci (arsitektur) sebagai landasan dalam pembuatan kebijakan yang meliputi penetapan tujuan dan sasaran, penyusunan strategi, pelaksanaan program dan fokus kegiatan serta langkah-langkah atau implementasi yang harus dilaksanakan oleh setiap unit di lingkungan kerja.
Evolution of S/W Design Development of modular program Structural programming Aspek prosedural dari definisi perancangan Terjemahan dari aliran data atau struktur data ke dalam definisi perancangan. OO design
Design Principles Proses perancangan seharusnya tidak tunnel vision -> Seharusnya mempertimbangkan pendekatan alternatif. Perancangan seharusnya dilacak dari model analisis Perancangan seharusnya menggunakan pola rancangan Perancangan seharusnya meminimalkan jarak intelektual antara software dan masalah yang ada di dunia nyata.
Design Principles (Cont.) Perancangan seharusnya memperlihatkan keseragaman dan keterpaduan. Perancang seharusnya disusun untuk mengakomodasi perubahan. Perancangan harus disusun untuk menghaluskan, ketika data, kejadian, atau operasi menyimpang ditemukan.
Design Principles (Cont.) Perancangan bukan coding, dan coding bukan perancangan. Perancangan harus dinilai untuk kualitas ketika sedang dibuat, bukan setelah jadi. Perancangan kesalahan konseptual. harus direview untuk meminimalkan
Fundamental Concepts Abstraction mengikuti perancangan untuk fokus pada pemecehan masalah tanpa penyimpangan detil di level terendah dihubungkan dengan Refinement menyediakan kompenen perancangan. Proses kesuksesan elaborasi lebih dimana detil perancang untuk setiap
Fundamental Concepts (Cont.) Modularity persetujuan dimana software dapat dimengerti oleh pengujian independent oleh yang lainnya. komponenenya secara Software architecture Keseluruhan struktur dari komponen s/w dan cara dimana struktur menyediakan konseptual integritas untuk sebuah sistem.
Fundamental Concepts (Cont.) Control hierarchy or program structure - merupakan organisasi modul dan menyiratkan hirarki kontrol, tetapi tidak mewakili aspek prosedural dari perangkat lunak (misalnya: urutan peristiwa) Structural mendefinisikan tiga partisi (input, transformasi data, dan output); partisi vertikal (factoring) mendistribusikan kontrol secara top-down (keputusan kontrol dalam modul tingkat atas dan bekerja pengolahan dalam modul tingkat yang lebih rendah) partitioning - partisi horisontal
Fundamental Concepts (Cont.) Data structure - representasi dari hubungan logis antara elemen data individu (memerlukan desain algoritma). Software procedure spsesifikasi yang tepat untuk pengelolaan (event sequences, decision points, repetitive operations, data organization/structure). Information hiding - informasi (data dan prosedur) yang terkandung dalam sebuah modul dapat diakses untuk modul yang tidak perlu untuk informasi tersebut.
Data Abstraction door manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data structure
Data Design Menyaring objek data dan membangun sekumpulan abstraksi data. Mengimplementasikan atribut objek data sebagai satu atau lebih struktur data. Mereview struktur data untuk menjamin bahwa hubungan yang tetap telah ditetapkan. Dibutuhkan struktur data yang sederhana.
Procedural Abstraction open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter
Stepwise Refinement open walk to door; reach for knob; open door; repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat walk through; close door.
Modular Design easier to build, easier to change, easier to fix ...
Functional Independence COHESION - the degree to which a module performs one and only one function. COUPLING - the degree to which a module is "connected" to other modules in the system.
Functional Independence Kohesi Modul yang kohesif seharusnya hanya melakukan satu hal saja (kohesi tinggi = fungsional <> koinsidental). Kopling Sehubungan dengan perangkaian dengan modul lain, maka modul yang baik seharusnya memiliki hubungan yang sederhana (kopling rendah).
Functional Independence Kohesi Derajat/ level dimana sebuah modul membentuk satu dan hanya satu fungsi Kopling Derajat dimana sebuah modul dihubungkan pada modul lain dalam sebuah sistem.
Cohesion and Coupling Spectrum low low *No direct coupling *External coupling *Inclusion or import coupling *Type use coupling *Routine call coupling *Data coupling *Stamp coupling *Control coupling *Common coupling *Content coupling *Coincidental *Utility *Temporal *Procedural *Sequential *Communicational *Layer *Functional high high
Why Information Hiding? mengurangi kemungkinan "efek samping" membatasi pengaruh global dari keputusan desain lokal menekankan komunikasi melalui interface yang dikendalikan melarang penggunaan data global mengarah ke enkapsulasi-atribut dari desain kualitas tinggi Hasil dalam kualitas perangkat lunak yang lebih tinggi
Why Architecture? Arsitektur bukanlah operasi perangkat lunak. Sebaliknya, itu adalah representasi yang memungkinkan seorang insinyur perangkat lunak untuk: 1. menganalisis efektivitas desain dalam memenuhi persyaratan yang dinyatakannya, 2. mempertimbangkan alternatif arsitektur pada tahap ketika membuat perubahan desain masih relatif mudah, dan 3. mengurangi risiko yang terkait dengan pembangunan perangkat lunak.
Architectural Styles Data-centered architectures Data flow architectures Call and return architectures Object-oriented architectures Layered architectures
Deriving Program Architecture Program Architecture
Partitioning the Architecture Horizontal and vertical partitioning are required
Horizontal Partitioning Mendefinisikan cabang terpisah dari hirarki modul untuk setiap fungsi utama Gunakan modul kontrol untuk mengkoordinasikan komunikasi antara fungsi function 3 function 1 function 2
Vertical Partitioning: Factoring Pengambilan keputusan dan kerja yang bertingkat Pengambilan keputusan modul harus berada di atas arsitektur decision-makers workers
Why Partitioned Architecture? Menghasilkan software yang lebih mudah diuji Menunjuk pada software yang lebih mudah dipelihara. Menghasilkan propagasi dari sedikit efek samping Menghasilkan software yang lebih mudah diperluas.
Interface Design 1. Interface Design 2. User Interface Design (Three Golden Rules) 3. User Interface Analysis and Design 4. Data Design 5. Component Level Design
Interface Design Elemen-elemen perancangan interface untuk perangkat lunak menjelaskan Bagaimana arus informasi masuk dan keluar dari sistem, dan bagaimana arus informasi tersebut berkomunikasi diantara komponen2 yang didefinisikan sebagai bagian dari arsitektur.
Interface Design Fokus Interfaces Design 3 Area 1. Inter-modular interface design 2. External interface design 3. Human-Computer Interface (HCI) design
Desain Interface 1. Internal : merupakan desain interface antarmodul dalam PL yang dikendalikan oleh data yang harus mengalir di antara modul-modul. Aliran transformasi dalam DFD merupakan pijakan utama dalam desain ini selain kemampuan bahasa pemrograman.
Desain Interface 2. Eksternal: merupakan interface untuk entitas eksternal (tidak termasuk manusia), misalnya sensor pada PL Safehome. 3. Manusia Mesin: merupakan interface antara manusia dengan PL (Human Computer Interface). Interface ini memiliki tantangan besar karena berkaitan dengan pengguna dengan berbagai karakter yang lebih sulit untuk dipelajari. Terdapat tiga kategori pedoman desain HCI sbb.
Desain Human Computer Interface (HCI) 1. Interaksi Umum Format konsisten Perlindungan thd kegagalan Berikan petunjuk singkat (tools tips) pada setiap button / ikon / nama Berikan umpan balik Konfirmasi untuk aksi destruktif (misal Hapus) Ijinkan pembatalan (misal Undo) Kurangi jumlah informasi yang harus diingat Efisiensi dalam dialog, gerakan (tangan), pemikiran Kategorikan aktivitas sejenis dan posisinya di layar Sediakan Help yang sensitif konteks Gunakan perintah dan nama2 yang pendek
Desain Human Computer Interface (HCI) 2. Input Minimalkan jumlah aksi input (combo box, list, dsb.) Konsisten Berikan kemungkinan kustomisasi input (utk advance user) Mode input harus fleksibel (mouse / keyboard) Non-aktifkan button/ ikon yang tidak relevan dengan aksi Berikan kesempatan untuk mengontrol aliran interaksi (mengubah, membetulkan, mengulang) Sediakan Help Jangan meminta aktivitas manual (perhitungan, tanggal, waktu, dsb) bila dapat dilakukan oleh PL
Desain Human Computer Interface (HCI) 3. Output Tampilkan informasi yang relevan dg konteks Jangan membanjiri pemakai dg informasi Gunakan label, singkatan, warna yg standar dan konsisten Peliharalah konteks visual saat pengguna melakukan zoom-in / zoom-out Pesan kesalahan harus memiliki arti yang jelas Gunakan variasi huruf, indentasi, pengelompokan untuk memudahkan pemahaman Gunakan jendela untuk tipe-tipe informasi yang berbeda Gunakan tampilan alami (bukan angka / grafik) bila memungkinkan Geografi layar dioptimalkan shg tidak ada jendela yang hilang / sulit ditemukan Berikan kemungkinan kustomisasi output (utk advance user) Jangan ada informasi / data yang tidak lengkap / hilang sebagian
User Interface Design Three golden rules Theo Mandel 1. Place user in control What I really would like is a system that reads my mind. It knows what I want to do before I need to do it and makes it very easy for me to get it done. That s all, just that. 2. Reduce the user s memory load The more a user has to remember, the more error-prone interaction with the system will be The system should remember 3. Make the interface consistent
User Interface Design Tiga aturan emas Theo Mandel 1. Menempatkan user di dalam kontrol Apa yang saya inginkan adalah sebuah sistem yang membaca pikiran saya. Dia tahu apa yang ingin saya lakukan sebelum saya butuhkan dan membuat mudah saya untuk melakukannya 2. Mengurangi muatan memori user, Semakin banyak user harus mengingat, semakin banyak interaksi kesalahan dengan sistem Sistem seharusnya mengingat 3. Membuat Interface yang Konsisten
Place User in Control Define interaction in such a way that the user is not forced into performing unnecessary or undesired actions Provide for flexible interaction (users have varying preferences) Allow user interaction to be interruptible and reversible Streamline interaction as skill level increases and allow customization of interaction Hide technical internals from the casual user Design for direct interaction with objects that appear on the screen
Reduce User Memory Load Reduce demands on user's short-term memory (exp. providing visual cues) Establish meaningful defaults ( reset option should be available) Define intuitive short-cuts (easy to remember) Visual layout of user interface should be based on a familiar real world metaphor Disclose information in a progressive fashion
Make Interface Consistent Allow user to put the current task into a meaningful context Maintain consistency across a family of applications If expectations, do not make changes unless there is a good reason to do so past interaction models have created user
User Interface Analysis and Design The models o The human engineer establishes a user model o The software engineer creates a design model o The end-user develops a mental image or user s mental model (system perception) o The implementers create an implementation model The process o User, task, and environment analysis and modeling o Interface design o Interface construction o Interface validation