Monday, 3 August 2015

SI-208 KONSEP DAN PERANGKAT LUNAK SEBAGAI PROSES (Pertemuan Ke 2)

Rekayasa Perangkat Lunak
KONSEP DAN   PERANGKAT LUNAK SEBAGAI PROSES (Pertemuan Ke 2)

Tujuan
-         Untuk mengenalkan model-model proses perangkat lunak.
-         Untuk menjelaskan 3 model proses generik perangkat lunak dan kapan menggunakannya.
-         Untuk menjelaskan garis beras model-model untuk rekayasa kebutuhan, pengembangan perangkat lunak, testing , dan evolusi.

Proses Perangkat Lunak
-         Sekumpulan aktivitas terstruktur yang dibutuhkan untuk membangun sistem perangkat lunak
-         Spesifikasi (Specification);
-         Desain (Design);
-         Validasi (Validation);
-         Evolusi (Evolution).
-         Proses perangkat lunak merupakan suatu representasi abstrak daris suatu proses. Yaitu suatu penjelasan dari suatu proses dari prespektif tertentu.

3 Model Generik Perangkat Lunak
-         Model waterfall
o   Fase-fase spesifikasi dan pengembangan berbeda dan terpisah.
-         Evolutionary development
o   Spesifikasi, pengembangan, dan validasi interleaved.
-         Component-based software engineering
o   Sistem dirancang dari komponen-komponen yang ada.

Waterfall model



Fase pada Model Waterfall

-         Analisis dan definisi kebutuhan  (Requirements analysis and definition)
-         Desain sistem dan perangkat lunak (System and software design)
-         Implementasi dan pengujian unit (Implementation and unit testing)
-         Integrasi dan pengujian sistem (Integration and system testing)
-         Operasi dan pemeliharaan (Operation and maintenance)
-         Kekurangan dari model waterfall adalah sulit mengakomodasi perubahan setelah proses yang sedang berlangsung. Satu fase harus lengkap (selesai) sebelum bergerak ke fase berikutnya.

Masalah pada Model Waterfall
-         Ketidakfleksibelan tahapannya membuat sulit untuk merespon perubahan kebutuhan customer.
-         Bagaimanapun, model ini hanya sesuai ketika kebutuhan mudah dipahami dan kemungkinan perubahannya jelas selama proses desain.
-         Sedikit sistem bisnis yang mempunyai kebutuhan yang stabil.
-         Model waterfall paling sering digunakan untuk proyek rekayasa sistem yang besar dimana sistem dibangun pada tempat yang berbeda.

Evolutionary development
-         Exploratory development
       Sasarannya adalah untuk bekerja dengan customer dan untuk mengembangkan final sistem dari  garis besar spesifikasi awal. Seharusnya dimulai dari kebutuhan yang jelas dan menambah fitur baru sebagaimana yang diberikan oleh customer.
       Rapid Application Development (RAD)
-         Throw-away prototyping
       Sasarannya adalah untuk memahami kebutuhan sistem. Seharusnya dimulai dengan kebutuhan yang kurang jelas ke kebutuhan yang sudah jelas.

Evolutionary development


Evolutionary development

-         Problems
       Lack of process visibility
       Systems are often poorly structured
       Special skills (e.g. in languages for rapid prototyping) may be required
-         Applicability
       For small or medium-size interactive systems
       For parts of large systems (e.g. the user interface)
       For short-lifetime systems


Component-based software engineering
-         Didasarkan pada penggunaan kembali yang sistematis dimana sistem diintegrasikan dari komponen yang ada atau sistem COTS (Commercial-off-the-shelf).
-         Tingkatan process
       Analisis komponen (Component analysis);
       Modifikasi kebutuhan (Requirements modification);
       Desain sistem dengan reuse (System design with reuse);
       Pengembangan dan Integrasi (Development and integration).

Reuse-oriented development



Aktivitas Proses
-         Spesifikasi Perangkat Lunak
-         Desain dan Implementasi
-         Validasi Perangkat Lunak
-         Evolusi Perangkat Lunak

Spesifikasi Perangkat Lunak
-         Proses pembuatan layanan yang dibutuhkan dan batasan-batasan pada operasi dan pengembangan sistem.
-         Proses rekayasa kebutuhan
       Studi kelayakan (Feasibility study);
       Analisis dan mendata kebutuhan (Requirements elicitation and analysis);
       Spesifikasi kebutuhan (Requirements specification);
       Validasi kebutuhan (Requirements validation).

The requirements engineering process



Desain dan Implementasi Perangkat Lunak
-         Proses konversi spesifikasi sistem ke sistem yang siap dijalankan.
-         Desain perangkat lunak
       Desain struktur perangkat lunak yang sesuai dengan spesifikasinya;
-         Implementasi
       Menterjemahkan strukturnya dalam suatu program yang executable;
-         The activities of design and implementation are closely related and may be inter-leaved

Aktivitas Proses Desain
-         Desain arsitektur (architectural design)
-         Rangkuman spesifikasi (Abstract specification)
-         Desain antarmuka (Interface design)
-         Desain komponen (Component design)
-         Desain struktur data (Data structure design)
-         Desain algoritma (Algorithm design)

The software design process


Metode Terstruktur
-         Pendekatan sistematis untuk membangun suatu desain perangkat lunak.
-         Desain biasanya didokumentasikan sebagai kumpulan model grafis.
-         Model-model yang ada:
       Object model;
       Sequence model;
       State transition model;
       Structural model;
       Data-flow model.

Programming dan debugging
-         Penterjemahan suatu desain ke suatu program dan penghilangan error dari program.
-         Programming merupakan aktivitas personal – tidak terdapat proses pemrograman generik.
-         Programmer menggunakan pengujian program untuk menemukan kesalahan dalam program dan menghilangkan kesalahan tersebut dalam proses debugging.

The debugging process

Validasi Perangkat Lunak
-         Verifikasi dan validasi (V & V) dimaksudkan untuk menunjukkan bahwa sistem sesuai dengan spesifikasinya dan sesuai dengan kebutuhan customer sistem.
-         Meliputi proses pengecekan dan pemeriksaan dan pengujian sistem.
-         System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system

The testing process




Tingkatan Pengujian
-         Component or unit testing
       Komponen secara individual diuji secara terpisah;
       Component is may be functions or objects or coherent groupings of these entities.
-         System testing
       Testing of the system as a whole. Testing of emergent properties is particularly important.
-         Acceptance testing
       Testing with customer data to check that the system meets the customer’s needs.

Testing phases



Software evolution
-         Software is inherently flexible and can change.
-         As requirements change through changing business circumstances, the software that supports the business must also evolve and change.
-         Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

System evolution



Key points
-         Proses perangkat lunak merupakan aktivitas yang meliputi memproduksi dan mengembangkan suatu sistem perangkat lunak. They are represented in a software process model
-         Aktivitas umumnya adalah spesifikasi, desain dan implementasi, validasi dan evolusi.
-         Model proses generik menjelaskan organisasi proses perangkat lunak. Contoh model waterfall, evolutionary development dan component-based software engineering.

Key points
-         Rekayasa kebutuhan merupakan proses pengembangan spesifikasi perangkat lunak.
-         Proses implementasi dan desain menterjemahkan spesifikasi tersebut ke suatu program yang executable.
-         Validasi meliputi pengecekan apakah sistem telah sesuai dengan spesifikasinya dan kebutuhan user.
-         Evolusi fokus pada pemodifikasian sistem setelah digunakan.








SI-208 Rekayasa Perangkat Lunak


POKOK BAHASAN PERANGKAT LUNAK SEBAGAI PRODUK (Pertemuan Ke 1)

          Manajemen rekayasa perangkat lunak merupakan bagian yang penting dalam pembangunan perangkat lunak.
          Sekalipun tidak bersifat teknis seperti pengkodean, hal-hal dalam manajemen proyek perangkat lunak ini mampu menentukan apakah proyek akan berjalan dengan baik sehingga menghasilkan produk yang baik.
          Hal-hal yang berkaitan dengan manajemen PL adalah :
          pengelolaan personel dan koordinasi tim
           masalah (problem)
           Proses

Manajemen Personel, Produk dan Proses
          Manajemen proyek perangkat lunak mengatur 4 hal penting :
          Personel
          Masalah (problem) à berkaitan dengan Produk
          Proses dan
          Proyek à tambahan (tapi sangat penting)
          Empat hal ini berurutan mulai dari yang paling penting.
          Personel mendapat tempat paling penting karena tanpa personel yang baik dan tepat maka 3 hal lain tidak bisa berjalan dengan baik.

Kategori Personel
          Proses pembangunan Perangkat Lunak melibatkan banyak personel dan dikategorikan dalam 5 kategori :
1.     Manajer senior : yang menentukan usaha yang dikerjakan, dan pemegang keputusan dalam proyek.
2.     Manajer proyek (teknis)– pemimpin tim: yang membuat rencana, memotivasi, mengatur dan mengendalikan praktisi yang mengerjakan PL
3.     Praktisi : yang mengerjakan PL
4.     Klien : yang menentukan kebutuhan PL dan pihak lain yang berkaitan dengan hasil produk
5.     Pengguna PL (user) : yang berinteraksi langsung dengan PL yang dibangun.

Pemimpin Tim
          Pemimpin Tim PL disini adalah manager proyek.
          Seorang pemimpin tim diharuskan mempunyai ketrampilan memimpin yang cukup.
          Seseorang tidak menjadi pemimpin tim secara kebetulan tapi sungguh-sungguh karena punya kemampuan.
          Kemampuan yang dibutuhkan dalam kepemimpinan seperti:
  1. mampu memotivasi
  2. mampu berorganisasi
  3. mampu mendorong keluarnya ide-ide baru
  4. mencari penyelesaian masalah (problem solving)
  5. mampu menjadi manajer
  6. mampu menghargai kerja
  7. mampu mengenali tim

Tim Perangkat Lunak (Software Team)
          Struktur organisasi dalam tim ini bisa mengadaptasi dari banyak struktur organisasi yang sudah ada.
          Dalam struktur organisasi tersebut harus ditetapkan job description dengan jelas,  serta posisi dalam organisasi serta korelasinya dengan imbalan yang akan diterima, atau dengan manajemen yang lain namun memiliki konsep manajerial yang jelas.
          Cara atau gaya manajemen, jumlah personel, tingkat kemampuan para personel dan masalah-masalah yang dihadapi tim menentukan bentuk struktur organisasi yang bisa diterapkan. Yaitu :
-          Democratic Decentralized (DD) : Tidak ada pemimpin yang permanen, koordinator ditunjuk untuk jangka waktu yang pendek, keputusan diambil berdasarkan konsensus bersama, komunikasi horizontal antar anggota tim (posisi sejajar semua)
-          Controlled decentralized (CD) : Pemimpin tim ditentukan, ada wakil pemimpin dan mereka berbagi tugas, penyelesaian masalah adalah tugas tim dan implementasinya dibagi di antara beberapa sub-tim oleh pemimpin, komunikasi horisontal di antara sub-tim dan di antara personel, komunikasi vertikal berdasarkan struktur hirarki
-          Controlled Centralized (CC): penyelesaian masalah dikerjakan oleh pemimpin, pemimpin melakukan koordinasi internal tim, komunikasi lebih banyak vertikal antara pemimpin dan anggota tim

Masalah (berkaitan dengan produk)
          Masalah à sesuatu yang menghambat tercapainya tujuan (goal).
          Oleh karena itu kita harus mengamati masalah pada awal dimulainya sebuah proyek.
          Ruang lingkup masalah :
          Konteks à bagaimana PL yang dibangun dapat memenuhi sebuah sistem, produk, atau konteks bisnis yang besar, serta batasan apa yang ditentukan sebagai hasil dari konteks tersebut?
          Tujuan Informasi à Objek data pelanggan apa yang dihasilkan sebagai output dari perangkat lunak?
          Fungsi dan Unjuk kerja à Fungsi apa yang dilakukan oleh PL untuk mentransformasi input data menjadi output? Adakah ciri kerja khusus yg akan ditekankan?