1 / 85

Software Design

Software Design . Kata pengantar.

jerome
Download Presentation

Software Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Design

  2. 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.

  3. 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.

  4. 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 mengijinkan untuk konstruksinya.

  5. General Concepts design • Software bukan satu-satunya media yang melibatkan desain. Dalam pemaham 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.

  6. 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

  7. 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

  8. 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

  9. 1.4.2. Coupling and cohesion • Coupling didefinisikan sebagai kekuatan hubungan antara module, sementara cohesion didefinisikan bagaimana elemen-elemen membuat modul tersebut saling berkaitan.

  10. 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.

  11. 1.4.4 Encapsulation • Encapsulation adalah menyembunyikan implementasi dari client, sehingga client hanya tergantung pada interface

  12. Ilustrasi Encapsulation • Seorang Professor bisa megajar 4 class pada semester depan

  13. 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.

  14. 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.

  15. 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

  16. 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

  17. 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

  18. 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) Software architecture

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

  20. 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 kombinasikan Architectural tructures dapat disebut juga dengan architectural style

  21. 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 • Aspek dinamis di-capture dalam interaction diagram, statechart diagram dan activity diagram

  22. 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

  23. 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 Architecture view

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

  25. Architectural Style • Distributed systems contoh : client server, threetiers, broker • Interactive systems contoh : model view controller • Adapateble systems contoh: micro kernel • Other contoh : batch, interpreters

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

  27. 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

  28. 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 dapa diperluas dalam sekejap oleh spesifiksi plug-ins Dikenal dengan nama hot spots

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

  30. 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).

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

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

  33. 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

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

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

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

  37. 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

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

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

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

  41. Object diagrams • Relationship between specific objects

  42. Register.exe People.dll User Course.dll Billing.exe Course Billing System Registrar.exe Professor Student Course Course Offering Courses.dll People.dll 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.

  43. Collaboration responsibilities cards (CRCs) • digunakan untuk menandakan nama dari suatu komponen (class), responsibilities, dan nama komponen lain yang terkait.

  44. Registration Database Main Library Building Dorm Deployment Diagram Deployment diagram menunjukkan kofigurasi run-time processing nodes dan komponen yang bergantung padanya.

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

  46. The ERD: An Example

  47. Interface description languages (IDLs) • MUST be used by both the client and server • Is an interface description language not a programming language

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

More Related