21 December 2012

Struktur Organisasi Pengembangan Software Developer

ads

Seperti halnya permainan catur, tiap bidak mempunyai perannya masing - masing. Dalam sebuah tim proyek perangkat lunak, setiap orang tidak hanya mempunyai peran, tapi juga posisi dalam struktur organisasi. Pembagian peran dan struktur organisasi ini juga mempunyai aturan atau rules yang tidak boleh dilanggar untuk memperkecil resiko dalam pembuatan perangkat lunak.
Sebuah sumber utama dari ketidak efisienan dari tim proyek perangkat lunak adalah organisasi yang buruk dari staf dan kurangnya kejelasan peran dan tanggung jawab. Biaya tim proyek perangkat lunak yang tidak efektif umumnya besar. Organisasi IT yang buruk juga menyebabkan deadline proyek yang tidak terpenuhi, jatuhnya service dari server secara tidak terencana, garis service IT yang tidak jelas, dan proyek yang tidak menguntungkan, oleh karena itu sebuah struktur organisasi di dalam perusahaan untuk menangani berbagai proyek sangatlah berperan penting pada kemajuan dan perkembangan perusahaan tersebut.
Berikut ini akan membahas mengenai Perencanaan Struktur Pelaksanaan Proyek pada sebuah perusahaan Software Developer. Ada 3 jenis format struktur pelaksana sebuah Proyek Software Developer yaitu format proyek, format fungsional, dan format matriks.

1. Format Proyek
·         Dibentuk sebuah team yang melakukan pekerjaan proyek dari awal sampai akhir
·         Anggota team mendefinisikan produk, merancang produk, mengimplementasikan, melakukan uji, melakukan review, dan mempersiapkan dokumen-dokumen pendukung
·         Sebagian anggota team melakukan instalasi dan pemeliharaan, dan melanjutkan ke proyek baru
·         Team proyek biasanya bekerja selama 1-3 tahun dan ditugaskan untuk proyek berikutnya jika proyek pertama sudah selesai

2. Format Fungsional
·      Dalam format Ini dibentuk beberapa team untuk melaksanakan pekerjaan proyek setiap fase. Semua team tidak dibentuk pada saat yang sama. Anggota team dapat dirotasi.
·      Team analisis dan perancangan bertugas untuk mengembangkan System Definition (SD) dan Project Plan (PP).
·      Team pendefinisian produk menerima produk SD dan PP, melakukan analisa persyaratan perangkat lunak, dan menyiapkan Software Requirement Specification (SRS).
·      Team perancangan merancang produk yang sesuai dengan SRS dan SD.
·      Team implementasi mengimplementasi, debugging, dan melakukan uji per unit system
·      Team uji sistem melakukan uji integrasi
·      Team kualitas melakukan sertifikasi terhadap semua produk kerja
·      Team pemelihara melakukan pemeliharaan produk

3. Format Matriks
Setiap gugus fungsional memiliki team manajemen dan kelompok spsialis yang hanya melaksanakan fungsinya sendiri.

Contoh Permasalahan :
Dalam sebuah CV Perangkat lunak yang bernama CV Soft-Hegar DevelopWare.corp, menerima sebuah proyek Software Developer (pengembangan perangkat lunak) berbasis Java untuk Handphone Android.

Maka Dibuatlah Perencanaan Struktur Organisasi Pelaksanaan Proyeknya

STRUKTUR ORGANISASI dalam PROYEK SOFTWARE DEVELOPER


*Keterangan :

1. Project Sponsor
Project Sponsor adalah seorang manajemen puncak (beserta anggota tim jika perlu), yang diserahkan tugas khusus oleh perusahaan sebagai penanggung jawab proyek sistem informasi. Paling tidak salah seorang anggota direksi harus berada dalam tim ini untuk mencegah hambatan-hambatan berarti dalam pelaksanaan proyek. Secara prinsip, Direktur Utama atau Presiden Direktur-lah yang harus menjadi Project Sponsor.
2. Project Manajer
Seorang project manager mempunyai tanggung jawab dan tugas yang bermacam-macam, tidak hanya terfokus pada hal-hal yg teknis sifatnya. Bagaimana layaknya seorang project manager harus mempunyai kemampuan membuat tim tetap solid, mampu memonitor dan mengontrol budget serta mempunyai kemampuan analisis resiko yang baik.
Tanggung Jawab seorang Project Manager terdiri dari:
1.      Proyek
Proyek harus selesai sesuai dengan budget, sesuai dengan spesifikasi, dan waktu. Ketiga aspek itu harus dipenuhi oleh seorang Project Manager.
2.      Organisasi
Seorang Project Manager juga mempunyai tanggung jawab terhadap organisasi. Proyek yang ditangani harus mempunyai return yang nyata terhadap organisasi. Taat kepada setiap kebijakan yang di keluarkan organisasi, harus mengambil keputusan dengan wewenang yang terbatas dari organisasi, dan juga kadang-kadang seorang Project Manager juga harus mengambil keputusan yang bukan yang terbaik bagi poyek tetapi terbaik buat Organisasi.
3.      Tim Kerja
Seorang Project Manager harus memberikan feedback dari hasil pekerjaan proyek jika diperlukan, memberikan perhargaan terhadap anggota tim proyek yang mempunyai prestasi yang baik, dan tantangan yang paling sulit adalah menyeimbangkan antara kepentingan anggota tim, kepentingan tim, dan kepentingan proyek.

Untuk melaksanakan tanggung jawab yang telah dijabarkan diatas, seorang project manager perlu memiliki skill yang bermacam-macam. Gary Heerken ( 2002) mengkategorikan skill & pengetahuan yang diperlukan seorang Project Manager menjadi 4 (empat) kategori :
1.Project Management process skill
Skill Proses manajemen proyek, bisa di sebut hard skill merupakan pengetahuan dan keahlian yang berhubungan dengan mekanisme dari manajemen proyek.
Seorang Project Manager harus bisa menguasai teknik, tools manajemen proyek dan teknologi yang bisa diaplikasikan di proyek. Contohnya seorang project manager harus bisa membuat work breakdown structure, membuat network diagram, dan bisa mempersiapakan dokumen-dokumen yang diperlukan klien.
2.Interpersonal & behavioral skill
Memimpin proyek berarti mengatur dan menyelesaikan segala sesuatu melalui orang lain. Seorang Project manager harus mempunyai Interpersonal & Behavioral skill yang baik, bisanya disebut soft skill. Behavioral skill meliputi gaya (style), Kelakuan pesonal (personnal conduct), dan pendekatan (approach).
3.Technology management skill
Banyak proyek yang melekat pada yang namanya teknologi. Teknologi menuju kepada proses dari proyek. Sebagai contoh, proses itu mencakup pengembangan software, proses kimia, atau konstruksi komersial. Kemampuan untuk mengkoordinasi proses teknologi ini sangat penting jika ingin menjadi seorang project manager. Beberapa skill manajemen teknologi yang perlu dikuasai oleh seorang Project Manager yaitu :
  1. kemampuan dalam teknologi proyek
  2. Kemampuan dalam mendukung teknologi area
  3. Pengetahuan tentang industri
  4. Kemampuan dalam mempersiapkan spesifikasi teknis secara kompreshensif
  5. kemampuan dalam disain
3. Project Manajemen dan Administrasi
Project Administration adalah tim yang bertanggung jawab terhadap pengaturan dan penyimpanan segala jenis dokumen yang terlibat dalam proyek. Mulai dari proposal dan kontrak proyek, sampai dengan hasil wawancara atau notulen setiap pertemuan formal maupun informal. Disamping dokumen, hal-hal yang berkaitan dengan komunikasi antara anggota proyek dengan perusahaan dan vendors juga harus dikelola oleh tim ini. Agar segalanya berjalan dengan lancar, biasanya Project Administration sudah memiliki standar dokumen dan prosedur yang harus diikuti oleh seluruh anggota proyek agar proses administrasi berjalan dengan efektif dan secara efisien.
4. Internal audit dan Quality Assurance
Quality Assurance terdiri dari tim yang mengawasi agar pelaksanaan proyek dapat selalu terjamin kualitasnya sesuai dengan standar mutu yang ada (standar lokal perusahaan konsultan yang bersangkutan atau standar internasional seperti ISO). Fokus dari tim Quality Assurance lebih pada kualitas dari outputoutput yang dihasilkan oleh proyek ini, seperti laporan, rekomendasi, desain, perangkat lunak, perangkat keras, dan lain sebagainya.
Tim inti proyek software developer dapat dikategorikan menjadi tiga bagian utama: Sistem Software, Software Developer dan Tester. Tim Sistem Software merupakan kumpulan para ahli manajemen yang sangat menguasai ilmu desain  aplikasi software, Tim Software Developer merupakan para ahli programmer pembuat sebuah aplikasi software, sedangkan tim Tester merupakan para ahli untuk menguji layak tidaknya sebuah aplikasi software dikembangkan.

Berikut Penjelasannya :

1. Divisi Sistem Software
a. System Analyst
Beberapa hal penting yang dilakukan oleh seorang sistem analyst adalah sebagai berikut :
  1. Bekerja dalam meneliti sebuah masalah
  2. Merencanakan solusi terhadap masalah yang ada
  3. Merekomendasikan software dan sistem yang dibutuhkan
  4. Mengkoordinir pengembangan untuk memenuhi kebutuhan bisnis atau kebutuhan lainnya.
System analyst adalah penghubung antara vendor dan profesional teknologi informasi. Mereka juga bertanggung jawab untuk mengembangkan analisi biaya, pertimbangan desain, dan implementasi timeline yang telah ditetapkan.
Seorang system analyst memiliki beberapa kriteria yang harus dijalankan, yaitu :
  1. Merencanakan aliran sistem dari bawah ke atas.
  2. Berinteraksi dengan pelanggan untuk belajar dan mendokumentasikan kebutuhan yang nantinya akan digunakan untuk membuat Bussiness Requirement Document.
  3. Menuliskan kebutuhan teknis dari fase kritis.
  4. Berinteraksi dengan designer untuk memahami keterbatasan perangkat lunak.
  5. Membantu programmer selama pengembangan sistem, seperti menyediakan use case, flowchart, atau bahkan design database.
  6. Melakukan pengujian sistem.
  7. Mendeploy sistem yang teah selesai dibangun.
  8. Mendokumentasikan kebutuhan atau berkontribusi dalam pembuatan user manual.
  9. Kapanpun proses pengembangan dilakukan, system analyst bertanggung jawab untuk merancang komponen dan memberikan informasi tersebut kepada developer.
2. Divisi Software Developer
a. Programmer
Programmer adalah seseorang yang bertugas untuk mengimplementasikan apa yang telah dirancang oleh designer. Seorang programmer akan membuat code yang menghasilkan aplikasi dengan spesifikasi code yang rapi, bersih, rapi, mudah dipahami, dan bebas dari error.
Tetapi seorang programmer tidak bertugas untuk memastikan produk yang mereka buat dapat digunakan dan diimplementasikan dengan denagn modul lainnya. Programmer adalah spesialis di bidang pembuatan, bukan hasil akhir ataupun perencanaan.
Seorang programmer memiliki kemampuan matematis dan kemampuan menulis bahasa pemrograman. Memiliki kemampuan komunikasi dengan anggota tim merupakan nilai lebih yang dimiliki oleh seorang programmer. Dia juga mengontrol kerja tim dan juga life cycle dari software process.
Berikut ini adalah beberapa kode etik yang disadur berdasarkan kode etik yang kini digunakan oleh perkumpulan programmer internasional yang berlaku saat ini :
  1. Seorang programmer tidak boleh membuat atau mendistribusikan Malware.
  2. Seorang programmer tidak boleh menulis kode yang sulit diikuti dengan sengaja.
  3. Seorang programmer tidak boleh menulis dokumentasi yang dengan sengaja untuk membingungkan atau tidak akurat.
  4. Seorang programmer tidak boleh menggunakan ulang kode dengan hak cipta kecuali telah membeli atau telah meminta izin.
  5. Tidak boleh mencari keuntungan tambahan dari proyek yang didanai oleh pihak kedua tanpa izin.
  6. Etika profesi yang berlaku bagi programmer di indonesia. Tidak boleh mencuri software khususnya development tools.
  7. Tidak boleh menerima dana tambahan dari berbagai pihak eksternal dalam suatu proyek secara bersamaan kecuali mendapatkan izin.
  8. Tidak boleh menulis kode yang dengan sengaja menjatuhkan kode programmer lain untuk mengambil keuntungan dalam menaikkan status.
  9. Tidak boleh membeberkan data-data penting karyawan dalam perusahaan.
  10. Tidak boleh memberitahu masalah keuangan pada pekerja dalam pengembangan suatu proyek.
  11. Tidak pernah mengambil keuntungan dari pekerjaan orang lain.
  12. Tidak boleh mempermalukan profesinya.
  13. Tidak boleh secara asal-asalan menyangkal adanya bug dalam aplikasi.
  14. Tidak boleh mengenalkan bug yang ada di dalam software yang nantinya programmer akan mendapatkan keuntungan dalam membetulkan bug.
  15. Terus mengikuti perkembangan ilmu komputer.

b. Sofware Designer
Software designer adalah seseorang yang bekerja untuk menciptakan sebuah perangkat lunak pada level yang cukup tinggi yang sesuai dengan kebutuhan pelanggan atau manajemen. Seorang designer tidak melakukan proses coding sendiri, namun bertugas untuk memastikan bahwa semua kebutuhan software telah ada dan diperhitungkan dengan baik sebelum proses coding yang sebenarnya dimulai. Mereka mengambil tujuan akhir dari pelanggan dan merencanakan berbagai tahap pengembangan dari konsep awal sampai dengan sistem selesai dibuat. Mereka menggunakan IT dalam setiap aspek pekerjaan mereka. Pemrograman dan perencanaan, keduanya dilakukan pada komputer, dan sinkronisasi data yang diperlukan untuk rencana dan komunikasi yang efektif membutuhkan penggunaan jaringan media yang modern.
Software design tidak hanya terlihat pada perusahaan yang memproduksi program dan perangkat lunak, tetapi juga pada perusahaan yang membutuhkan solusi pada sebuah perangkat lunak namun tidak ada perangkat lunak yang mampu mengatasinya.
Desainer software memegang peranan penting dalam segala hal yang berkaitan dengan software, programming, matematika, logika, perencanaan, dan komunikasi. Mereka yang menemukan diri mereka tertarik untuk bekerja dalam pembuatan program atau game biasanya akan tertarik dalam mendesain perangkat lunak.
Biasanya software designer bekerja dengan erat dengan Quality Assurance Specialist. Project Manager tim desain pengembangan perangkat lunak, dan segala yang berhubungan dengan mendesain perangkat lunak.
c. Implementer
Salah satu kendala yang umum dijumpai oleh para pengusaha yang ingin melakukan investasi dalam pengadaan sistem di perusahaan mereka adalah tidak adanya bimbingan yang memadai dari vendor pembuat sistem. Oleh sebab itu, jasa tim implementor yang dapat diperbantukan di perusahaan apabila diperlukan.Tugas dari anggota tim implementor ini adalah membantu mempercepat proses implementasi sistem pada usaha, sekalipun usaha tersebut telah cukup lama beroperasi.
Tugas Implementator :
·         Penataan sistem keuangan dengan menggunakan fasilitas yang ada pada software developer secara lebih optimal.
·         Penanganan stok awal barang persediaan.
·         Administrasi budget

3. Divisi Tester
a. Software Tester
Software Tester merupakan salah satu posisi yang menjadi ‘musuh’ para developer. Tugas utama dari seorang software tester adalah melakukan pengecekan atau testing terhadap error atau bug di dalam sebuah aplikasi atau program.
Dengan kata lain, keberhasilan seorang software tester adalah kegagalan bagi developer, demikian juga sebaliknya. Namun, pada dasarnya keberhasilan software tester ataupun keberhasilan developer memiliki tujuan yang sama, yaitu untuk membuat sebuah aplikasi atau softwarebebas dari bug (meskipun sebenarnya tidak ada aplikasi yang bisa benar-benar bebas dari bug).
Banyak orang yang berpikir bahwa tugas software tester adalah tugas yang sangat mudah, namun pada kenyataannya tugas software tester adalah tugas yang sulit dan memiliki tanggungjawab yang besar terhadap keberhasilan sebuah produk IT. Selain harus memiliki kesabaran dan ketelitian, seorang software tester juga dituntut untuk proaktif dan memiliki kreatifitas imajinasi yang tinggi.
Berkutat dengan dokumen-dokumen adalah hal yang biasa dan lumrah, karena tanpa dokumen, software tester tidak dapat membuattest scenario yang baik. Dokumen apa saja yang dibutuhkan oleh software tester :

1. SRS (System Requirement Specification)
Merupakan dokumen yang menyediakan panduan mengenai spesifikasi requirement sistem yang diinginkan oleh client/user secara lengkap terhadap suatu bagian/keseluruhan aplikasi.

2. SAD (Software Architecture Document)
Merupakan dokumen yang menggambarkan desain arsitektur (flow process) secara umum dari modul yang ada dalam sebuah sistem. SAD memuat spesifikasi yang lebih rinci dari dokumen SRS.
Dari semua dokumen inilah sofware tester kemudian akan mengetahui seperti apa sistem yang akan di testing. Setelah mengetahui proses bisnis dari sistemnya, maka software tester harus membuat test case yang terdiri dari langkah-langkah pengetesan terhadap sistem yang dibagi-bagi kedalam tiap modul/unit sistem.

http://hegarwinda26.blogspot.com/

Struktur Organisasi Pengembangan Software Developer Rating: 4.5 Diposkan Oleh: kreasi

 

Top