Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Software Design.

Presentasi serupa


Presentasi berjudul: "Software Design."— Transcript presentasi:

1 Software Design

2 Kata pengantar Definisi design oleh IEEE 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 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 mendetail untuk konstruksinya.

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

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

16 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

17 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

18 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

19 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)

20 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

21 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

22

23 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

24 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

25 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

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

27 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

28 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

29 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

30 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

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

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

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

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

35 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

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

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

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

39 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

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

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

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

43 Object diagrams Relationship between specific objects

44 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

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

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

47 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)

48 The ERD: An Example

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

50 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

51 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

52 A Simple Structure Chart for the Calculate Pay Amounts Module

53 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)

54 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

55

56 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

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

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

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

60 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

61 Common System Flowchart Symbols

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

63 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

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

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

66 Program Design Language (PDL)

67 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

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

69 Data Abstraction door manufacturer model number type swing direction
inserts lights type number weight opening mechanism implemented as a data structure

70 Procedural Abstraction
open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter

71 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

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

73 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

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

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

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

77 A Function-oriented view of design

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

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

80 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

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

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

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

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


Download ppt "Software Design."

Presentasi serupa


Iklan oleh Google