Software Engineering

Scrum Methodology

Posted on

Dalam sebuah proses pengembangan perangkat lunak, dibutuhkan proses-proses yang saling terintegrasi yang dimulai dari tahap requirement, design, implementasi, testing sampai dengan deployment. Metodologi yang umum digunakan di Indonesia saat ini yakni menggunakan RUP (Rational Unified Process), di mana tahap-tahap di atas dilakukan secara urut dan terstruktur. Tetapi, seringkali pada proses pengembangan perangkat lunak, ada banyak perubahan yang terjadi karena dinamika perusahaan yang memungkinkan adanya penambahan requirement (permintaan). Kalau sudah begini, jika menggunakan metodologi RUP, tim developer akan mengalami kesulitan jika dihadapkan pada banyaknya perubahan yang terjadi. Untuk menyelesaikan problem inilah, metodologi Scrum diciptakan. Apa metodologi Scrum itu? Apa yang membedakannya dengan RUP?

Scrum Framework
Scrum! – ilustrasi diambil dari http://www.scrumhint.com/agile-glossary/

Scrum saat ini menjadi alternatif yang mulai banyak digunakan dalam proses pengembangan perangkat lunak. Scrum sendiri sebenarnya adalah sebuah framework yang mengimplementasikan proses Agile Development. Untuk menjelaskan bagaimana Scrum mengubah paradigma dalam proses bekerja dan apa perbedaannya dengan RUP, saya akan mencontohkan dengan sebuah ilustrasi berikut.

Sebuah development team beranggotakan sekitar 5 orang, dibagi berdasarkan tahap-tahap yang dilakukan pada proses software development, yakni proses Requirement, Design, Implementation, Testing, dan Deployment. Beberapa saat kemudian tim ini menerima sebuah project dari klien, di mana tim diminta untuk membuat sebuah aplikasi untuk membantu proses bisnis yang klien minta. Karena tim sadar bahwa sang klien adalah seorang petinggi perusahaan yang sedang berkembang, maka tim memutuskan untuk menggunakan Scrum karena kelebihannya yang dapat menerima berbagai perubahan yang mungkin akan muncul pada proses pengembangan aplikasi.

Baca entri selengkapnya »

Iklan

Tips – Mengelola SourceCode

Posted on Updated on

SourceCode? Itu makanan apa? (-_-). Mungkin istilah ini masih terdengar asing bagi orang kebanyakan, tapi sourcecode merupakan makanan sehari-hari bagi teman-teman yang bergelut di bidang teknologi informasi (IT). Tanya saja kepada simbah, bapak, sepupu, anak atau teman yang pernah kuliah atau memiliki hobi IT. SourceCode adalah kode sumber yang digunakan untuk membangun sebuah perangkat lunak, baik yang berupa aplikasi maupun bukan. Setelah instruksi-instruksi pada SourceCode selesai ditulis, dilakukan proses kompilasi sehingga SourceCode dapat berubah menjadi sebuah perangkat lunak yang dapat digunakan, singkatnya begitu.

Nah, analogikan programer sebagai seorang penulis. Penulis menyelesaikan naskah bukunya dalam beberapa tahap, disimpan sebagai draft, dan apabila ada kesalahan penulis akan memperbaikinya kembali sampai naskah bukunya selesai untuk kemudian dikirimkan ke penerbit. Demikian juga programmer. Dalam menuliskan kode-kode, programmer pun tidak luput dari yang namanya kesalahan. Menulis, checking, debugging, salah, tulis lagi, dan seterusnya sampai perangkat lunak telah sesuai dengan tujuan yang diinginkan. Maka dari itu, programmer dituntut untuk selalu teliti dalam menuliskan instruksi kode untuk meminimalisir kesalahan.

Deretan Buku
Buku Tersusun Rapi – ilustrasi via http://wall.alphacoders.com/big.php?i=375332

Baca entri selengkapnya »

Sonatype Nexus Repository

Posted on

NexusMisalnya kita dihadapkan pada sebuah tim pengembang yang sedang menangani proyek perangkat lunak untuk sebuah instansi perbankan. Perangkat lunak yang dibangun dituntut untuk dapat mensupport dan memaksimalkan kinerja bisnis perusahaan tersebut, dimulai dari layanan transaksi teller, transaksi melalui ATM, e-banking, SMS banking, administrasi kepegawaian, pengecekan suku bunga obligasi dan deposito secara realtime, laporan interaktif yang dapat diakses melalui portal website dan perangkat mobile, layanan customer service, dan berbagai layanan lainnya. Bisa dibayangkan betapa kompleksnya tim yang mengerjakan itu semua. Tim pengembang dibagi lagi menjadi beberapa tim yang fokus pada tugas dan peran masing-masing. Agar perangkat lunak yang dihasilkan berkualitas dan dapat dikerjakan secara efektif, seluruh sub-tim harus saling berkoordinasi satu sama lain untuk merumuskan beberapa aspek dari perangkat lunak yang menjadi dependency dari satu tim dengan tim yang lain. Platform dari perangkat lunak berdasarkan kesepakatan harus sama, sehingga komponen yang digunakan relatif sama. Selain itu, ada tim tambahan yang betugas untuk membangun komponen-komponen yang dibutuhkan namun belum tersedia. Kira-kira, apa yang bisa dilakukan untuk menangani kompleksitas tim besar ini agar tetap terintegrasi satu sama lain sehingga perangkat lunak yang dihasilkan dapat selesai tepat waktu sesuai dengan perjanjian? Baca entri selengkapnya »

Design Pattern : Composite

Posted on

Composite Analogy

Masih dengan topik tentang Design Pattern. Kali ini saya akan membahas tentang Design Pattern yang termasuk dalam Structural Pattern. Postingan sebelumnya telah membahas tentang Decorator Pattern. Composite Pattern digunakan untuk merepresentasikan sebuah hirarki objek sehingga dapat sebuah objek dapat menjadi komposisi bagi objek yang lain. Misalnya dianalogikan seperti ini, kita akan menggambar sebuah objek manusia. Objek manusia tersebut terdiri dari objek-objek dasar seperti garis, kotak, lingkaran, segitiga dan bentuk lainnya. Beberapa bentuk badan seperti mata dan kepala merupaka representasi dari objek dasar lingkaran.  Saat diimplementasikan, apabila kita tidak menggunakan composite pattern, kita harus mendefinisikan mata dan kepala menjadi sebuah class tersendiri. Yang menjadi masalah apabila ada banyak bentuk badan yang memiliki bentuk objek dasar yang sama. Ini berarti kita harus mendefinisikannya satu per satu. Saat program dikembangkan menjadi lebih komplek, kita akan semakin kewalahan dalam melakukan manajemen objek-objek tersebut. Dengan Composite Pattern, permasalahan ini dapat diselesaikan. Cara pendekatannya adalah dengan melakukan recursive composition sehingga memungkinkan sebuah objek dapat memanggil objek yang lain untuk dijadikan komposisinya. Baca entri selengkapnya »

Design Pattern : Decorator

Posted on Updated on

Character Decorator Pattern

Masih dengan topik tentang Design Pattern. Kali ini saya akan membagi wawasan tentang Decorator Pattern. Artikel ini merupakan artikel ke-3 setelah artikel pertama dan kedua membahas tentang Strategy Pattern dan Observer Pattern. Jika kedua pattern awal merupakan jenis Behavioral Pattern, Decorator Pattern termasuk dalam jenis Structural Pattern.  Decorator Pattern digunakan dalam kondisi di mana sebuah objek memiliki responsibility yang didapatkan dari objek yang lain. Responsibility ini menyebabkan adanya nilai tambah pada objek yang ditempeli tersebut. Salah satu contoh dari responsibility ini adalah penghias boneka, dekorasi ruangan, senjata pada mainan action figure, di mana objek utamanya adalah boneka, ruangan, atau action figure itu sendiri. Ada contoh menarik dari buku Erich Gamma yang mengangkat tentang penggunaan atribut / properti pada objek TextView yang memiliki atribut border dan scroll. Kira-kira ilustrasinya sebagai berikut.

Ilustrasi Konsep Decorator Pada  TextView
Ilustrasi Konsep Decorator Pada TextView

Baca entri selengkapnya »

Design Pattern : Observer

Posted on Updated on

Observer Pattern merupakan salah satu teknik yang digunakan dalam Design Pattern. Berbeda dengan Strategy Pattern yang saya jelaskan di postingan sebelumnya, Observer Pattern ini digunakan dalam kondisi MVC di mana sebuah model dapat ditampilkan secara paralel di lebih dari 1 view. Kondisi ini diilustrasikan dengan diagram berikut.

MVC Relationship
MVC Relationship

Dilihat dari ilustrasi di atas, sebuah View yang menerima data dari Model juga dapat memberikan request perubahan data untuk diteruskan ke Model, dan kemudian View yang lain menerima respon dengan mengubah data tersebut. Ini seringkali terjadi pada sebuah software multiplatform yang memiliki banyak chart untuk menampilkan data dan saling synchronize. Penggunaan Observer Pattern dapat diaplikasikan dalam kondisi berikut (mengutip dari buku Erich Gamma) :

  • When an abstraction has two aspects, one dependent on the other. Encapsulating these aspects in separate objects lets you vary and reuse them independently.
  • When a chane to one object requires changing others, and you don’t know how many objects need to be changed.
  • When an object should be able to nofity other objects without making assumptions about who these objects are. In other words, you don’t want these objects tightly coupled.

Baca entri selengkapnya »

Design Pattern : Return Strategy

Posted on Updated on

DesignPattern

Mulai semester ini, saya akan sedikit berbagi pengetahuan tentang design pattern, sebuah teknik dalam Software Engineering yang memungkinkan source code yang dibangun menjadi modular. Teknik ini menjadikan software dapat dimaintain secara lebih mudah dan terorganisir, walaupun dengan kompleksitas yang tinggi sekalipun. Design Pattern menjadi sesuatu yang harus diketahui bagi teman-teman yang bercita-cita menjadi seorang Analyst maupun Software Architect. Dengan menggunakan Design Pattern, seorang Software Architect dapat merencanakan dan merancang arsitektur software sehingga lebih tertata. Design Pattern memiliki banyak hubungan dengan OOP (Object Oriented Programming). Bila diibaratkan kita sedang mempelajari bahasa asing, OOP merupakan tata bahasanya, sedangkan Design Pattern merupakan teknik conversation sehari-hari. Design pattern ini memiliki variasi sekitar 23 jenis, cukup banyak bukan. Dapat disimpulkan Design Pattern menjadi faktor penting dalam pengembangan software. Sebagai media belajar, teman-teman bisa menggunakan buku Design Patterns : Elements of Reusable Object Oriented Software, karya Erich Gamma. Baca entri selengkapnya »