Kamis, 26 Mei 2016

Manajer Proyek (Project Manager)


Project manager adalah orang yang ditunjuk untuk menggerakkan organisasi proyek dan memimpinnya dalam mencapai objective proyek. Project Manager adalah posisi puncak yang luar biasa dalam proyek. Di pikiran dan penanya, tertumpu beban tanggung jawab yang besar atas kesuksesan proyek. Pada proyek besar dan sangat kompleks, project manager bahkan harus memiliki kesempurnaan kompetensi.  Tanggung jawab project manager adalah untuk memenuhi kebutuhan yang berupa kebutuhan tugas, kebutuhan team, dan kebutuhan individual.
Project manager menjadi penghubung antara strategi dan tim. Peran project manager dalam perkembangan bisnis dan keberlangsungan hidup perusahaan menjadi semakin lebih strategis. Tidaklah cukup jika hanya aplikasi knowledge, tools and techniques yang telah dikenal sebagai good practice pada pengelolaan proyek yang efektif. Menurut PMBOK, diperlukan keahlian khusus dan keahlian manajemen secara umum untuk proyek pada semua area / bidang, manajemen proyek yang efektif mensyaratkan project manager memiliki kompetensi-kompetensi:
  • Knowledge – Terkait pengetahuan project manager akan project management
  • Performance – Terkait dengan apa yang project manager mampu untuk aplikasi pengetahuan project management yang dimiliki.
  • Personal - Terkait dengan bagaimana perilaku project manager dalam melaksanakan proyek atau aktifitas terkait. Efektifitas personal mencakup attitude, karakter inti personal, dan kepemimpinan, yang menyediakan kemampuan untuk membimbing team proyek ketika mencapai objective proyek dan menyeimbangkan project constraints.

Kriteria Manajer Yang Baik
Ketika datang saatnya untuk menjadi seorang pemimpin, dibutuhkan keahlian khusus untuk mengelola dan mengatur suatu organisasi. Pemimpin harus memberikan yang terbaik kepada organisasinya, tidak peduli akan perbedaan antara setiap anggotanya. Konsep tersebut pun berlaku untuk manajemen proyek. Untuk menjadi manajer proyek yang baik harus memiliki beberapa kriteria yang baik pula. Employment Status Indicator (ESI) International telah menyusun daftar tanggapan dari sumber yang berbeda untuk membuat gambaran suatu kriteria manajer proyek yang baik. Berikut ini adalah 10 kriteria teratas yang disusun oleh ESI.
1.        Menginspirasi dengan Visi Bersama, Manajer proyek yang baik membantu semua anggota tim agar mereka merasa seperti memiliki kepentingan yang sama dalam sebuah proyek, dan memberdayakan semua orang untuk berbagi dan mengalami visi kelompok. Warren Bennis, pelopor studi Kepemimpinan, mengatakan tentang jenis pemimpin yang visioner: “Mereka menawarkan kesempatan kepada orang-orang untuk menciptakan visi mereka sendiri, untuk mengeksplorasi apa visi tersebut berarti untuk pekerjaan dan kehidupan mereka, dan untuk membayangkan masa depan mereka sebagai bagian dari organisasi.”
2.        Kominukator yang Baik, Kemampuan untuk berkomunikasi dengan orang-orang di semua tingkatan hampir selalu disebut sebagai keterampilan yang paling penting kedua oleh manajer proyek dan anggota tim. Kepemimpinan proyek panggilan untuk komunikasi yang jelas tentang tujuan, tanggung jawab, kinerja, harapan dan umpan balik. Pemimpin proyek juga merupakan penghubung terhadap tim untuk organisasi yang lebih baik. Pemimpin harus memiliki kemampuan untuk secara efektif bernegosiasi dan menggunakan persuasi bila diperlukan untuk memastikan keberhasilan tim dan proyek. Melalui komunikasi yang efektif, pimpinan proyek mendukung prestasi individu dan tim dengan menciptakan pedoman yang jelas untuk mencapai hasil dan untuk kemajuan karir anggota tim.
3.        Integritas, Salah satu hal yang paling penting bagi pemimpin proyek adalah tindakan, dan bukan sekedar kata-kata. Kepemimpinan yang baik menuntut komitmen, dan demonstrasi dari etika. Membuat standar perilaku etis bagi diri sendiri dan hidup dengan standar tersebut, serta memberi penghargaan bagi yang memberikan contoh praktek-praktek tersebut, adalah tanggung jawab pimpinan proyek. Kepemimpinan termotivasi oleh kepentingan diri sendiri, bukan untuk melayani kesejahteraan tim.
4.        Antusiasme, Manajer proyek yang baik memiliki keuletan pada langkah mereka dan sikap percaya diri yang menetapkan kecepatan untuk seluruh tim mereka. Memiliki energi yang baik  sangat penting untuk menetapkan contoh positif dan sikap untuk tim. Manajer proyek yang berkomitmen positif dan memiliki tujuan bahkan ketika melakukan kesalahan akan membantu mengilhami orang lain untuk tidak menjadi negatif ketika proyek mengalami keterlambatan atau halangan.
5.        Empati, Empati dan simpati adalah dua hal yang berbeda. Simpati biasanya diproyeksikan, sedangkan empati berarti benar-benar memahami bagaimana orang lain merasakan sesuatu, terutama ketika datang ke hal-hal yang melibatkan kehidupan di luar pekerjaan. Kadang-kadang empati perlu ditunjukkan kepada anggota tim yang sedang berjuang untuk mengatasi masalah karena bisa saja terdapat masalah pribadi yang mungkin dapat mempengaruhi pekerjaan mereka. Dengan demikian, seorang manajer proyek yang kuat akan berempati dengan masalah anggota tim tanpa menunjukkan penyesalan. Memastikan anggota tim dapat tetap produktif pada proyek, tanpa memperburuk masalah pribadi mereka.
6.        Kompetensi, Anggota tim perlu merasa seperti manajer proyek mereka memiliki beberapa tingkat keahlian dalam subyek proyek. Dengan demikian, pemimpin proyek harus memiliki kemampuan untuk memimpin tim mereka dengan keahlian teknis jika suatu saat terjadi masalah teknis yang tidak dapat diatasi oleh tim. Hal ini tidak berarti seorang manajer proyek pada proyek pengembangan perangkat lunak membutuhkan kemampuan untuk membuka Visual Studio dan mulai coding di console, namun itu tidak berarti bahwa manajer proyek memahami implikasi dari tantangan teknis yang berbeda. Pemimpin yang dianggap sebagai kompeten oleh rekan-rekan mereka memiliki kemampuan untuk menginspirasi, mengaktifkan, dan mendorong.
7.        Mendelegasikan Tugas, Kepercayaan adalah bagian terbesar dari manajemen proyek yang efektif, dan berapa banyak manajer proyek percaya tim mereka sering ditunjukkan melalui seberapa besar tanggung jawab mereka bersedia untuk mendelegasikan. Manajer proyek yang baik memahami tingkat pengawasan setiap kebutuhan anggota tim untuk tugas dari masing-masing anggota. Menetapkan tugas yang tepat untuk orang yang tepat dan mempercayai mereka untuk memanfaatkan yang terbaik dari kemampuan mereka adalah kunci dari karakteristik manajer proyek yang baik.
8.        Stay Cool walaupun dalam Under Pressure, Dalam dunia yang sempurna, setiap proyek akan selesai tepat waktu, sesuai anggaran, dan pada lingkupnya. Sayangnya, kita tidak hidup di dunia yang sempurna. Ketika keadaan menjadi sulit, manajer proyek yang baik bisa tetap menjaga sikapnya untuk tenang. Bennis Waran menyatakan: ” Keluar dari ketidakpastian dan kekacauan perubahan, pemimpin bangkit dan mengartikulasikan gambaran baru masa depan yang menarik proyek bersama” Singkatnya, semakin banyak manajer proyek tampak “stres”, semakin banyak tim dan klien akan stres juga. Manajer proyek yang baik akan tetap dingin di bawah tekanan.
9.        Keterampilan Team Building, Sebuah pembangun tim terbaik dapat didefinisikan sebagai orang yang kuat yang memberikan substansi yang memegang tim bersama-sama dalam tujuan yang sama menuju tujuan yang tepat. Agar sebuah tim berkembang dari sekelompok orang asing ke unit kohesif tunggal, pemimpin harus memahami proses dan dinamika yang diperlukan untuk transformasi ini. Dia juga harus tahu gaya kepemimpinan yang sesuai untuk digunakan selama setiap tahap pengembangan tim. Pemimpin juga harus memiliki pemahaman tentang pemain tim yang berbeda gaya dan cara memanfaatkan masing-masing pada waktu yang tepat, untuk masalah yang dihadapi.
10.    Tahu Bagaimana Memecahkan Masalah, Manajer proyek yang baik memecahkan masalah dengan berbagi tanggung jawab dengan para ahli di tim mereka. Mirip dengan item nomor 6 di atas tentang kompetensi, bahkan manajer proyek yang baik tidak akan memiliki solusi untuk setiap masalah yang muncul, hanya saja tidak mungkin. Namun, manajer proyek yang baik akan memahami bagaimana untuk mengatur jalur menuju solusi. Hal ini berarti meningkatkan pengetahuan para anggota tim dan para pemangku kepentingan yang memiliki pengetahuan ahli untuk membantu, dan menetapkan rencana untuk memecahkan masalah yang sulit dengan memanfaatkan pengalaman tim. Sebagian besar karakteristik tersebut di atas mengikat satu sama lain, dan jika seorang manajer proyek yang baik akan menampilkan satu atau dua dari kriteria ini maka kemungkinan mereka dapat bekerja untuk menjadi lebih baik.



Minggu, 15 Mei 2016

COCOMO (Constructive Cost Model )

COCOMO (Constructive Cost Model) merupakan model algoritma estimasi biaya perangkat lunak yang dikembangkan oleh Barry Boehm pada tahun 1981. Model ini menggunakan dasar regresi formula, dengan parameter yang berasal dari data historis dan karakteristik proyek-proyek saat ini. Pada tahun 1981, Barry Boehm mendesain COCOMO untuk memberikan estimasi jumlah Person-Months untuk mengembangkan suatu produksoftware. Referensi pada model ini dikenal dengan nama COCOMO 81. Pada tahun 1990, muncul suatu model estimasi baru yang disebut dengan COCOMO II. Secara umum referensi COCOMO sebelum 1995 merujuk pada original COCOMO model yaitu COCOMO 81, kemudian setelah itu merujuk pada COCOMO II.
Model estimasi COCOMO telah digunakan oleh ribuan project manager suatu proyek perangkat lunak, dan berdasarkan pengalaman dari ratusan proyek sebelumnya. Tidak seperti model estimasi biaya yang lain, COCOMO adalah model terbuka, sehingga semua detail dipublikasikan, termasuk :
·      Dasar persamaan perkiraan biaya.
·      Setiap asumsi yang dibuat dalam model.
·      Setiap definisi.
·      Biaya yang disertakan dalam perkiraan dinyatakan secara eksplisit
Perhitungan paling fundamental dalam COCOMO model adalah penggunaan Effort Equation (Persamaan Usaha) untuk mengestimasi jumlah dari Person-Months yang dibutuhkan untuk pengembangan proyek. Sebagian besar dari hasil-hasil lain COCOMO, termasuk estimasi untuk Requirement danMaintenance berasal dari persamaan tersebut. 

Jenis-jenis model cocomo.
1. Dasar Cocomo
Menggunakan estimasi parameter persamaan (dibedakan menurut tipe sistem yang berbeda) upaya pengembangan dan pembangunan durasi dihitung berdasarkan perkiraan DSI. Dengan rincian untuk fase ini diwujudkan dalam persentase. Dalam hubungan ini dibedakan menurut tipe sistem (organik-batch, sebagian bersambung-on-line, embedded-real-time) dan ukuran proyek (kecil, menengah, sedang, besar, sangat besar).
Model COCOMO dapat diaplikasikan dalam tiga tingkatan kelas:
a.         Proyek organik (organic mode) Adalah proyek dengan ukuran relatif kecil, dengan anggota tim yang sudah berpengalaman, dan mampu bekerja pada permintaan yang relatif fleksibel.
b.        Proyek sedang (semi-detached mode)Merupakan proyek yang memiliki ukuran dan tingkat kerumitan yang sedang, dan tiap anggota tim memiliki tingkat keahlian yang berbeda
c.         Proyek terintegrasi (embedded mode)Proyek yang dibangun dengan spesifikasi dan operasi yang ketat

Model COCOMO dasar ditunjukkan dalam persamaan 1, 2, dan 3 berikut ini:

Persamaan COCOMO dasar berbentuk :
P : jumlah orang yang diperlukan.
Dimana:   E adalah usaha yang diaplikasikan dalam person-month,
                D adalah waktu pengembangan dalam bulan kronologis
                KLOC adalah jumlah baris penyampaian kode yang diperkirakan untuk proyek tsb.
              Koefisien ab dan cb  dan eksponen bb dan db ada pada tabel1.  sedangkan koefisien ab, bb, cb, dan db diberikan pada Tabel 1 berikut:
Tabel 1. Model COCOMO Dasar
 

2. Model COCOMO Lanjut (Intermediate COCOMO)
Pengembangan model COCOMO adalah dengan menambahkan atribut yang dapat menentukan jumlah biaya dan tenaga dalam pengembangan perangkat lunak, yang dijabarkan dalam kategori dan subkatagori sebagai berikut:
  
a. Atribut produk (product attributes)
1.      Reliabilitas perangkat lunak yang diperlukan (RELY)
2.      Ukuran basis data aplikasi (DATA)
3.      Kompleksitas produk (CPLX)


b. Atribut perangkat keras (computer attributes)
      1.      Waktu eksekusi program ketika dijalankan (TIME)
2.      Memori yang dipakai (STOR)
3.      Kecepatan mesin virtual (VIRT)
4.      Waktu yang diperlukan untuk mengeksekusi perintah (TURN)

c. Atribut sumber daya manusia (personnel attributes)
      1.      Kemampuan analisis (ACAP)
2.      Kemampuan ahli perangkat lunak (PCAP)
3.      Pengalaman membuat aplikasi (AEXP)
4.      Pengalaman penggunaan mesin virtual (VEXP)
5.      Pengalaman dalam menggunakan bahasa pemrograman (LEXP)

d. Atribut proyek (project attributes)
1.      Penggunaan sistem pemrograman modern(MODP)
2.      Penggunaan perangkat lunak (TOOL)
3.      Jadwal pengembangan yang diperlukan (SCED) 

Masing-masing subkatagori diberi bobot seperti dalam tabel 2 dan kemudian dikalikan.


Dari pengembangan ini diperoleh persamaan: 

Dimana :          E : besarnya usaha (orang-bulan)
KLOC : estimasi jumlah baris kode (ribuan)
EAF : faktor hasil penghitungan dari sub-katagori di atas.

Koefisien ai dan eksponen bi diberikan pada tabel berikut.

Tabel 3. Koefisien Model COCOMO Lanjut

3. Model COCOMO II (Complete atau Detailed COCOMO model)
Model COCOMO II, pada awal desainnya terdiri dari 7 bobot pengali yang relevan dan kemudian menjadi 16 yang dapat digunakan pada arsitektur terbarunya. 

COCOMO II Early Design Effort Multipliers

COCOMO II Post Architecture Effort Multipliers

Sama seperti COCOMO Intermediate (COCOMO81), masing-masing sub katagori bisa digunakan untuk aplikasi tertentu pada kondisi very low, low, manual, nominal, high maupun very high. Masing-masing kondisi memiliki nilai bobot tertentu. Nilai yang lebih besar dari 1 menunjukkan usaha pengembangan yang meningkat, sedangkan nilai di bawah 1 menyebabkan usaha yang menurun. Kondisi Laju nominal (1) berarti bobot pengali tidak berpengaruh pada estimasi. Maksud dari bobot yang digunakan dalam COCOMO II, harus dimasukkan dan direfisikan di kemudian hari sebagai detail dari proyek aktual yang ditambahkan dalam database.



Keuntungan dan Kekurangan Menggunakan Software Open Source

Open Source merupakan sebuah istilah yang digunakan dalam sofware komputer yang berarti bebas, artinya memungkinkan pengguna lain untuk membuka source code dari program sehingga dapat mengetahui dengan jelas cara kerja dari software tersebut. Software Open Source merupakan buah dari rapat yang diprakarsai oleh Netscape, penggagas Software Open Source adalah Eric S. Raymond, Crhistine Peterson, Todd Anderson, Larry Augustin, Jon Hall dan Sam Ockman dengan pelopornya Richard Stallman pada tahun 1998. Software open source mulai berkembang pesat setelah lahirnya sistem operasi linux yang dapat diperoleh secara gratis diinternet ditengah merajalelanya sistem operasi keluarga windows yang mengusung lisensi close source.
Pengembangan open source software melibatkan banyak orang dari berbagai penjuru dunia yang berinteraksi melalui internet. Maka bermunculanlah berbagai macam software yang dibuat berbasis open source ini yang dipublikasikan melalui internet. Pola open source ini telah melahirkan developer-developer handal dari berbagai penjuru dunia. Dengan pola open source orang dapat membuat dan mengembangkan apa yang disebut dengan free software. Software ini dapat digunakan tanpa perlu membayar lisensi atau hak cipta karena memang dikembangkan dengan pola open source.
Free software disini juga bukan program kacangan. Anggapan bahwa barang yang gratis jelek kualitasnya tidak berlaku buat free software. Karena sudah terbukti kehandalannya. Dan karena free software berbasis open source maka software tersebut sudah melalui proses perbaikan yang terus menerus. Jadi tidak ada alasan tidak mau menggunakan free software ini dengan alasan kualitasnya yang tidak baik. Keberhasilan dari software open source juga tidak lepas dari peran komunitas yang gemar untuk mempelajari dan mengembangkan software berbasis open source.

Contoh program yang berbasis open source:
1.        Sistem Operasi (OS) Untuk komputer  : Linux (debian, ubuntu, mint, slackware, backtrack, open suse)
2.        Untuk Smartphone : Android, Firefox OS
3.        Aplikasi          : GIMP, inkscape, Digikam, Abhishek’s GLIMPSE, XAMPP, mozilla Firefox, videolan, libreoffice, Filezilla, openoffice, Mplayer, dll

Keuntungan Perangkat Lunak Open Source secara umum
1.        Rendah Biaya, keuntungan utama menggunakan perangkat lunak open source, karena lebih hemat biaya. Sangat berbeda dengan perangkat lunak komersial yang menarik biaya untuk produknya karena mereka juga membutuhkan dana untuk melindungi perangkat lunaknya dari pembajakan.
2.        Tingkat Keamanan yang Tinggi, Banyak Pengembang yang berkala merawat perangkat lunak open source. Oleh karena itu mereka akan menemukan dan memperbaiki bug secara, yang secara tidak langsung juga menghilangkan celah keamanan
3.        Perangkat Lunak Lebih Stabil, Perangkat lunak open source jarang menyebabkan perangkat lunak yang lama mengalami kerusakan atau tidak dapat bekerja. Sebagai contoh, sistem operasi linux yang mendukung hampir seluruh program yang ada. Sangat berbeda dengan aplikasi versi Windows tertentu yang sering tidak dapat berjalan pada versi Windows lainnya
4.        Frekuensi Upgrade, Hampir seluruh perangkat lunak open source dimudahkan dalam proses upgrade dan gratis. Seperti misalnya kita dapat dengan mudah mengupgrade versi Debian.

Kekurangan Perangkat Lunak Open Source Secara Umum
1.        Fiturnya relatif terbatas, Perangkat lunak open source terkadang belum memiliki fitur-fitur seperti yang tersedia pada perangkat lunak berbayar. Sebagai contoh fasilitas pada Inkscape tidak sebanyak fasilitas pada Corel Draw
2.        Rumit Mempelajari pada Mulanya, Perangkat lunak open source, meskipun serupa seperti Windows, memerlukan waktu dan usaha yang lebih untuk mempelajarinya. Seperti contoh kita memerlukan waktu untuk mempelajari penggunaan tampilan antar muka desktop ubuntu
3.        Dukungan yang Terbatas,  Dukungan ketika menggunakan perangkat lunak open source kadang tidak banyak tersedia dibanding perangkat lunak berbayar. Jadi ketika kita mencari support pertama cobalah bergabung dengan komunitas yang ada pada website.

Keuntungan dan Kekurangan dilihat dari Sisi Pengembang dan Pengguna
A. Bagi Pengembang/Developer
Keuntungan
  • Pengembangan tidak perlu membuat dari awal perangkat lunak, karena pengembang dapat menggunakan library opensource yang sudah ada.
  • Pengembang akan memiliki reputasi dan memperoleh pengalaman selama bekerja dengan proyek opensource
  • Dengan mengopensourcekan project perangkat lunak, maka pengembang dapat memperoleh umpan balik berupa saran atau koreksi terhadap kode perangkat lunak
  • Pengembang dapat ikut berkolaborasi dengan bebas karena tidak perlu memikirkan berbagai masalah seperti hak kekayaan intelektual atau hal kepemilikan perangkat lunak 

Kekurangan
  • Pengembang dapat kehilangan kendali atas perangkat lunak yang dibuatnya
  • Pengembang lain boleh membuat percabangan/forking dan berpotensi menjadi produk saingan.
  • Karena kode sumber terbuka, maka kesalahan program dapat dengan mudah ditemukan oleh pihak yang tidak bertanggungjawab


B. Bagi Pengguna
Keuntungan
  • Banyak tersedia perangkat lunak yang gratis
  • Perangkat lunak open source secara umum memiliki komunitas yang dapat memberikan support
  • Project open source biasanya lebih cepat memberikan respon kepada pengguna daripada perangkat lunak propitriary
  • Perangkat lunak open source lebih stabil dan bug nya sedikit dibanding perangkat lunak closed source
  • Jika kita sebagai pengguna sekaligus pengembang, kita dapat mengimplementasikan fitur yang kita butuhkan dan berbagi dengan orang


Kekurangan
  • Ketersediaan perangkat lunak opensource umumnya menjawab kebutuhan pengembang bukan pengguna
  • Banyak perangkat open source yang tidak memfokuskan pada tampilan antarmuka
  • Terkadang perangkat lunak open source tidak terdokumentasi dengan baik, terutama dibagian petunjuk pengguna
  • Dukungan beberapa vendor hardware yang tidak mau membuka driver nya, sehingga driver hardware kadang tidak kompatible pada sistem open source


Sumber:

  1. Http://www.teorikomputer.com/2015/08/pengertian-open-source-beserta.html
  2. Https://ugos.ugm.ac.id/wiki/dokumentasi:pro_dan_kontra_menggunakan_open_source