REKAYASA PERANGKAT LUNAK Defri Kurniawan defri kurniawandsn ac

  • Slides: 51
Download presentation
REKAYASA PERANGKAT LUNAK Defri Kurniawan defri. kurniawan@dsn. ac. id

REKAYASA PERANGKAT LUNAK Defri Kurniawan defri. kurniawan@dsn. ac. id

RENCANA KEGIATAN PERKULIAHAN SEMESTER W Pokok Bahasan W 1 Pengenalan Teknologi Informasi 9 2

RENCANA KEGIATAN PERKULIAHAN SEMESTER W Pokok Bahasan W 1 Pengenalan Teknologi Informasi 9 2 3 Konsep Sistem Komputer & Pengenalan Perangkat Keras 4 Data Storage 5 6 Perangkat Lunak 7 Data dan Informasi 8 Ujian Tengah Semester 10 Pokok Bahasan Komputasi Pemrograman 11 Rekayasa Perangkat Lunak 12 13 Komunikasi data & Jaringan Komputer 14 Etika dan dampak teknologi informasi sosial 15 Teknologi Terkini / Advance Topik 16 Ujian Akhir Semester

Reference � Bruce K William, Stacey C. Sawyer – Using Information Technology : A

Reference � Bruce K William, Stacey C. Sawyer – Using Information Technology : A Practical Introduction to Computers & Communications 9 th Edition (2010) � J. Glenn Brookshear – Computer Science : An Overview 11 th Edition (2011)

Content The Software Engineering Discipline The Software Life Cycle Software Engineering Methodologies Tools Quality

Content The Software Engineering Discipline The Software Life Cycle Software Engineering Methodologies Tools Quality Assurance

The Software Engineering Discipline Software Engineering

The Software Engineering Discipline Software Engineering

The Software Engineering Discipline � Rekayasa Perangkat Lunak (RPL) = (SE) software engineering �

The Software Engineering Discipline � Rekayasa Perangkat Lunak (RPL) = (SE) software engineering � Rekayasa Perangkat Lunak merupakan Disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi, desain, konstruksi, testing sampai pemeliharaan setelah digunakan

The Software Engineering Discipline � Software engineering adalah cabang computer science dengan prinsip pengembangan

The Software Engineering Discipline � Software engineering adalah cabang computer science dengan prinsip pengembangan system software yang besar dan kompleks � Pengembangan sistem membutuhkan upaya banyak orang � Software engineering terdiri dari personel dan project management yang berkaitan dengan business management

The Software Engineering Discipline � Problem selama pengembangan sistem : - How can you

The Software Engineering Discipline � Problem selama pengembangan sistem : - How can you estimate the cost in time, money and other resource to complete the project ? How can you divide the project into manageable pieces ? How can you ensure that the pieces produced are compatible ? How can those working on the various pieces communicate? How can you measure progress?

The Software Engineering Discipline � Penelitian dalam software engineering saat ini terdiri dari dua

The Software Engineering Discipline � Penelitian dalam software engineering saat ini terdiri dari dua level : practitioners dan theoreticians � Practitioners bekerja ke arah pengembangan teknik untuk aplikasi � Theoreticians bekerja berdasarkan prinsip dan teori dimana teknik lebih stabil dapat dibangun nantinya

Perjalanan Software Engineering 1. 2. 3. Peter J Dennings yang memimpin satuan tugas disiplin

Perjalanan Software Engineering 1. 2. 3. Peter J Dennings yang memimpin satuan tugas disiplin ilmu computing memasukkan software engineering sebagai satu disiplin ilmu (Dennings, 1999) IEEE Computer Society membentuk tim khusus untuk menyusun pohon ilmu Software Engineering (Software Engineering Body of Knowledge, SWEBOK) http: //swebok. org Software Engineering termasuk nama jurusan atau fakultas yang diakui menurut IEEE Computing Curricula 2005

Matriks Dennings 1999 � Algoritma dan Struktur Data � Bahasa Pemrograman � Arsitektur Komputer

Matriks Dennings 1999 � Algoritma dan Struktur Data � Bahasa Pemrograman � Arsitektur Komputer � Sistem Operasi dan Jaringan � Software Engineering � Database dan Sistim Retrieval Informasi � Artificial Intelligence dan Robotik � Grafik � Human Computer Interaction � Ilmu Komputasi � Organizational Informatics � Bio. Informatik

SWEBOK 2004

SWEBOK 2004

IEEE Computing Curricula 2005 1. 2. 3. 4. 5. Computer Engineering (CE, Teknik Komputer)

IEEE Computing Curricula 2005 1. 2. 3. 4. 5. Computer Engineering (CE, Teknik Komputer) Computer Science (CS, Ilmu Komputer) Information Systems (IS, Sistem Informasi) Information Technology (IT, Teknologi Informasi) Software Engineering (SE, Rekayasa Perangkat Lunak)

The Software Life Cycle Software Engineering

The Software Life Cycle Software Engineering

The Software Life Cycle � Konsep dalam software engineering adalah software life cycle �

The Software Life Cycle � Konsep dalam software engineering adalah software life cycle � Software life cycle menggambarkan bahwa dalam pengembangan software masuk ke dalam sebuah cycle yang digunakan (development, use, maintenance)

The Software Life Cycle � Perangkat lunak memiliki siklus hidup yang dikenal dengan siklus

The Software Life Cycle � Perangkat lunak memiliki siklus hidup yang dikenal dengan siklus hidup perangkat lunak (Software Life Cycle) � Siklus hidup perangkat lunak (Software Life Cycle) adalah urutan dari kegiatan yang ada di dalam sebuah pengembangan perangkat lunak (Gustafson, 2002)

Software Development Process � Software Development Process, juga dikenal sebagai Software Development Life-Cycle /

Software Development Process � Software Development Process, juga dikenal sebagai Software Development Life-Cycle / siklus hidup pengembangan perangkat lunak, adalah struktur yang dikenakan pada pengembangan produk perangkat lunak. � Software Life Cycle dan Software Process merupakan bagian dari siklus hidup pengembangan sistem (System Development Life Cycle)

System Development Life Cycle (SDLC) � System Development life cycle (SDLC) / Siklus Hidup

System Development Life Cycle (SDLC) � System Development life cycle (SDLC) / Siklus Hidup Pengembangan Sistem adalah proses memahami bagaimana sistem informasi (IS) dapat mendukung kebutuhan bisnis, perancangan sistem, membangunnya dan memberikannya kepada pengguna (Dennis, 2005).

Kelebihan dan Kekurangan SDLC � Penerapan SDLC memiliki kekurangan dan kelebihan. � Kelebihan dari

Kelebihan dan Kekurangan SDLC � Penerapan SDLC memiliki kekurangan dan kelebihan. � Kelebihan dari SDLC adalah menyediakan tahapan yang dapat digunakan sebagai pedoman pengembangan sistem, sedangkan � Kekurangannya: hasil dari SDLC tergantung pada hasil analisis, sehingga jika terdapat kesalahan di tahap analisis akan terbawa terus ke hasil sistem

The Traditional Development Phase

The Traditional Development Phase

The Traditional Development Phase � Tahap Requirement Analysis - : Menganalisa kebutuhan user Negoisasi

The Traditional Development Phase � Tahap Requirement Analysis - : Menganalisa kebutuhan user Negoisasi dengan stakeholder mengenai kebutuhan, harga dan kemungkinan yang terjadi pada sistem Membangun seperangkat kebutuhan untuk identifikasi apa saja fitur yang ada dalam sistem software

The Traditional Development Phase � Tujuan Requirement Analysis - : Menentukan apa saja kebutuhan

The Traditional Development Phase � Tujuan Requirement Analysis - : Menentukan apa saja kebutuhan sistem yang diusulkan Identifikasi kebutuhan sistem yang diusulkan Mendefinisikan bagaimana user berinteraksi dengan sistem

The Traditional Development Phase � Tahap Design : - Membuat rancangan untuk system yang

The Traditional Development Phase � Tahap Design : - Membuat rancangan untuk system yang diusulkan Fokus pada pengembangan solusi Fokus pada “Bagaimana sistem akan melakukannya” ? Hasil dari design adalah tahapan struktur sistem secara detail yang akan dikonversikan ke program Diagram dan pemodelan penting dalam tahapan desain

The Traditional Development Phase �Tahap Implementasi : - Implementasi melibatkan penulisan program, pembuatan file,

The Traditional Development Phase �Tahap Implementasi : - Implementasi melibatkan penulisan program, pembuatan file, dan database Programmer memiliki beban pada penulisan program dimana sebelumnya telah didesain oleh software analyst Programmer menerjemahkan hasil dari design menjadi suatu program (aplikasi)

The Traditional Development Phase � Tahap Testing : - Proses debug program dan konfirmasi

The Traditional Development Phase � Tahap Testing : - Proses debug program dan konfirmasi apakah software sesuai dengan spesifikasi kebutuhan software Testing digunakan untuk mengetahui kualitas dari software Beberapa kesalahan mungkin tidak terdeteksi pada saat tahap implementasi

Software Engineering Methodologies Software Engineering

Software Engineering Methodologies Software Engineering

Software Engineering Methodologies � Waterfall Model � Prototyping � RAD � Extreme Programming (XP)

Software Engineering Methodologies � Waterfall Model � Prototyping � RAD � Extreme Programming (XP)

Waterfall � Mengidentifikasi kebutuhan jauh sebelum pemrograman dimulai � Meminimalkan perubahan kebutuhan selama project

Waterfall � Mengidentifikasi kebutuhan jauh sebelum pemrograman dimulai � Meminimalkan perubahan kebutuhan selama project

Waterfall � Tahap Planning : - - Dalam form permintaan sistem, menjelaskan ringkasan dari

Waterfall � Tahap Planning : - - Dalam form permintaan sistem, menjelaskan ringkasan dari kebutuhan bisnis Analisa kemungkinan aspek dari project yang diusulkan Bagaimana tim project berjalan selama pengembangan sistem Tahap Analysis Tahap Design Tahap Implementation

Parrarel Development � Mengatasi masalah penundaan yang lama antara tahap analisis dan pengiriman sistem.

Parrarel Development � Mengatasi masalah penundaan yang lama antara tahap analisis dan pengiriman sistem. � Membagi proyek menjadi serangkaian sub proyek yang berbeda yang dapat dirancang dan implementasi secara paralel

RAD (Rapid Application Development) � Pemahaman yang lebih baik terhadap sistem dan revisi langsung

RAD (Rapid Application Development) � Pemahaman yang lebih baik terhadap sistem dan revisi langsung dengan membawa sistem lebih cepat apa yang diinginkan user � Problem dari RAD adalah mengelola keinginan pengguna terhadap kemungkinan perubahan yang terjadi 1. 2. 3. Phased development (a series of versions) Prototyping (system prototyping) Throw-away prototyping (design prototyping)

Prototyping � Sangat cepat untuk mendefinisikan kebutuhan � Sangat cepat menyediakan sistem � User

Prototyping � Sangat cepat untuk mendefinisikan kebutuhan � Sangat cepat menyediakan sistem � User dapat langsung berinteraksi dengan prototype untuk mengetahui apa yang dapat dan tidak dilakukan oleh sistem

Throw-away Prototyping � Masalah yang muncul diujicobakan/diselesaikan dengan menganalisa, mendesign, & membangun sebuah prototype

Throw-away Prototyping � Masalah yang muncul diujicobakan/diselesaikan dengan menganalisa, mendesign, & membangun sebuah prototype (yang dinamakan design prototype) � Membangun fitur yang belum dipahami dengan jelas Membuat design prototype untuk memahami kebutuhan

Phased Development � Mendapatkan sistem yang berguna untuk pengguna dengan cepat � Sistem awal

Phased Development � Mendapatkan sistem yang berguna untuk pengguna dengan cepat � Sistem awal sengaja tidak lengkap � System requirements berkembang tergantung pandangan dari versi user

Extreme Programming (XP) � XP terdiri dari empat nilai inti : komunikasi, kesederhanaan, umpan

Extreme Programming (XP) � XP terdiri dari empat nilai inti : komunikasi, kesederhanaan, umpan balik, dan keberanian � Pengembang harus menyediakan umpan balik secara cepat � Pengembang harus membuat perubahan tambahan untuk perkembangan sistem

Criteria for Selecting a Methodology

Criteria for Selecting a Methodology

Tools Software Engineering

Tools Software Engineering

Tools � Tool digunakan untuk membuat pemodelan selama tahapan analisis dan desain � Pemodelan

Tools � Tool digunakan untuk membuat pemodelan selama tahapan analisis dan desain � Pemodelan bertujuan untuk menggambarkan bagaimana data berpindah melalui sistem, meningkatkan komunikasi antara stakeholder dan software engineer � Contoh : Data Flow Diagram (DFD), UML

Data Flow Diagram (DFD) � Data flow diagram menggambarkan informasi yang diperoleh dari data

Data Flow Diagram (DFD) � Data flow diagram menggambarkan informasi yang diperoleh dari data flow (aliran data) � Memudahkan untuk memahami sistem yang diusulkan selama tahap analisis � Identifikasi prosedur selama tahap desain

UML (Unified Modeling Language) � Sebuah tool yang dikembangkan dengan paradigma Object – Oriented

UML (Unified Modeling Language) � Sebuah tool yang dikembangkan dengan paradigma Object – Oriented � Contoh : Use Case Diagram, Class Diagram � Sama seperti DFD, use case menggambarkan interaksi antara user dan sistem � Class diagram menggambarkan struktur kelas dan hubungan antar kelas

Use Case Diagram

Use Case Diagram

Class Diagram Person 1 own 1. . * Car

Class Diagram Person 1 own 1. . * Car

Tools (Software) � Pada fase analisis dan design, kita bisa menggunakan program-program di bawah

Tools (Software) � Pada fase analisis dan design, kita bisa menggunakan program-program di bawah ini: � Rational Rose � Enterprise Architect � Microsoft Visio � Star UML � dsb

Quality Assurance Software Engineering

Quality Assurance Software Engineering

Software Quality � Software Quality berkesesuaian dengan: � Persyaratan fungsional dan kinerja dinyatakan dengan

Software Quality � Software Quality berkesesuaian dengan: � Persyaratan fungsional dan kinerja dinyatakan dengan jelas � Standar dokumen pengembangan jelas � Karakteristik implisit yg diharapkan dari semua perangkat lunak dikembangkan secara profesional

Software Quality Assurance � Software Quality Assurance (SQA) adalah aktivitas yang digunakan untuk menjamin

Software Quality Assurance � Software Quality Assurance (SQA) adalah aktivitas yang digunakan untuk menjamin bahwa proses pengembangan software dilakukan dengan benar. � Adanya aktivitas SQA ini diharapkan kebutuhan dan target software yang dikembangkan dapat tercapai.

Software Quality Attributes (1) � Correctness � Sebuah sistem adalah benar jika berperilaku sesuai

Software Quality Attributes (1) � Correctness � Sebuah sistem adalah benar jika berperilaku sesuai dengan spesifikasinya � Reliability � Keandalan adalah probabilitas bahwa sistem akan beroperasi seperti yang diharapkan selama interval tertentu � Robustness � Sebuah sistem yang kuat jika berperilaku cukup bahkan dalam keadaan yang tidak ditentukan

Software Quality Attributes (2) � Efficiency (Performance) � Memperhatikan penggunaan sumber daya seperti waktu

Software Quality Attributes (2) � Efficiency (Performance) � Memperhatikan penggunaan sumber daya seperti waktu komputasi, memori � Usability (User Friendliness, Human Factors) � Sejauh mana para pengguna (manusia) menemukan sistem dengan "mudah digunakan" dan berguna � Maintainability � Bagaimana mudahnya untuk mengubah/melakukan perubahan sistem setelah rilis awal

Software Quality Attributes (3) Repairability � Berapa banyak pekerjaan yang diperlukan untuk memperbaiki cacat

Software Quality Attributes (3) Repairability � Berapa banyak pekerjaan yang diperlukan untuk memperbaiki cacat Evolvability (Adaptability) � Berapa banyak pekerjaan yang diperlukan untuk beradaptasi dengan perubahan kebutuhan (baik sistem dan proses) Portability � Berapa banyak pekerjaan yang diperlukan untuk port ke lingkungan atau platform baru

Software Quality Attributes (4) Verifiability � Bagaimana mudahnya untuk memverifikasi apakah atribut yang diinginkan

Software Quality Attributes (4) Verifiability � Bagaimana mudahnya untuk memverifikasi apakah atribut yang diinginkan ada Understandability � Bagaimana mudahnya untuk memahami sistem Productivity � Jumlah produk yang dihasilkan oleh suatu proses untuk sejumlah resource tertentu Visibility (Transparency) � Langkah-langkah diakses proses saat ini dan status proyek dapat