Software Design.

Slides:



Advertisements
Presentasi serupa
Design Perangkat Lunak
Advertisements

KONSEP PENGEMBANGAN REKAYASA PERANGKAT LUNAK
U M L Unified Modeling Language
Bab 6 PERANCANGAN PERANGKAT LUNAK
Tahapan information engineering
UNIFIED MODELLING LANGUAGE
Minggu 6 Prinsip & Konsep Desain
Perancangan Perangkat Lunak lanjutan Kuliah - 7
PEMODELAN ANALISIS Kuliah - 5
Ian Sommerville Software Engineering
KONSEP DESAIN SOFTWARE DATABASE
BPR – Tahap 1 (Persiapan)
PENGENALAN ANALISA SISTEM BERORIENTASI OBYEK
BAB 2 METODE REKAYASA PERANGKAT LUNAK
METODE REKAYASA PERANGKAT LUNAK
13 KOMPONEN DIAGRAM UML & PROSES MODEL WATERFALL
Analisa dan Desain Objek
Architecture dan design
Fase Analisa Sistem Menggambarkan kebutuhan sistem
PROSES DESIGN SISTEM BASIS DATA
SE3414 RPL: Teknik Berorientasi Objek
Pertemuan 1 Konsep Dasar OOAD
State Transition Diagram
Testing Levels. Activities of Test Engineer Test engineer is an information technology professional who is in charge of ane or more technical test activities,
Database Management System
Kelompok 5 : Asdin Ines Lestari Neng Susanti Siti Robiahtul Adawiyah Vena Senja Maba SOFTWARE REQUIREMENTS.
Arsitektur Perangkat Lunak
Model dan Pemodelan. Topik Bahasan 1. Definisi Model dan Pemodelan 2. Beberapa jenis model 3. Model pada Pengembangan Sistem.
KONSEP PERANCANGAN SISTEM INFORMASI
Metode rpl BY: Y. PALOPAK S.Si., MT..
KONSEP DAN PRINSIP ANALISIS
Unified Modeling Language.  UML  Things  Relationship  Diagram  Architecture View  Use Case View  Design View  Process View  Implementation View.
Summary Materi RPL Mid Semester
Pengantar UML.
Pengembangan Siklus Hidup Sistem
Rekayasa Perangkat Lunak UML (Unified Modelling Language)
Visual Modelling Teguh Sutanto, S.Kom.,M.Kom.
Design Perangkat Lunak
14. PENGUJIAN PERANGKAT LUNAK
Tim RPL Program Studi Teknik Informatika
Object oriented analyst and design
Membuat data flow diagram.
Perancangan Sistem Informasi
Object-Oriented Analysis (OOA)
PENGEMBANGAN PERANCANGAN SISTEM
Rekayasa Perangkat Lunak
Pemodelan objek.
PERANCANGAN SISTEM BERORIENTASI OBJEK DENGAN UML
Object oriented analyst and design
Testing dan Implementasi
Model Konvensional.
PEMODELAN PROYEK (UML)
OOAD – TI S1 Defri Kurniawan UDINUS
PEMODELAN SISTEM METODE TERSTRUKTUR
Pemodelan Sistem Bisnis
KEBUTUHAN & SPESIFIKASI SOFTWARE
REKAYASA PERANGKAT LUNAK
Software Engineering IT Telkom
ANALISIS & DESAIN SISTEM
Unified Modelling Languange (UML)
UML- UNIFIED MODELING LANGUAGE
Perancangan Berorientasi Objek
Analisis dan Desain Berorientasi Obyek
Perancangan Sistem Berorientasi Objek Dengan UML
PEMODELAN ANALISIS RPL – PERTEMUAN 5&6.
Rekayasa Perangkat Lunak
Pertemuan 6 Unified Modeling Language (UML)
Analisa Sistem Informasi
TIM RPL Program Studi Teknik Informatika
PERANCANGAN SISTEM BERORIENTASI OBJEK DENGAN UML
Transcript presentasi:

Software Design

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 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 Aspect adalah bagian dari sebuah program cross cut Aspect bukan merupakan bagian dari software’s functional decomposition, tetapi hanya sebagai properti. Key issues mempunyai peran yang penting untuk developer untuk membuat pilihan dan lebih mudah untuk menemukan solusi

The number of key issues crosscutting Concurrency Bagaimana software dapat membedakan proses, task,threads, synchronisasi dan scheduling Control and handling of events Bagaimana sebuah software dapat mengatur data dan flow control Distribtions of components Bagaimana sebuah software dapat didistribusikan dan semua komponen saling berkomunikasi

The number of key issues crosscutting Error and Exception handling and Fault tolerance Bagaimana sebuah software dapat mengenali sebuah error dan mengetahui bagaimana cara mengatasinya Interaction and presentation Bagaimana sebuah software dapat berinteraksi dengan user dan dapat menampilkan keinginan user Data persistence Seberapa lama data akan disimpan

Software architecture Software architecture adalah sebuah desain umum suatu proses pada sebuah software system., meliputi: Pembagaian software ke dalam subsistem Memutuskan bagaimana saling berhubungan Menentukan alat penghubung “The structure of the components of a program /system, their interrelationships, and principles and guidelines governing their design and devolution over time” (SEI software architecture discussion group)

The importance of software architecture Kenapa kita perlu mengembangkan arsitektur: Agar setiap orang bisa mengerti mengenai sistem yang ada. Untuk membiarkan user bekerja secara individual terhadap sebuah sistem Persiapan untuk perluasan system Menyediakan fasilitas reuse and reusability

3.1 Architectural Structures and view points View menampilkan aspek aspek yang terdapat pada software architecture yang menunjukan spesifikasi software. Architectural structures Sebuah sistem famili yag terkait dengan pattern sebuah vocabulary dari komponen dan connector type Suatu batasan dimana dapat dikombinasikan Architectural structures dapat disebut juga dengan architectural style

Architecture view Use Case View Analisa use case adalah teknik untuk meng-capture proses bisnis dari prespektif user. Aspek statis di-capture dalam use case diagram Aspek dinamis di-capture dalam interaction diagram, statechart diagram dan activity diagram Design View Meliputi class-class, interface, dan collaboration yang mendefinisikan vocabulary system Mendukung kebutuhan fungsional system Aspek statis di-capture dalam class diagram dan object diagram

Architecture view Process View Meliputi thread dan pendefinisian proses-proses concurency dan syncronization Menunjukkan performance, scalability dan throughput Aspek statis dan dinamis di-capture dengan design view, tetapi lebih menekankan pada activ class Implementation View Meliputi komponen dan file yang digunakan untuk menghimpun dan me-release system physic Menunjukkan configuration management Aspek statis di-capture dalam component diagram Aspek dinamis di-capture dalam interaction diagram, statechart diagram dan activity diagram

Architecture view Deployment View Meliputi node yang membentuk topologi hardware system Menunjukkan pendistribusian, delivery, dan pengistallan Aspek statis di-capture dalam deployment diagram Aspek dinamis di-capture dalam interaction diagram, statechart diagram, activity diagram

Architectural Style Secara umum architectural Style di bedakan menjadi 5 : General Structure contoh : layers , pipes, filters, blackboard

Architectural Style Distributed systems contoh : client server, threetiers, broker 3. Interactive systems contoh : model view controller 4. Adaptable systems contoh: micro kernel 5. Other contoh : batch, interpreters

3.2 Design pattern Seumum mungkin Aspects yang berulang dalam desain disebut dengan design patterns. pattern adalah suatu outline dari permasalahan yang besar dirubah ke dalam suatu masalah yang lebih khusus, sehingga dapat ditemukan pemecahaanya. A good pattern sebaiknya Seumum mungkin Mengandung solusi yang telah dibuktikan dan efektif untuk menyelesaikan masalah Studying patterns is an effective way to learn from the experience of others

Macam – macam Pattern 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 Framework adalah suatu sistem perangkat lunak yang lengkap dan dapat diperluas dalam sekejap oleh spesifiksi plug-ins Dikenal dengan nama hot spots

4. Software Design Quality Analysis and Evaluation 4.1. Quality Attributes 4.2. Quality Analysis and Evaluation Techniques 4.3. Measures (Ukuran )

Quality Attributes membedakan run-time (performance, security, availability, functionality, usability) tidak dapat membedakan run-time (modifiability, portability, reusability, integrability and testability) berhubungan dengan architecture’s qualities (conceptual integrity, correctness and completeness, buildability).

Quality Analysis and Evaluation Techniques Software design reviews Static analysis Simulation and prototyping

Software design reviews teknik untuk memverifikasi dan memastikan kualitas dari suatu design artifacts

Static Analysis formal atau semiformal static (non-executable) analysis yang dapat dipergunakan untuk mengevaluasi suatu design Menganalisis apa yang program akan lakukan tanpa benar2 mengeksekusinya

Simulation and prototyping dynamic techniques untuk mengevaluasi suatu design Dengan cara simulasi atau membuat prototype

Measures (Ukuran) Function-oriented (structured) design measures - Structure Chart Object-oriented design measures - Class Diagrams

5. Software Design Notations 5.1. Structural Descriptions (static view) 5.2. Behavioral Descriptions (dynamic view)

Structural Descriptions (static view) Architecture description languages (ADLs) Class and object diagrams Component diagrams Collaboration responsibilities cards (CRCs) Deployment diagrams Entity-relationship diagrams (ERDs) Interface description languages (IDLs) Jackson structure diagrams Structure charts

Architecture description languages (ADLs) bahasa yang digunakan untuk mendeskripsikan suatu software architecture dalam kaitannya dengan komponen dan connector.

Class & Object Diagrams digunakan untuk merepresentasikan satu set class (dan object) dan hubungan timbal-balik diantaranya.

Class Diagrams ScheduleAlgorithm RegistrationForm RegistrationManager Course Student CourseOffering Professor addStudent(Course, StudentInfo) name numberCredits open() addStudent(StudentInfo) major location tenureStatus ScheduleAlgorithm RegistrationUser

Object diagrams Relationship between specific objects

Component Diagram Component diagrams adalah salah satu macam dari diagram yang memodelkan physical aspek dari suatu object-oriented system. Component diagram menunjukkan ketergantungan diantara satu set komponen. Course Offering Student Professor Course.dll People.dll User Register.exe Billing.exe Billing System Registrar.exe Courses.dll

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 Library Dorm Main Building

ERD Notation One common form: object object Another common form: relationship object 1 2 (1, 1) attribute Another common form: object relationship object 1 2 (0, m) (1, 1)

The ERD: An Example

Interface description languages (IDLs) HARUS digunakan oleh Client dan server Adalah bahasa deskripsi interface, bukan bahasa pemrograman

Jackson structure diagrams digunakan untuk mendeskripsikan data structure di dalam kaitannya dengan urutan, seleksi/pemilihan, dan iterasi. Pre-course reading Attend examination classes Register Receive grade class Tutorial Lecture Practical Student

Structure Charts Hierarchical Decomposition Chart Menggambarkan pengorganisasian code Banyak mengikuti subroutine/function calls Structure Charts juga terdiri dari : parameters passed in/out of routines loop and condition indications

A Simple Structure Chart for the Calculate Pay Amounts Module

Behavioral Descriptions (dynamic view) Activity diagrams Collaboration diagrams Data flow diagrams (DFDs) Decision tables and diagrams Flowcharts and structured flowcharts Sequence diagrams State transition and statechart diagrams Formal specification languages Pseudo-code and program design languages (PDLs)

Activity Diagram Activity diagram di dalam model use case dapat digunakan untuk meng-capture aktivitas-aktivitas dalam sebuah use case Sebenarnya merupakan flowchart, yang menunjukkan aliran kontrol activity ke activity yang lain

Collaboration Diagram Suatu collaboration diagram menekankan hubungan object yang mengambil bagian dari suatu interaksi.Tidak seperti sequence diagram, kita tidak harus menunjukkan lifeline dari suatu object explicitly dalam suatu collaboration diagram. Urutan peristiwa ditandai oleh angka-angka urutan pesan terlebih dahulu. : Registrar course form : CourseForm theManager : CurriculumManager aCourse : Course 1: set course info 2: process 3: add 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. Teaching Notes Many, if not most students have drawn or seen process models in the form of program flowcharts. Unfortunately, flowcharts are control-flow process models as opposed to data flow process models. This can cause some students trouble because they want to illustrate structured flow of control (nonparallel processing) in their early DFDs. Most introductory information systems books at least introduce, with one or two examples, DFDs.

Simple Data Flow Diagram Teaching Notes We have found it useful to walk through this first DFD. Don’t be alarmed if students take exception to some of the oversimplification of the illustrated problem—it can actually contribute to the learning experience.

Decision tables and diagrams digunakan untuk merepresentasikan kombinasi complex dari suatu kondisi dan aksi.

Flowcharts and structured flowcharts Penyajian berbagai program komputer, file, database, dan hubungan proses manual yang menjadikannya lengkap. menguraikan organisasi subsistem ke dalam komponen automated dan manual

Common System Flowchart Symbols

Sequence Diagram Sequence diagram adalah suatu diagram interaksi yang menekankan pada time ordering (waktu) pesan. Ini menunjukkan satu set object dan pesan yang diterima dan dikirim oleh object itu. Sequence diagram adalah tabel yang menunjukkan object pesan di sepanjang sumbu X, dan time ordering-nya (waktu pemesanan) di sepanjang sumbu Y.

Sequence Diagram : Student registration form manager math 101 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) section 1

Statechart Diagram Cancelled Initialization Open Closed Add student / Set count = 0 Add student[ Count < 10 ] Cancel course [ Count = 10 ] ^Course Report.Create report

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)

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 implemented as a data structure

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; walk through; if knob doesn't turn, then close door. take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat

Top-down and bottom-up designing Top-down design Start at the highest level (user interface). Work down to lower levels one-by-one. Do detailed decisions last (e.g., data formats, particular algorithms). Bottom-up design Make decisions about reusable low-level features first. Decide how these will be put together to create high-level constructs.

Information Hiding A useful definition of information hiding: Potentially changeable design decisions are isolated (i.e., “hidden”) to minimize the impact of change. - David Parnas

Information Hiding module clients • algorithm controlled interface • data structure • details of external interface • resource allocation policy clients "secret" a specific design decision

Function-oriented (structured) Design Desain dengan unit fungsional yang mengubah input menjadi output

Function-Oriented (structured) Design Secara tidak resmi dipraktekkan sejak pemrograman dimulai Ribuan sistem telah dikembangkan dengan pendekatan ini Didikukung oleh sebagian besar bahasa pemrograman

A Function-oriented view of design

A function-oriented view of design Merupakan Top-down design strategy atau desain terstruktur. Detail algoritma tersembunyi dalam sebuah fungsi, tetapi informasi state nya tidak. Jadi sebuah fungsi dapat mengganti state pada satu waktu tanpa mengganggu fungsi lain. Tidak umum bagi seseorang untuk sepenuhnya mengetahui bagaimana bagian-bagian berbeda dari sebuah program berinteraksi.

Object-oriented Design Banyak metode desain perangkat lunak yang berdasar pada object diusulkan. Bidang ini berkembang dari awal desain berbasis objek pertengahan tahun 1980an(kata benda = objek, kata kerja = metode, kata sifat = atribut) sampai desain berorientasi objek, dimana pewarisan dan polymorphism memainkan peran kunci, ke bidang desain berbasis komponen, dimana meta-information dapat didefinisikan dan diakses (melalui refleksi, sebagai contohnya).

Characteristics of OOD Mengijinkan desainer untuk berpikir tentang interacting object yang memelihara state mereka sendiri dan menyediakan operasi-operasi pada state tersebut daripada sekumpulan fungsi yang beroperasi pada data yang di share. Objek hide information tentang representasi state, oleh karena itu aksesnya terbatas Objek mungkin terdistribusi dan dapat bekerja secara sekuensial ataupun paralel

Advantages of OOD Mudah pemeliharaannya. Objek dikenali sebagai entitas tersendiri. Objek adalah penggunaan kembali komponen-komponen. For some systems, there is an obvious mapping from real world entities to system objects.

Data-structure Centered Design Desain struktur data terpusat (contohnya, Jackson Warnier-Orr) mulai dari data menyusun manipulasi program lebih baik daripada yang dilakukan fungsi tersebut. Perencana software pertama-tama mendeskripsikan input dan output struktur data dan kemudian mengembangkan struktur kontrol program berdasar pada diagram struktur datanya. Bermacam-macam heuristik diusulkan penyelesaian dengan kasus tertentu – sebagai contoh, saat terdapat mismatch antara input dan output sturktur.

Component-based Design (CBD) Sebuah komponen perangkat lunak adalah suatu unit yang independen, mempunyai definisi interface yang baik dan dependensi yang dapat disusun dan disebarkan secara independen. Desain berbasis komponen mengalamatkan isu yang terangkai dengan providing, developing, dan integrating seperti komponen untuk memperbaiki reuse.

Component-based Design (CBD) Tujuan : Memungkinkan untuk meletakkan software dalam skala besar secara bersamaan. Contoh : Web browser plug-in, GUI builder