Transcript

Software Design Fundamentals

Prinsip Fundamental dalam Desain Perangkat LunakIntroduksiPrinsip DesainSEN-261 : Rekayasa Perangkat LunakTazeen MuzammilTrjmhn: Syakur Rahman1S/W Design Fundamentals2Desain Perangkat LunakDefinisi umum desain suatu proses menerapkan berbagai teknik dan prinsip dengan tujuan menentukan suatu perangkat, proses atau sistem dalam tingkat kejelasan yang cukup untuk dapat menghasilkan produk akhir.Tujuan:Untuk menghasilkan suatu model atau representasi yang nantinya akan dibangunDisiplin ilmu terkait:Desain dataDesain arsitekturDesain antar mukaDesain komponen2Kualitas desain dan perangkat lunakKualitasDalam RPL, desain adalah titik pengembangan kualitas.Desain memberikan suatu representasi perangkat lunak yang dapat ditentukan kualitasnya.Desain adalah satu-satunya cara untuk menerjemahkan kebutuhan pelanggan menjadi suatu perangkat lunak atau sistem.Desain perangkat lunak merupakan fondasi untuk setiap tahap pada rekayasa perangkat lunak.S/W Design Fundamentals33Karakteristik suatu desain yang baikDesain yang dikembangkan mencakup semua kebutuhan eksplisit hasil analisis, dan mengakomodir semua kebutuhan implisit pelanggan.Desain harus dapat dibaca dengan mudah, sehingga menjadi suatu panduan bagi pembuat kode maupun penguji dan pendukung aplikasi.Desain memberikan gambaran utuh mengenai perangkat lunak yang dirancang, tercakup dalamnya adalah data, fungsi maupun perilaku perangkat lunak dilihat dari sudut pandang implementasi.S/W Design Fundamentals4S/W Design Fundamentals5Panduan umum desainSuatu desain sepatutnya menggunakan suatu struktur arsitektur yang 1) telah dikembangkan dengan pola desain yang dikenal secara umum, 2) terdiri atas komponen yang sesuai dengan karakteristik suatu desain yang baik 3) dan dapat diterapkan dalam waktu yang cepat. Dibagi secara jelas ke dalam komponen-komponen yang hanya menjalankan suatu tugas atau sub-tugas tertentu.Menghasilkan suatu antar muka yang mengurangi kompleksitas antar modul dan lingkungan eksternal.Dihasilkan dengan suatu metode yang dapat diuji kembali, dan didorong oleh informasi yang telah terkumpul pada tahap analisa kebutuhan.Menghasilkan struktur data yang sesuai untuk diterapkan.5S/W Design Fundamentals6Prinsip DesainProses desain harus dilakukan untuk mengakomodir semua tujuan, bukan terpaku atas suatu tujuan sempitDesain dapat ditelusuri kembali oleh analisis modelDesain tidak mengulang proses yang telah dilakukanDesain menunjukkan keseragaman dan integritasDesain dirancang untuk mengakomodir perubahanDesain bukanlah pemrograman dan pemrograman bukanlah desainDesain harus diulas agar meminimalisir kesalahan logika

A good designer should consider alternative approaches, judging on the requirements of the problem, the resources available to do the job and the design concepts.Because a single element of the design model often traces to multiple requirements, it is necessary to have a mean for tracking how requirements have been satisfied by the design.Time is short and resources are limited. Deign time should be invested in representing new ideas and integrating those patterns that already exist.Rules of style and format should be defined for a design team before design work begins. The design is integrated if care is taken in defining interfaces between design components.-The only design decisions made at the coding level address the small implementation details that enable the procedural design to be coded.A design team should ensure that major conceptual elements of the design (omission, ambiguity, inconsistency) have been addressed before worrying about the syntax of the design model.

6S/W Design Fundamentals7Model Desain Perangkat LunakModel informasiModel fungsionalModel perilakuKebutuhan lainnyaDesainPemrogramanPengujianDesain dataDesain arsitekturalDesain tingkat Prosedur/KomponenModulprogramPerangkat lunakterintegrasi& tervalidasiDesain antar muka7S/W Design Fundamentals8Desain dataDesain data mengubah model informasi yang diciptakan pada tahap analisis menjadi suatu struktur data yang menjadi kebutuhan perangkat lunak. Entitas dan hubungan data didefinisikan secara umum dengan ERD, dan secara spesifik dengan Kamus Data, yang selanjutnya menjadi landasan dalam aktivitas desain selanjutnyaAktivitas utama pada tahap desain data ialah menentukan representasi logis entitas data (tipe data) yang telah teridentifikasi pada tahap analisis kebutuhan dan spesifikasi. Pemilihan representasi dapat berlandaskan atas analisis algoritma untuk mendapatkan perilaku yang paling efisien, atau berdasarkan operasi yang dilakukan pada entitas tersebut.8Data Specification PrinciplesIdentify all data structures and associated operationsEstablish a data dictionary to define data & program designRepresentation of data structure should only be known to modules with direct use of data within the structureDevelop a library of useful data structuresLanguage should support abstract data types

S/W Design Fundamentals9Desain arsitekturalBertujuan untuk mengembangkan suatu struktur program modular yang merepresentasikan hubungan antar tiap modul

Diperoleh dari spesifikasi sistem, analisis model, dan interaksi sub-sistem yang telah didefinisikan pada tahap analisis model.9Desain Antar MukaMenggabungkan program dan struktur data dengan menentukan suatu antar muka yang memungkinkan terjadi perpindahan data pada program

Desain antar muka menjelaskan bagaimana perangka lunak berkomunikasi dengan dirinya, antar sistem maupun dengan manusia yang menggunakannya.

Data dan diagram alur data memberikan informasi yang dibutuhkan untuk melakukan desain antar muka

S/W Design Fundamentals1011Desain prosedurMerubah elemen dasar pada arsitektur perangkat lunak menjadi deskripsi prosedural komponen aplikasi

Setelah data dan struktur program ditentukan, menentukan deskripsi dan detail prosedur tanpa ambigu menjadi suatu keharusan

Informasi yang diperoleh dari spesifikasi proses, spesifikasi kendali dan desain perangkat lunak menjadi landasan untuk desain komponen.

11Design NotationsStructured programmingGraphical design notationTabular design notationProgram design language (PDL)Structured Programming Three constructs - (sequence, condition, repetition) with predictable structureLimit procedural design to small number of operationsTakes advantage of chunking to enhance readability, testability, human understandingGraphical design notationFlow-charts (draw sequence, if-then, selection, repetition) Can get overly complex by relying only on structured constructsBox diagrams (draw sequence, if-then-else, repetition, selection) Tabular DesignDecision table (rules, conditions, actions, T/F, X marks action) PDL pseudocode (keywords, free syntax of natural language, subprogram definition)S/W Design Fundamentals12Prinsip Fundamental Desain Perangkat LunakAwal dari pengetahuan seorang pemrogram komputer ialah mengenali perbedaan antara mendapatkan suatu program yang berjalan dengan program yang benar. [Jackson] Abstraksi Penyempurnaan Modularitas Arsitektur Perangkat Lunak Architecture Hierarki kendali Struktur Data Prosedur perangkat lunak Penyamaran informasi12S/W Design Fundamentals13Prinsip Fundamental DesainAbstraksiMerupakan satu cara fundamental yang dapat digunakan untuk mengatasi kompleksitas.Tingkatan kejelasan/bahasa yang digunakan untuk mendeskripsikan suatu permasalahanTingkat tertinggiTingkat bawahTingkat ter-rendahJenis-jenis:Abstraksi proseduralAbstraksi dataAbstraksi kendali

Konsep abstraksi secara psikologis memungkinkan seseorang memusatkan perhatian pada suatu permasalahan secara umum tanpa memedulikan penjelasan dan permasalahan tingkat bawah yang tidak terkait; salah satu fungsi abstraksi adalah memungkinkan seseorang menggunakan konsep dan terminologi yang biasa digunakan pada cakupan permasalahan yang dibahas [Wasserman]13Highest Level - solution stated in broad terms using the language of the problem environmentLower Levels - more procedural, process oriented terminology coupled with implementation oriented terminology in an effort to state a solutionLowest Level - stated in a manner that can be directly implemented

Procedural Abstraction - named sequence of instructions that has a limited and specific function (Open door eg: walk to the door, reach out and grasp knob, turn knob and pull door etc)Data named collection of data that describes a data object (Door eg: door type, swing direction, weight, dimension)Control Abstraction - implies a program control mechanism without specifying internal detail. Example: Synchronization semaphore to coordinate activities in an operating system.

S/W Design Fundamentals14Prinsip Fundamental Desain (lanjut)PenyempurnaanStrategi Top-downAbstraksi dan penyempurnaan merupakan pelengkap

Pada tiap tahap, satu atau beberapa instruksi pada program dipecah menjadi instruksi yang lebih detail. Proses ini terus dilakukan secara berulang hingga semua instruksi merupakan suatu instruksi yang dapat diekspresikan ke dalam bahasa pemrograman. [Wirth]14Refinement: - successive refinement of levels of procedural detail; - develop hierarchy by decomposing a procedural abstraction in a stepwise fashion until programming language statements are reached- process of elaboration, forces designer to elaborate on original statement, providing more detail with each successive refinement

Prinsip Fundamental Desain (lanjut)ModularitasMemecah aplikasi menjadi beberapa komponen, yang sering disebut sebagai modul, yang pada akhirnya diintegrasikan untuk menyelesaikan permasalahanKriteria untuk mengevaluasi metoda desainTingkat keteruraian suatu modulTingkat ketersusunan suatu modulTingkat keter-pemahaman suatu modulTingkat kontinuitas suatu modulTingkat proteksi suatu modulS/W Design Fundamentals15Modularity:- single attribute of software that allows a program to be intellectually manageable- effort and perceived effort of larger task is greater than individual pieces- divide and conquer - easier to solve when broken down into pieces

15S/W Design Fundamentals16Prinsip Fundamental Desain (lanjut)Arsitektur perangkat lunakStruktur hierarkis dari komponen program, cara interaksi komponen dan struktur data yang digunakan tiap komponen.Sifat suatu desain arsitekturSifat strukturalMendefinisikan komponen sistem, cara pembungkusan komponen tersebut, dan interaksi dengan komponen lainnya.Sifat fungsional lainnyaMenjelaskan bagaimana desain arsitektur tersebut memenuhi persyaratan pada performa, kapasitas, ketersediaan, keandalan, keamanan, kemampuan adaptasi, dan karakteristik sistem lainnya.Himpunan sifat yang terkaitKenali pola yang berulang, yang sering dijumpai pada desain sistem yang serupa. Desain yang ada seharusnya mampu digunakan kembali pada desain sistem serupa.

16ArchitectureComponents can be generalized to represent major system elements and their interactions- derived through partitioning process that relates elements of a software solution to parts of a real-world problem- different design methods and problem domains produce different architectures - which is best? We cant answer that, but we can measure certain characteristics of quality structures

Prinsip Fundamental Desain (lanjut)Hierarki kendali /Struktur ProgramPengaturan modul sedemikian rupa sehingga mengimplikasikan hierarki kendaliTingkat kedalaman, tingkat kelebaran, tingkat keterhubungan eksternal, tingkat keterhubungan internal- Diagram kontrol berbentuk pohon

S/W Design Fundamentals17Control Hierarchy- Depth = number of levels of control- Width = Overall span of control- Fan Out = # of modules directly controlled- Fan In = how many modules directly control a module

Visibility - the set of program component s that may be invoked or used as data by a given component, even if indirectlyConnectivity - the set of components directly invoked or used

17S/W Design Fundamentals18Prinsip Fundamental Desain (lanjut)Struktur DataRepresentasi logis tentang keterkaitan antar tiap elemen dataSkalar, vektor, array, linked list, stacks, dsbProsedur perangkat lunakDetail pemrosesan tiap modulSpesifikasi mencakup tahapan kejadian, titik kondisi, perulangan dan organisasi data18Software Procedure- flow chart type stuff

S/W Design Fundamentals19Prinsip Fundamental Desain (lanjut)Penyamaran InformasiTiap modul seharusnya memiliki karakter yang secara sadar didesain agar menyamarkan informasi yang digunakan terhadap modul lainnyaModul didesain sedemikian rupa agar informasi yang tidak dibutuhkan tidak dapat diakses oleh modul lainMendefinisikan dan melaksankan batasan pengaksesan informasi19Information Hiding- of greatest benefit when modifications are required (during testing & maintenance); less propagation of errors

(5 Minutes) Discussion Topic: What are some benefits of modular design?

S/W Design Fundamentals20Desain ModularKeuntunganMengurangi kompleksitasMemfasilitasi perubahanLebih mudah untuk dikembangkanLebih mudah untuk dirawat dan diujiLebih mudah diimplementasikan dalam lingkungan paralel

20single-minded function and aversion to excessive interaction with other modulesEasier to developfunction is compartmentalizedinterfaces are simplifiedEasier to maintain & testsecondary/side effects due to design/code modification are limitedreduces error propagationreusable modules supported

S/W Design Fundamentals21Kemandirian fungsionalRancanglah perangkat lunak agar tiap modul menyelesaikan satu permasalahan spesifik dan memiliki antar muka yang sederhana jika dilihat dari keterhubungan dengan bagian program yang lainKeuntunganLebih mudah untuk dikembangkanLebih mudah untuk dirawat dan diujiTingkat kemandirianKepaduanUkuran secara relatif terhadap tingkat kepentingan fungsional secara modulSuatu modul terpadu (secara ideal) hanya menyelesaikan satu masalah/melakukan satu tugasKeterhubunganTingkat relatif ketergantungan antar modul


Top Related