Wednesday, April 27, 2005

Tolnya udah nyambung

Alhamdulillah ... hari ini percobaan perdana fly-over veteran di jalan tol bintaro-pondok pinang. Lancar euy, ane sampe kaget. Biasanya padat merayap, kok pagi ini luancaaar sekali.
Apa nggak enak tuh, Bintaro - Kantor bisa 20 menit :-)

Wassalam

Wednesday, April 13, 2005

Softare Engineering Methodology: An Overview

SE Methodology
· Metodologi berat (monumental atau heavy-weight)
- Code / Build and Fix
- Software life Cycle Model
- Metodologi pengembangan aplikasi
- Kerangka Capability Mature Model
· Metodologi tangkas (Light Weight)
- Agile Process Model
- Extreme Programming (XP)
· Best Practices

Code / Build and Fix
· Pengembangan perangkat lunak adalah merupakan chaotic activities
· Ketika ukuran software atau program yang dikembangkan kecil, pendekatan code and fix tidak bermasalah
· Ketika software yang dibangun cukup kompleks diperlukan suatu metodologi pengembangan supaya tidak terjadi chaos
· Tujuannya agar proses pengembangan dapat diprediksi dan dapat dilakukan secara efisien dan optimal

Software Life Cycle Model (Pressman, 2001)
· Build and fix model
· Waterfall model
· Prototyping model
· Incremental model
· Spiral model
· Digunakan sesuai dengan kondisi
· Sering digunakan untuk pendekatan hibrida
· Bertujuan untuk mengelola tahapan-tahapan proses pengembangan perangkat lunak

Metodologi Pengembangan Aplikasi (Whitten et al., 2001)
· Suatu perangkat lunak yang dikembangkan bisa terdiri dari lebih dari satu aplikasi
· Setiap aplikasi mempunyai spesifikasi kebutuhan yang berbeda sesuai dengan fungsinya
· Pada system perangkat lunak yang besar, setiap aplikasi merupakan suatu sub-sistem

Framework for Application System Techniques (FAST) Terdiri dari 7 tahapan
· Preliminary Investiation Phase : Perencanaan dan Survey
· Problem Analysis Phase : Analisis domain masalah
· Requirement Analysis Phase : Menentukan kebutuhan dan prioritas penyelesaiannya
· Decision Analysis Phase : Mengidentifikasi dan menganalisis kandidat-kandidat kebutuhan
· Design Phase : Mengubah kebutuhan menjadi model-model rancangan termasuk rancangan basis data, user interface dan tampilan-tampilan
· Implementation Phase : Mengubah bentuk rancangan menjadi bentuk pemrograman dalam bahasa tertentu
· Operation and Support : Mengkoreksi program dan membuat prosedur pemakaian serta membantu user dalam mengoperasikan aplikasi

Pemodelan Model Driven Development (MDD – ada 3 ) pada metodologi FAST
· Structured Analysis and Design : Menggunakan pendekatan modular dan biasanya juga menggunakan pemrograman terstruktur
· Information Engineering : Menggunakan Entity Relationship Diagram (ERD) dalam pemodelan kebutuhan system dan Data Flow Diagram (DFD) dalam pemodelan proses-proses
· Object-Oriented Analysis and Design : Menggunakan orientasi kelas-kelas obyek dan pemrograman dengan bahasa object-oriented

Kerangka Capability Maturity Model (CMM)
(Software Engineering Institute Carnegia Mellon University, 1984)
· Organisasi ditandai dengan Software Process Maturity Level
· Ada 5 level :
- Initial Level
- Repeatable Level
- Defined Level
- Managed Level
- Optimized Level
· Dirumuskan Key Process Area (KPA) dengan masing-masing key practice, infrastructure dan aktivitasnya yang harus diterapkan untuk setiap level
· Bertujuan untuk mendisiplikan manajemen software process – CMM assists an organization in providing the infrastructure for a disciplined and mature software process

Kendala Metodologi Berat
· Metodologi yang berkembang :
- Terlalu birokratis (dokumentasi dan banyak tahapan)
- Pengembangan menjadi lambat
- Karena itu disebut heavy-weight atau monumental methodology atau metodologi (ditandai dengan banyak berat dengan banyak urutan proses)
· Muncul light-weight atau agile methodology atau metodologi tangkas:
- Merupakan jembatan antara code and fix dan metodologi berat

Agile Process Model (Fowler, 2000)
· XP (Extreme Programming)
· Crystal Family
· Scrum
· Feature Driven Development (FDD)
· Dynamic System Development Method (DSDM)
· Highsmith Adaptive Software Development
· Open Source

Extreme Programming
· Pada tahap implementasi dari suatu disain system ada beberapa kendala:
- Implementasi suatu rancangan perangkat lunak dilakukan oleh programmer – dibutuhkan programmer dengan kualitas tertentu
- Human is to err – programmer cenderung untuk melakukan kesalahan
- Manusia sering membenarkan diri sendiri – sulit untuk melihat kesalahan yang dibuatnya, karena itu perlu reviewer, inspector, dan tester (tim Software Quality Assurance – SQA)
- Pada “extreme programming – programming tangkas” pasangan programmer melakukan programming secara bersama-sama

Prinsip Agile Methodology
· Fokus pada hasil : Penilaian adalah menurut pelanggan, jika pelanggan mengatakan baik, berarti hasilnya adalah merupakan software yang bagus
· Fokus pada skil individu : tidak mudah diganti di tengah jalan, tidak seperti pekerja pabrik
· Fokus pada kolaborasi : Inovasi melalui interaksi dalam group
· Fokus pada umpan balik dengan memanfaatkan kemampuan adaptasi : Kebutuhan selalu bisa berubah selama masa pengembangan
· Fokus pada kesederhanaan : minimalis (setiap saat hanya menerapkan kebutuhan yang sudah jelas dibutuhkan)

Best Practices
· Text Books, Jurnal dan institusi SE banyak mengusulkan berbagai metodologi yang dianggap sebagai best practice dalam Software Engineering
· Apakah tujuannya ?
- Menghasilkan produk software yang berkualitas
- Melakukan proses pengembangan yang efisien dan optimal (tepat waktu, tepat budget dan tepat hasil)
- Menghindari terjadinya software crisis
· Bagaimana memilih metodologi pengembangan perangkat lunak ?
- Dalam hal ini, dilakukan evaluasi atau studi gap analysis antara metodologi yang diusulkan dan metodologi yang dikenal sebagai best practice pada suatu kasus spesifik

FAQs about: Software Engineering

Apa yang dimaksud dengan software?
· Software bukan sekedar sebuah program komputer
· Sebuah Software System terdiri atas :
- Sejumlah program yang terpisah
- File-file konfigurasi untuk mensetup program2 tersebut
- Dokumentasi yang menerangkan struktur dari software tsb
- Dokumentasi pengguna yang menjelaskan cara menggunakan software tsb
- Dokumentasi dari produk software tersebut (website untuk mendowload informasi terkini dari produk software tersebut)

Apa pula yang dimaksud dengan Software Engineering (SE) ?
· SE adalah sebuah bidang disiplin teknik yang mengutamakan semua aspek mengenai produksi software (mulai dari spesifikasi system sampai dengan pemeliharaan system tersebut setelah digunakan)
· Displin teknik : membuat software dapat bekerja baik dengan menerapkan teori2, metode2 dan menggunakan tools2 yang ada
· Aspek dari software production yang termasuk : proses teknis dari pengembangan software dan proses manajerial proyek dari sebuah produksi software

Apa perbedaan antara SE dan Computer Science ?
· CS lebih menekankan pada teori2 dan metode2 yang terkait dengan komputer dan system software.
· SE lebih menekankan pada masalah2 praktis pada saat memproduksi software
· CS merupakan cabang dari pohon ilmu komputer dan SE merupakan cabang dari pohon teknologi informasi

Apakah Software Process itu ?
· Sebuah software process adalah sekumpulan akitfitas dan hasil2 yang terkait dalam menghasilkan produk software
· Kumpulan aktifitas :
- Spesifikasi software
- Pengembangan software
- Validasi software
- Evolusi (pemeliharaan) software
· Merupakan penerapan metode2, prosedur2 dan penggunaan tools

Apakah Software Process Model itu ?
· Sebuah software process model adalah deskripsi sederhana dari sebuah software process yang ditampilkan dari perspektif tertentu
· Contoh: Data Flow merepresentasikan proses sebagai kumpulan aktifitas dimana masing2 aktifitas menghasilkan beberapa transformasi data

Apakah SE Methods ?
· Sebuah metode SE adalah merupakan pendekatan terstruktur dari sebuah pengembangan software untuk memfasilitasi produksi dari sebuah software yang berkualitas tinggi dengan cara yang cost-effective
· Structural Analysis (De Marco, 1978)
· Object-oriented (Booch, 1994)
· Unified Modelling Language – UML (Fowler and Scot, 1997; Booch, 1999; Rumbaugh, 1999)

Apa saja atribut2 dari software yang baik ?
· Maintainability: mudah diperbaiki dan dikembangkan
· Dependability: reliable, secure dan safe, tidak terganggu oleh system failure
· Eficiency: dalama penggunaan resource seperti memori dan prosesor
· Usability: interface yang tepat untuk pengguna dan dokumentasi yang baik

Apakah tantangan utama (kunci) dalam menghadapai SE ?
· Legacy challenge: tantangan pemeliharaan dan pembaharuan software (isu minimal cost dan layanan bisnis yang berkesinambungan)
· Heterogeneity of challenge (Tantangan keberagaman): tantangan dari teknik pengembangan untuk membangun software yang dependable di atas jaringan yang terdiri dari jenis komputer dan dukungan system yang berbeda-beda
· Delivery challenge: tantangan untuk menyediakan user interface yang tepat dan panduan pengguna yang lengkap

Thursday, April 07, 2005

FDD is one of Agile Methodology

Feature Driven Development (FDD) adalah sebuah metodologi dalam Software Engineering yang menjadi bagian dari Agile Methodology, yang belakangan ini semakin banyak digunakan untuk menggantikan metodologi konvensional. Pada metodologi sebelumnya, banyak hal yang dipandang oleh para pengembang software sudah tidak relevan lagi dengan kebutuhan dari business enterprise yang lebih mengutamakan efektifitas dan efisiensi dari sebuah proyek pengembangan software. Hal-hal yang tingkat signifikansinya tidak terlalu tinggi, artinya bisa dikategorikan sebagai aspek pendukung saja, atau dengan kata lain jika aspek tersebut tidak dibuat tidak akan membuat sebagian atau seluruh fungsi dari aplikasi tersebut tidak akan berjalan, tidak akan menjadi bagian yang diperhatikan pada metodologi ini.

Sebagai contoh, misalnya mengenai masalah organisasi proyek, pembuatan dokumentasi, dan lain sebagainya, sebetulnya bukanlah sesuatu yang signifikan. Artinya, tanpa itupun sebuah proyek pengembangan software akan tetap dapat dilakukan, dan dapat mencapai target waktu sesuai dengan hasil yang diinginkan oleh klien. Toh dengan kombinasi tim yang solid dan dengan keahlian dan pengalaman yang cukup, sebuah proyek pengembangan dapat dilakukan tanpa harus berkutat dengan hal-hal yang bersifat birokratis seperti pada metodologi konvensional.

Nah, sebagai salah satu bagian dari Agile Methodology, FDD lebih menitikberatkan metode dengan pendekatan feature, atau fungsi-fungsi yang memiliki nilai tinggi bagi si klien. Pembuatan feature itu sendiri dengan melalui pendekatan bisnis, dimana akan melibatkan fungsi marketing dan bisnis dari klien, termasuk juga melibatkan business domain expert dari pihak pengembang untuk mendampingi para analyst dan programmer dalam melakukan coding.

Tolok ukur tingkat keberhasilan sebuah proses pengembangan dengan menggunakan metodologi ini adalah dengan melihat tingkat kepuasan klien. Artinya, jika klien merasa puas dengan hasil dari aplikasi yang dikembangkan, itu menunjukkan semua fungsi berjalan dengan baik, dan itu menunjukkan bahwa sebuah proyek pengembangan aplikasi dinilai berhasil. Berbeda dengan metodologi konvensional yang harus melalui tahapan test, seperti unit test, integration test, performance test, dan lain-lain terlebih dahulu sebelum program dideliver ke klien. Hal ini tentunya akan membutuhkan waktu yang lebih lama.

So, How agile are you?

Wassalam.

Tuesday, April 05, 2005

Software Development Life Cycle

Great..it's very great. It was totally wrong. That was kind a stupid mistake I've ever done before.
Ane sebetulnya udah kepikiran kalo metodologi yang diminta untuk dipake sebetulnya SDLC, sesuai dengan handbook yang jadi rujukan, System Analysis Design by Alan Dennis and Barbara Haley Wixom. Tapi karena istilah yang diminta kok kayaknya mengarah ke Fast Methodology-nya si Whitten, ya kita bikinnya ngikutin formatnya yang itu. Wah, untung ada waktu buat revise :D

Jadi, kira-kira untuk Phase-1 Progress Report isinya a.l :

TAHAPAN PLANNING, isinya :

- Identify Problems. Make a list of problems gathered from the clients by using one of this three observation methods, which is interview if the user is less than 5 persons, questionare if the user more than 5 persons. In this phase, we also have to collect any possible physical evidence that has relations with the problems, and keep them as supporting documents to justify feasibility analysis.

- System Objective. We should be able to define what is the expected system that the client wants to have as the output of the project. This output has to be able to fit in the existing organization, and support the business requirements as stated earlier.

Baru setelah semua activities pada tahapan planning selesai, we could proceed to analysis phase to exercise all the gathered information with an analysis procedure template.

So, just wait for next analysis phase description.

Wassalam,