FC Barcelona

Kamis, 20 April 2017

EXTREME PROGRAMMING



MODEL EXTREME PROGRAMMING



 

Hasil gambar untuk extreme programming


Extreme Programming (XP) merupakan salah satu metode pengembangan software yang termasuk dalam Agile Software Development. XP menggunakan pendekatan object-oriented.

Dalam XP, terdapat 5 nilai yang menjadi pondasi yaitu communication, simplicity, feedback, courage, dan respect. Komunikasi yang efektif antara pengembang perangkat lunak dan pihak-pihak yang terlibat sangatlah penting. Dalam XP, desain dijadikan kebutuhan intermediate. Desain dibuat sesederhana mungkin agar mudah mengimplementasikan code. Disini dapat terjadi perubahan struktur desain atau perubahan source code tanpa mengubah fungsi utamanya (refactoring). Feedback akan diberikan saat peningkatan dan pengimplementasian perangkat lunak.

Extreme Programming (XP) merupakan salah satu metodologi dalam rekayasa perangkat lunak dan juga merupakan satu dari beberapa agile software development methodologies yang berfokus pada coding sebagai aktivitas utama di semua tahap pada siklus pengembangan perangkat lunak (software development lifecycle). Metodologi ini mengedepankan proses pengembangan yang lebih responsive terhadap kebutuhan customer (”agile”) dibandingkan dengan metode-metode tradisional sambil membangun suatu software dengan kualitas yang lebih baik.
Extreme Programming muncul menawarkan sebuah disiplin baru dalam pengembangan software secara agile. Nilai dasar yang terkandung di dalam Extreme Programming adalah: Komunikasi (Communication), Kesederhanaan (Simplicity), Umpan balik (Feedback) Keberanian (Courage) dan menghormati (Respect).

Kata Kunci: Extreme Programming, agile, coding, komunikasi, kesederhanaan, umpan balik, keberanian, menghormati.

Latar Belakang XP
Requirement yang berubah dengan cepat menuntut lifecycles yang lebih pendek, dan tidak selaras dengan metoda pengembangan tradisional, yang pada umumnya memerlukan disain luas di awal dan mengakibatkan perubahan desain yang terjadi kemudian memerlukan biaya yang lebih tinggi atau kehilangan milestones.
Berdasarkan hal ini kemudian dilahirkan konsep XP yang digagas oleh Kent Beck dan Ward Cunningham pada Maret 1996. Metode XP merupakan yang terpopuler dari beberapa metodologi pengembangan software yang dipakai untuk mengimplementasikan proyek pengembangan perangkat lunak.

Tujuan XP
Tujuan utama XP adalah menurunkan biaya dari adanya perubahan software. Dalam metodologi pengembangan sistem tradisional, kebutuhan sistem ditentukan pada tahap awal pengembangan proyek dan bersifat fixed. Hal ini berarti biaya terhadap adanya perubahan kebutuhan yang terjadi pada tahap selanjutnya akan menjadi mahal. XP diarahkan untuk menurunkan biaya dari adanya perubahan dengan memperkenalkan nilai-nilai basis dasar, prinsip dan praktis. Dengan menerapkan XP, pengembangan suatu sistem haruslah lebih fleksibel terhadap perubahan.

Kunci Utama XP
Menurut penggagas dari metode XP, Kent Beck mendefinisikan empat kunci utama (inti) dari XP yaitu:
1. Communication (Komunikasi)
Tugas utama developer dalam membangun suatu sistem perangkat lunak adalah mengkomunikasikan kebutuhan sistem kepada pengembang perangkat lunak. Komunikasi dalam XP dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Tujuannya untuk memberikan pandangan pengembang sesuai dengan pandangan pengguna sistem.
2. Simplicity (Kesederhanaan)
XP mencoba untuk mencari solusi paling sederhana dan praktis. Perbedaan metode ini dengan metodologi pengembangan sistem konvensional lainnya terletak pada proses desain dan coding yang terfokus pada kebutuhan saat ini daripada kebutuhan besok, seminggu lagi atau sebulan lagi. Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan.
3. Feedback (Masukan)
Hal ini diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin. Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
4. Courage (Keberanian)
Berani mencoba ide baru. Berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh dari courage adalah komitmen untuk selalu melakukan design dan coding untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit, sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun ulang). Hal ini menjadikan pengembang merasa nyaman dengan refactoring program ketika diperlukan.
5. Respect (Menghormati)
Pentingnya respect terhadap anggota team lainnya karena dengan siklus pendek dan integrasi continue, programmer tidak boleh melakukan perubahan yang dapat merusak kompilasi dan menyebabkan keberadaan unit uji gagal atau memperlambat kerja team. Respects tiap individu akan selalu menghasilkan kualitas tinggi.

Penerapan XP
Beberapa hal yang harus dipertimbangkan sebelum seseorang masuk dalam dunia XP adalah sebagai berikut:
1. User harus memahami konteks bisnis yang akan dikembangkan sistemnya, sehingga developer dapat menangkap sistem secara aplikatif dan dapat mengusulkan teknologi apa yang dapat dikembangkan dalam sistem barunya.
2. Akan lebih efektif apabila developer pernah menangani proyek pengembangan sistem yang sejenis sehingga dapat memberikan usulan model sistem baru, di samping alasan bahwa developer telah memiliki template aplikasi sistem tersebut untuk dijadikan prototype sistem baru. Hal ini akan berimplikasi kepada kemudahan dalam konstruksi sistem karena dikembangkan berdasarkan template yang sudah ada.
3. Extreme programming menuntut komunikasi antar developer dan user secara intensif dan komunikasi internal antar developer secara komprehensif, sehingga akan lebih representatif apabila tahap pengembangan sistem dilakukan di lokal yang mendukung proses komunikasi tersebut.
XP adalah suatu bentuk pembangunan perangkat lunak yang berbasis nilai kemudahan, komunikasi, umpan balik, dan keberanian. Bekerja dalam whole team bersama-sama dengan praktek yang mudah. Adapun inti penerapannya adalah:
  1. Planning Game
  2. Small, frequent releases
  3. System metaphors
  4. Simple design
  5. Testing (unit testing & TDD)
  6. Frequent refactoring
  7. Pair programming
  8. Collective code ownership
  9. Continuous integration
  10. Sustainable pace
  11. Whole team together
  12. Coding standards

Cara Kerja Extreme Programming :
  • Perencanaan XP: pengumpulan user stories dari klien yang klien tetapkan prioritasnya. Setiap story ditetapkan harga dan lama pembangunan, jika terlalu besar, story dapat dipecah menjadi beberapa story yang lebih kecil. Periksa dan pertimbangkan resiko
  • Desain XP berprinsip: sederhana memanfaatkan kartu CRC (Class-Responsibility-Collaborator) untuk identifikasi dan mengatur class-class di konsep OO. Jika temui kesulitan, prototype dibangun (ini namanya spike solution). Lakukan refactoring, yaitu mengembangkan desain dari program setelah ditulis.
  • Pengkodean XP: siapkan unit test sebelum pengkodean dipakai sebagai fokus pemrogram untuk membuat program. Pair programming dilakukan untuk real time program solving dan real time quality assurance
  • Pengujian XP: menggunakan unit test yang dipersiapkan sebelum pengkodean.
  •  
Keunggulan:
  • Menjalin komunikasi yang baik dengan klien. (Planning Phase)
  • Menurunkan biaya pengembangan (Implementation Phase)
  • Meningkatkan komunikasi dan sifat saling menghargai antar developer. (Implementation Phase)
  • XP merupkan metodologi yang semi formal. (Planning Phase)
  • Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima, atau dengan kata lain fleksibel. (Maintenance Phase)

Kelemahan :
  • Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).XP juga memiliki keunggulan yang sekaligus menjadi kelemahannya, yaitu XP tidak memiliki dokumentasi formal yang dibuat selama pengembangan. Satu-satunya dokumentasi adalah dokumentasi awal yang dilakukan oleh user.

Read More ->>

MODEL RUP



Model RUP (Rational Unified Process)





















Definisi Model RUP
      Model RUP merupakan salah satu metode pengembangan sistem yang menggunakan use-case driven dan pendekatan iteratif untuk siklus software. (use-case driven merupakan metode untuk men-drive permodelan sistem berorientasi objek berdasarkan fungsi yang ada pada sistem).

RUP, singkatan dari Rational Unified Process, adalah suatu kerangka kerja proses pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM sejak 2003. RUP bukanlah suatu proses tunggal dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh organisasi pengembang dan tim proyek perangkat lunak yang akan memilih elemen proses sesuai dengan kebutuhan mereka.

RUP menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language(UML). Melalui gambar dibawah dapat dilihat bahwa RUP memiliki, yaitu: dimensi pertama di gambarkan secara horizontal. Dimensi ini mewakili aspek-aspek dinamis dari pengembangan perangkat lunak. Aspek ini dijabarkan dalam tahapan pengembangan atau fase. Setiap fase akan memiliki suatu major milestoneyang menandakan akhir dari awal dari phase selanjutnya. Setiap phase dapat berdiri dari satu beberapa iterasi. Dimensi ini terdiri atas Inception, Elaboration, Construction, dan Transition. Dimensi kedua digambarkan secara vertikal. Dimensi ini mewakili aspek-aspek statis dari proses pengembangan perangkat lunak yang dikelompokkan ke dalam beberapa disiplin. Proses pengembangan perangkat lunak yang dijelaskan kedalam beberapa disiplin terdiri dari empat elemen penting, yakni who is doing, what, howdan when.


Business Modeling, Requirement, Analysis and Design, Implementation, Test, Deployment, Configuration dan Change Manegement, Project Management, Environtment. Pada penggunaan kedua standard tersebut diatas yang berorientasi obyek (Object Oriented) memiliki menfaat yakni:
  • Improve productivity
    Standard ini dapat memanfaatkan kembali komponen-komponen yang telah tersedia/dibuat sehingga dapat meningkatkan produktifitas.
  • Deliver hight quality system
    Kualitas sistem dapat informasi dapat ditingkatkan sebagai sistem yang telah dibuat pada komponen-komponen yang telah teruji (well -tested dan well -proven) sehingga dapat mempercepat delivery sistem informasi yang telah dibuat dengan kualitas yang tinggi.
  • Lower maintenance cost
    Standard ini dapat membantu untuk meyakinkan dampak perubahan yang teralokasi dan masalah dapat dengan mudah terdeteksi sehingga hasilnya biaya pemeliharaan dapat dioptimalkan atau lebih rendah dengan pengembangan informasi tanpa standar yang jelas.
  • Facilitate reuse
    Standard ini memiliki kamampuan yang mengembangkan komponen-komponen yang dapat digunakan kembali untuk pengembangan aplikasi yang lainnya.
  • Manage complexity
    Standard ini mudah untuk mengatur dan monitor semua proses dari semua tahapan yang ada sehingga suatu pengembangan sistem informasi yang amat kompleks dapat dilakukan dengan aman sesuai dengan harapan semua manager proyek IT/IS yakni deliver good quality software within cost and schedule time and the users accepted.


Arsitektur RUP
Pada RUP terdapat 2 dimensi yairu horizontal dan vertikal.
  1. Horizontal: menandakan akhir dari awal dari phase selanjutnya dan dapat terdiri dari beberapa iterasi (interception, elaboration, construction dan transition).
  2. Vertikal: mewakili aspek statis dari pengembangan sistem.
Tahap-tahap dalam RUP

Interception:

Bussiness Modeling: visi misi sebagai dasar proses.
Requirement: mengetahui permintaan user.
Analysis and Design: benar-benar mengetahui keinginan user.
Implemantation: mulai dilakukan pengetesan namun belum masuk ke tahap pengembangan.
Configuration and Change Management: sebagai validasi.
Project Management: mengatur kerja projek.


Elaboration.
Dominan pada analysis and design dan implementation.
Pembuatan program mulai difokuskan.
Mulai dilakukan pengembangan pada kekurangan pada workflow deployment.
Construction.
75 % rancangan software telah selesai.
Fokus pada implementation, test dan deployment.—
Pada akhir construction sistem yang telah disetujui akan dirilis bersamaan dengan dokumentasi software.
Transition.
Melakukan test / uji coba untuk menghilangkan kesalahan.
Test dilakukan oleh software secara otomatis dan uji coba interface oleh tester.



Kelebihan RUP
  1. Mendukung proses pengulangan dan pengembangan software.
  2. Memungkinkan adanya penambahan-penambahan pada proses. 
  3. Memungkinkan untuk mengontrol perubahan-perubahan pada software selama proses pengembangan.

Kelemahan RUP
  1.  Membutuhkan waktu yang cukup lama. 
  2. Hanya dapat digunakan pada pengembangan software berorientasi objek berbasis UML (Unified Modeling Language).

Read More ->>

MODEL RAD



Model RAD (Rapid Aplication Development)

Rapid Aplication Development (RAD) adalah sebuah model proses perkembanganperangkat lunak sekuensial linier yang menekankan siklus perkembangan yang sangat pendek (kira-kira 60 sampai 90 hari). Model RAD ini merupakan sebuah adaptasi “kecepatan tinggi” dari model sekuensial linier dimana perkembangan cepat dicapai dengan menggunakan pendekatan konstruksi berbasis komponen.

rad

Kelebihan Model RAD :
  1. Model ini cocok untuk proyek dengan skala besar.
  2. Setiap fungsi mayor dapat dimodulkan dalam waktu tertentu kurang dari 3 bulan dan dapat dibicarakan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga waktunya lebih efisien.
Kelemahan Model RAD :
  1. Model RAD memerlukan sumber daya yang cukup besar, terutama untuk proyek dengan skala besar.
  2. proyek bisa gagal karena waktu yang disepakati tidak dipenuhi 
  3. risiko teknis yang tinggi juga kurang cocok untuk model ini.



Contoh kasus atau Software Model RAD

Karena model rad adalah pengembangan dari waterfall maka contoh penerapannya hampir sama dengan model waterfall hanya saja ada hal yang lebih baik dari model sebelumnya dengan penerapannya berupa :
  1.  Component based construction (pemrograman berbasis komponen bukan prosedural).
  2. Penekanan pada penggunaan ulang (reuse) komponen perangkat lunak yang telah ada.
  3. Pembangkitan kode program otomatis/semi otomatis.

Pendekatan RAD mencakup bebrapa tahap yaitu sebagai berikut :
Pemodelan Bisnis
Pemodelan bisnis yang mencakup beberapa pertanyyan berikut
  1. Informasi apa yang mengendalikan proses bisnis?
  2. Informasi apa yang di munculkan?
  3. Siapa yang memunculkanya?
  4. Ke mana informasi itu pergi?
  5. Siapa yang memprosesnya?
  6. Pemodelan Data
Aliran informasi yang didefinisikan sebagai bagian dari fase bussiness modelling disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik (disebut atribut) masing masing objek diidentifikasi dan hubungan antara objek – objek tersebut didefinisikan.
Pemodelan Proses
Aliran informasi yang didefinisikan di dalam fase data modeling ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus, atau mendapatkan kembali sebuah objek data.
Pembuatan Aplikasi
RAD mengasumsikan pemakaian teknik generasi ke empat. Selain menciptakan perangkat lunak dengan menggunakan bahasa pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memkai lagi komponen program yang ada (pada saat memungkinkan) atau menciptakan komponen yang bisa dipakai lagi (bila perlu). Pada semua kasus, alat – alat bantu otomatis dipakai untuk memfasilitasi konstruksi perangkat lunak.


Pengujian dan Pergantian
Karena proses RAD menekankan pada pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tetapi komponen baru harus di uji dan semua interface harus dilatih secara penuh.



Read More ->>