Selasa, 24 April 2012

Silver bullets dlm software project?

Baru baru ini, saya "menghentikan" sebuah project pengembangan perangkat lunak berbasis Web 2.0. Banyak spektrum pertimbangan yang saya telusuri, dan pada akhirnya saya memutuskan untuk "closing" project tersebut. Dari sekian banyak faktor yang dipertimbangkan, yang menjadi perhatian utamanya adalah: people.

Keilmuan software engineering mengajarkan bahwa keberhasilan suatu proyek perangkat lunak ditentukan oleh 3 (tiga) spektrum utama, yakni: people, process and technology/tools


Dalam keilmuan Manajemen Proyek Teknologi Informasi, ketiga spektrum tadi, harus dioptimalkan untuk memenuhi 3 (tiga) kriteria keberhasilan proyek, yakni:
1) scope goal; yakni menyangkut lingkup pengerjaan proyek, dimana dalam konteks proyek perangkat lunak adalah menyangkut fitur yang akan dikembangkan, atau disebut persyaratan fungsional)
2) cost goal; yakni menyangkut besaran biaya (dan tentu saja manfaat) yang dibutuhkan dalam pengerjaan proyek;
3) time goal; yakni menyangkut alokasi waktu pengerjaan proyek.

Disinilah dibutuhkan kemampuan seorang manager project perangkat lunak, untuk berpikir dan bertindak, dalam konteks mengoptimalkan "trade offs" antara keenam spektrum keberhasilan proyek tersebut diatas.


Saya kembali menyinggung, mengenai "closing" proyek diatas. Dari pengalaman saya berperan aktif dalam pengerjaan proyek pengembangkan perangkat lunak dalam berbagai jenis (puluhan proyek dalam kurun waktu 2008 - 2012), maupun membimbing penyelesaian tugas proyek mahasiswa (ratusan proyek Mata Kuliah, Kerja Praktek dan Karya Akhir), maka dapat saya simpulkan, bahwa faktor kritis yang menentukan derajat keberhasilan proyek perangkat lunak tersebut adalah faktor PEOPLE, atau manusianya. Pada tulisan ini, saya akan membahasa tentang faktor manusia/people.

Faktor manusia merupakan unsur yang terutama dalam menentukan sukses atau gagalnya suatu proyek pengembangan perangkat lunak. Sehingga jikalau ditanyakan apakah ada "silver bullets" dlm penentuan keberhasilan perangkat lunak, maka jawabnya adalah tanyakan pada setiap manusia yang terlibat dalam pengembangan proyek tersebut.

Secara mendasar, mengerjakan proyek perangkat lunak, tim pengembang harus selalu mengajukan tiga pertanyaan penting:

1) pertanyaan What, yakni menyangkut dimensi "what are we trying to do?";

2) pertanyaan Why, yakni "why are we doing that?";

3) pertanyaan How, yakni "how do we plan and execute to get it done?"

Ingat, menurut pengertian keilmuan software engineering, proyek perangkat lunak itu SELALU diberi pengertian "dalam kurun waktu tertentu". Proyek perangkat lunak harus memiliki deadline, atau batas akhir. Sehingga, setiap mereka yang terlibat harus memiliki tiga kemampuan dasar, yakni
1) kecerdasan. Kemampuan ini dibutuhkan untuk menemukan "the what" yang saya sebutkan diatas,
2) motivation. Kemampuan inimdibutuhkan untuk menemukan "the why"
3) skill atau kompetensi. Kemampuan ini dibutuhkan untuk menemukan "the how".

Jadi, singkatnya, bentuklah tim pengembang perangkat lunak yang memiliki kemampuan untuk menjawab pasangan - pertanyaan tersebut diatas. Isu disini bukanlah berapa banyak anggota tim pengembang. Sedangkan hanya satu orang anggota tim pengembang, tapi jika dia bisa "berfungsi" dalam konteks menjawab pertanyaan tersebut diatas, maka keberhasilan suatu proyek pengembangan perangkat lunak, sudah hampir dipastikan. Dalam pengalaman saya membimbing mahasiswa pun, maka setiap mahasiswa yang mampu terus-menerus menemukan jawaban dari tiga pertanyaan tersebut diatas, mereka cenderung akan lebih berhasil dalam pengerjaan tugas proyek.

Mari kita lihat sebuah gambaran, dari sejarah pergerakan kemerdekaan Indonesia. Di era tahun-tahun awal berdirinya Negara Kesatuan Republik Indonesia (NKRI), maka negara ini memiliki tiga tokoh penting, terkait bahasan diatas! Yang pertama Indonesia punya Soekarno, beliau memiliki peran sebagai figur yang menmberi jawaban "the why" atas berdirinya NKRI. Saat berpidato, maka Bung Karno, sanggup memotivasi segenap rakyat Indonesia. Rakyat Indonesia memiliki pemahaman dan semangat untuk memperjuangkan kemerdekaan, dan mau dengan tekad bulat membayar dengan harga nyawa. Figur yang kedua adalah Muhammad Hatta, atau Bung Hatta. Beliau adalah figur yang menjawab pertanyaan "the what" terkait pendirian Negara Kesatuan Republik Indonesia. Konsep beliau tentang ekonomi kerakyatan dan administrasi penyelenggaraan negara, benar-benar mampu menjawab bentuk seperti apa Negara Kesatuan Republik Indonesia ini jadinya. Figur ketiga adalah Panglima Besar Jendral Soedirman. Beliau adalah figur yang menjawab pertanyaan "the how", beliau memiliki skill sebagai seorang pejuang, petarung yang kompeten untuk melakukan peperangan di garis depan. Saya bukan seorang pakar sejarah, tapi saya berkeyakinan bahwa Negara Kesatuan Republik Indonesia bisa bertahan di tahun tahun awal kemerdekaannya, karena Indonesia punya "the why" Bung Karno, "the what" Bung Hatta, dan "the how" Panglima Besar Soedirman.

Joe Marasco mengajarkan bahwa, the what, the why dan the how akan mampu menyelesaikan proyek perangkat lunak yang relatif sukses memenuhi kriteria proyek perangkat lunak yang berhasil. Menurut Joe, mappingnya adalah seperti ini:
what  →  intelligence  →  the brain (analytic);
why  →  motivation  →  the soul (affective); and
how  → skills  → the sword (pragmatic implementation).

Selanjutnya, Joe menulis:
what →  intelligence →  customer focus →  the brain (analytic);
why →  motivation →  integrity →  the soul (affective); and
how →  skills →  results orientation → the sword (pragmatic implementation).

Melihat "best practices" dari Joe Marasco, maka tentu saja, kita mulai memahami, bahwa faktor people dan managing people merupakan hal krusial dalam pengembangan perangkat lunak. Saya sebagai seorang profesional Teknologi Informasi, selalu menggunakan paradigma Joe Marasco dalam mengembangkan proyek perangkat lunak, dan sebagai dosen saya selalu membimbing mahasiswa2 saya untuk mengikuti paradigma sukses dari Joe Marasco tersebut. Sebaliknya, jika ketiga spektrum Joe Marasco ini tidak terlihat lagi dalam suatu proyek pengembangan perangkat lunak, maka saya bisa pastikan, kegagalan proyek TI tersebut sudah diambang pintu. 
Sudah waktunya untuk melakukan perubahan, dan perubahan itu selalu dimulai dari me, myself and I ... keep asking: "what are we trying to do?"; "why are we doing that?"; "how do we plan and execute to get it done?"


Catatan: Tentang Joe Marasco
JOE MARASCO retired as a senior vice president and business-unit manager for Rational Software in 2003 after 17 years of service. From 2005 to 2008, he was president and CEO of Ravenflow, a software start-up addressing requirements definition using natural language processing. He is the author of The Software Development Edge: Essays on Managing Successful Projects (Addison-Wesley, 2005

Mengapa sukar menilai valuasi start up TIK?

Saya merupakan pembaca setia dari blogger @rahards. Nama blog beliau adalah Padepokan Budi Raharjo (klik disini untuk menemukan blog Padepokan Budi Raharjo ). Saya kenal beliau sebagai seorang dosen, berkualifikasi S3, yang mengajarkan Keamanan Komputer dan Jaringan Komputer.

Singkat cerita, kemaren (Senin, 23 April 2012), beliau memposting ttg kegiatan beliau hari ini, Selasa, 24 April 2012, akan membawakan materi mengenai Pendanaan Start Up di bidang ICT. Klik disini selngkapnya http://rahard.wordpress.com/2012/04/23/pendanaan-startup-di-bidang-ict/
Saya pun langsung membaca materi presentasi beliau (yang dapat diunduh disini selengkapnya http://www.scribd.com/doc/90749326/Pendanaan-Startup-ICT )

Yang menarik perhatian saya adalah, pada halaman dua materi tersebut, beliau menulis bahwa:
Bank belum memiliki pengalaman dan kemampuan untuk menilai resiko kredit dan usaha di bidang TIK, sehingga mereka cenderung konservatif dalam menilai. Sebagai contoh, belum ada metode untuk menilai valuasi dari sebuah start up TIK. Akibatnya secara umum start up akan kesulitan mendapatkan pendanaan dari Bank.
(baca disini selengkapnya http://www.scribd.com/doc/90749326/Pendanaan-Startup-ICT)

Dalam keilmuan manajemen Investasi Teknologi Informasi, sebenarnya telah dikembangkan banyak metode terkait menilai valuasi dari sebuah start up TIK. Mulai dari metode konvensional (seperti ROI, IRR, NPV dan Payback Period) hingga metode yang lebih komprehensif (seperti Information Economics, Balanced ScoreCard, IT Valuation Matrix ataupun IT Value Network).

Semua metode tersebut diatas sebenarnya dapat digunakan untuk menilai valuasi start up TIK! Dan saya yakin, metode tersebut diatas dapat memberikan gambaran resiko atas suatu start up TIK. Tantangannya disini adalah apakah pihak Bank mau menggunakan pendekatan2 tersebut diatas dalam melakukan analisa kredit dan manajemen resiko?

Saya berikan sebuah contoh dalam menilai valuasi start up TIK, berupa Pembangunan Aplikasi Perangkat Lunak berbasis Web. Selengkapnya dapat diunduh disini.

Dengan menggunakan teknik Function Point Analysis, maka kita mendapatkan estimasi besar, lama waktu pengerjaan, hingga jumlah sumber daya manusia yang dibutuhkan. Tinjauan ini dapat menjadi acuan awal untuk menghitung valuasi, dengan menggunakan ROI, NOV dan Payback Period.

Untuk riset riset saya terkait menilai valuasi suatu investasi awal TIK, dapat dilihat disini selengkapnya ...

Senin, 23 April 2012

secant


Praktikum Metode Numerik
MODUL 4 Metode SECANT

BAB I
TUJUAN DAN DASAR TEORI
I.1 Tujuan
1. Menguasai metode Secant yang digunakan dalam komputasi numerik.
2. Memahami algoritma pemrograman untuk merancang program metode Secant yang ada dalam komputasi numerik.
3. Menerapkan algoritma untuk perancangan dan pembuatan program metode Secant.
4. Melakukan pengujian algoritma dan kode program
5. Membuat Dokumentasi

I. 2 Dasar Teori
Akar fungsi pada metode Secant untuk i=1 dan 2 bisa dihitung dengan metode yang lain atau ditebak. Mulai i=3, akar fungsi dihitung dengan rumus (umum):






I. 3 Langkah – langkah Metode Secant:
1. Menentukan nilai awal P0 dan P1.
2. Mencari nilai P berikutnya, dengan 



3. Menguji P, apakah f(x) 0.
4. Mencari nilai P berikutnya sampai f(x) 0.

Modul selengkapnya dapat diunduh disini.

Newton Rhapson


Praktikum Metode Numerik
Modul 3 Metode NEWTON - RHAPSON
BAB I
TUJUAN DAN DASAR TEORI

I.1 Tujuan
1.    Menguasai metode Newton Rhapson yang digunakan dalam komputasi numerik.
2.    Memahami algoritma pemrograman untuk merancang program metode posisi palsu - metode yang ada dalam komputasi numerik.
3.    Menerapkan algoritma untuk perancangan dan pembuatan program metode posisi palsu.
4.    Melakukan pengujian algoritma dan kode program
5.    Membuat dokumentasi

I.2 Dasar Teori
Metode Newton-Raphson adalah metode penyelesaian persamaan non-linear, dengan cara merapatkan suatu titik pada suatu sumbu x sehingga hampir mendekati perpotongan garis dengan sumbu x.

  
I.3 Langkah – langkah metode Newton Rhapson

1)      Menentukan nilai awal P0.
2)      Mencari nilai P berikutnya, dengan



3)      Menguji P, apakah f(x) sudah mendekati 0.
4)      Mencari nilai P berikutnya.

Modul selengkapnya dapat diunduh disni

Regula Falsi


Praktikum Metode Numerik
MODUL 2 Metode POSISI PALSU

BAB I
TUJUAN DAN DASAR TEORI
I.1 Tujuan
1.    Menguasai metode posisi palsu (atau regula-falsi) yang digunakan dalam komputasi numerik.
2.    Memahami algoritma pemrograman untuk merancang program metode posisi palsu - metode yang ada dalam komputasi numerik.
3.    Menerapkan algoritma untuk perancangan dan pembuatan program metode posisi palsu.
4.    Melakukan pengujian algoritma dan kode program
5.    Membuat dokumentasi

I.2 Dasar Teori
Metode posisi palsu (atau regula-falsi) menetapkan hampiran akar sebagai perpotongan antara garis yang melalui titik [a, f(a)], dan titik [b,f(b)] dengan sumbu-x. Jika titik potong tersebut adalah c, maka akar terletak antara (a,c) atau (c,b). Penentuan interval yang mengandung akar seperti pada metode bagi dua.
 


I.3 Langkah – langkah metode Posisi Palsu

1.      Tentukan batas atas (a) dan batas bawah (b)
2.   Menghitung c dengan rumus:



3.      Subtitusikan nilai c dalam Fungsi
4.      Jika f(c) < 0 maka nilai c sebelumnya akan menjadi batas atas (a) untuk iterasi berikutnya
5.      Jika f(c) > 0 maka nilai c sebelumnya akan menjadi batas bawah (b) untuk iterasi berikutnya
6.      Iterasi berhenti sampai nilai f(c) =  0

Modul selengkapnya bisa diunduh disini