Langsung ke konten utama

Pengenalan MPPL

Software process adalah sekumpulan kegiatan-kegiatan yang saling berkaitan untuk membangun sebuah sistem yang terdiri dari merancang sistem, mengimplementasi sistem, melakukan testing dan melakukan pengembangan sistem. Ada juga konsep umum yang bisanya digunakan dalam membangun sebuah sistem yang disebut Software Layer. Software layer terbagi menjadi empat lapisan, yaitu :
1.        A quality focus
Pada saat membuat sistem, focus pertama kali yang dibuat adalah kualitas sistem yang akan kita buat itu seperti apa, sasaran penggunanya siapa saja, dan lain-lain.
2.       Process model
Setelah A Quality Focus terpenuhi, maka kita harus megetahui proses-proses apa saja yang terjadi agar A quality focus yang sudah direncanakan terpenuhi. Proses-proses yang lakukan ini harus tepat dan terurut agar tidak terjadi kesalahan ketika sistem sedang bekerja. 
3.       Methods
Setelah Proses Model yang dibuat tersebut sudah tepat, maka kita memilih metode-metode apa yang akan digunakan agar proses model yang dibuat dapat kita implementasikan ke dalam sistem
4.       Tools
Tools adala alat bantu yang digunakan dalam membuat sistem.



       Dalam membangun sebuah sistem, kita dituntut membuat rancangan sistem yang ingin dibuat terlebih dahulu agar dapat memberikan gambaran mengenai sistem yang akan dibuat. Dalam merancang sebuah sistem, kita harus mengetahui dan mengukur kebutuhan si pengguna agar sistem yang dibuat sesuai dengan keinginan pengguna. Oleh karena itu, kita haruslah memiliki skill berkomunikasi yang baik agar informasi yang diinginkan dapat kita peroleh dan dapat membantu kita dalam membangun suatu sistem. Selain sistem yang kita buat ini sesuai dengan kebutuhan pengguna, kita juga harus memenuhi karakteristik sistem/software agar sistem tersebut dapat digunakan secara terus menerus oleh si pengguna dan tidak mengeluarkan biaya lagi untuk membuat sistem yang baru yang sama kegunaannya.
Software sebagai produk, merupakan manfaat software dijadikan sebuah produk yang dapat dijual kepada masyarakat atau perusahaan yang membutuhkan. Misalnya: sistem kasir, sistem POS (Point of Sale), Sistem keuangan, dan lain-lain. Sistem-sistem tersebut bersifat paten yang dibuat oleh perusahaan tertentu yang kemudian dijadikan produk dari perusahaan tersebut yang dapat dijual kepada perusahaan lain yang membutuhkan. Biasanya produk software ini diberi nama yang dijadikan trend atau ciri khas dari perusahaan tersebut. Misalkan dari perusahaan Bitncode, semua produk aplikasi yang dibuat diberi nama Bit, yaitu: BitFinance, BitKasir, BitAbsensiOnline, dan lain-lain.
Kegunaan software sebagai produk ini telah diterapkan di Jepang, dan negara-negara barat.

Mari kita perhatikan 5 hal yang mempengaruhi harga jasa kamu di dunia software engineering sebagai berikut :
1.        Scope pekerjaan.
Scope adalah segala hal yang ada di dalam produk software/produk dari project TI dan segala proses di dalamnya.Mendefinisikan apa yang diminta, apa yang mesti dikerjakan, dibagi step-stepnya (rencana->rancangan) sampe menjadi rangkaian berurut apa saja yang dikerjakan. Dengan demikian, dapat diestimasi jadwal dan waktu pengerjaannya.
Contoh, ketika saya dari tidur pengen berangkat ke sekolah :
1.        Saya bangun tidur (15 menit), kemudian
2.       saya mandi (15 menit), kemudian
3.       saya sarapan (30 menit), kemudian
4.       saya berangkat ke sekolah (20 menit).
2.       Proses pengerjaan,
Sulit kah? mudah kah? simple kah? kompleks kah?
Terus bagaimana proses yang mesti saya ikuti? banyak kah? tentu mesti memperhatikan, jika ternyata proses untuk mengerjakan codingannya ataupun desainnya, bisa memakan waktu berjam-jam.
Mulai dari :
1.        memahami klien kemudian menganalisis kehendak si klien;
2.       brainstorming, berguna untuk mendefinisikan semua kebutuhan biar bisa dikerjakan menjadi karya kita;
3.       inisialisasi, mulai dari kamu corat-coret desain/coba-coba code init/awal sampe jadi prototyping;
4.       prototyping, membuat karyamu sampe dengan prototype;
5.       development/design, mulai deh ngembangin sampe memroses semua kebutuhan menjadi produk
6.       revisi, mesti ketemu bagian ini, kadang ada saja bagian yang tidak sesuai kehendak klien, nah ini mesti diperhitungkan;
7.       final version, ketika sudah direvisi, dipoles, dibungkus, terus diserahin deh ke klien.
panjang kan prosesnya?  Makanya perlu diperhatiin betul, jangan sampe harga yang kamu pasang gak sesuai.
Nah, ada beberapa hal itu bisa dikerjakan bebarengan, serentak (jika kamu ngerjainnya berdua atau lebih sama teman), tentu ada beberapa proses bisa dihemat waktunya. Coba lihat ilustrasi berikut :

Critical Chain Project Schedule
Kalo dilihat dari gambar di atas, tentu kita bisa memperkirakan, task apa saja yang bisa dikerjakan dalam 1 waktu bersamaan, dan mana yang tidak bisa. Jika tidak bisa, terus taruh di mana prosesnya..apa dikerjakan duluan, apa dikerjakan belakangan? tentu kalau ingin mengerjakan sesuatu, kerjakan dari yang paling mendasar.
3.       Standar harga per jam kerja (hourly rate).
Kalo bagian ini, gak bisa sembarangan ditentuin. Kamu mesti sadari gaji/rate bayaran kamu berapa yang pernah kamu terima? terus itu dikerjakan berapa lama?
Misal :Kamu pernah kerja 2 minggu (10 hari kerja, minus sabtu-minggu) dibayar Rp 3.000.000
Sehari kerja dari jam 09:00 – 12:00, dilanjut ishoma, terus jam 13:00 – 16:00, berarti kalo ditotal : 6 jam kerja.Dan jika kita konversi menjadi perjam, rumusnya: Harga / total jam kerja / total hari
Rp. 3.000.000 / 6 / 10 = Rp 50.000. Berarti kamu dibayar Rp50.000,- per jam. Rate ini selalu naik seiring pengalaman, tentunya bila dinamika perubahannya naik, dalam artian, kamu sudah mengalami pengalaman yang banyak, yang dulunya sulit, jadi gampang, skill bertambah, dan beberapa project kamu jadi terbiasa garap (pengalaman). Semakin tinggi pengalaman, rate tentu semakin tinggi juga.
Apalagi dibarengi skill yang makin tinggi pula (semakin banyak pengalaman, mestinya semakin beragam pula soft skill yang dikuasai). Bila kamu sudah 10 kali project dalam 2 tahun dengan hourly rate Rp 50.000,-… pas tahun ke-3, ya naikin lagi hourly rate jadi Rp 75.000,- atau Rp 100.000,-.Apalagi dalam 2 tahun itu kamu sudah belajar banyak, ditambah sekolah lagi, bisa berkali-kali lipat.Dan lagi-lagi, perhatiin juga standar gaji di dunia saat ini. (coba googling : salary guide [tahun], contoh : salary guide 2014, saya gak akan jelasin ini, cari di google dan baca sendiri sesuai posisi kamu di pekerjaan, bila orang kerja dibayar per bulan (20 hari kerja) sekian rupiah, tentu bisa dihitung per jamnya). Tentunya jika kamu di tahun kedua pernah mendapatkan proyek membuat sistem informasi perkantoran dengan harga Rp 60.000.000,-, kemudian di tahun ke empat jangan pasang 60jt lagi, tapi dinaikin. Berapa besar kenaikannya? kalau masih kesulitan menentukan, kembali ke pembahasan kita di atas yang baru kita bahas dan perhatikan di salary guideuntuk profesi kita di tahun ke-4 besar gaji/rate-nya berapa.
Berikut ini contoh hourly rate di beberapa negara

Mahal ya? iya, di sana dihargai lebih. Kalo rate di atas diterapkan di indonesia, tentu gak pas  makanya tadi saya sampaikan cek salary guide untuk Indonesia. Contohnya di sini: Salary Guide 2016. Cek profesimu sebagai developer apa. terus cek berapa tahun pengalaman kerjanya. Jika sudah dapat, ya tinggal konversi ke per jam.
4.       Investasi
Seluruh hal yang berhubungan dengan proses yang dikerjakan di atas, dan biaya yang keluar karena hal tersebut. Seperti yang saya jelaskan di atas.
1.        Saya bangun tidur (15 menit) -> gratis
2.       saya mandi (15 menit) -> sabun : Rp 2000, sampoo Rp 1000, pasta gigi+sikat giginya : Rp 8000
3.       saya sarapan (30 menit) -> sarapan ketoprak : Rp 6000, jalan kaki ke TKP
4.       saya berangkat ke sekolah (20 menit) -> berangkat naik motor, bensin Rp 6500
Terus, kalo ditotalin : makan waktu 1 jam 20 menit (1,33 jam), dan biaya : Rp 82.000 (2000+1000+….+6500)
Rumusnya : hourly rate x total proses kerja
Jadi, ketika hourly rate kamu Rp 50000, berarti :
Rp 50000 x 1,33 jam + Rp 82.000 = Rp 148666,66 (mari kita bulatkan ke atas :p Rp 149000)
Ya nilai dari project ini : Rp 149.000,-
Contoh di atas mungkin sedikit membingungkan, pada intinya saja ya. Jadi kalau kamu dapat proyek dalam waktu 1 bulan, ya dikonversi saja dalam satuan hari. 1 bulan = 20 hari kerja, 1 hari = 8 jam kerja. 20*8=160 jam.
Misal hourly rate kamu adalah Rp 250.000,- dengan pengalaman sudah 3 tahun. Ya untuk proyek dengan waktu 1 bulan…tinggal dikalikan saja: Rp 250.000*160 jam= Rp 40.000.000
Nilai 40 juta ini bukanlah nilai mutlak, jadi ada nilai resiko juga di dalam proyek, nah ini kita bahas di poin nomor 5 di bawah.
5.       Resiko
Segala hal tentu ada resiko, nah jangan sampe resiko ini terjadi dan menimpa kamu. Resiko mungkin bisa dihindari, tapi jika terjadi, pikirkan dampaknya dan apa antisipasinya.
Resiko besar yang biasanya terjadi itu : project diberhentikan di tengah jalan (bahaya dong, ntar ketabrak), requirements berubah (nah ini dia yang biasanya bikin jengkel, udah bikin capek-capek, gak dipake, mesti diganti)
Resiko kecil : perubahan minor aplikasi/software, jadi menyita waktu juga walaupun perubahannya dikit-dikit.
Resiko juga mesti diklasifikasikan berdasarkan :
1.        kesempatan terjadi
2.       potensi yang diakibatkan (parah apa nggak?)
3.       kesulitan mendeteksi resiko supaya bisa dihindari
Contoh : bugs di aplikasi
Kesempatan terjadi : menengah lah, gak sedikit juga, gak banyak juga kesempatannya.
Potensi yang diakibatkan : tinggi, kadang 1 bugs, bisa bikin aplikasi gagal jalan sebagaimana mestinya
Kesulitan mendeteksi : tinggi, kadang bugs itu sulit banget dicari >.<
contoh lain : server kebanjiran
Kesempatan terjadi : kecil, ini sih kesempatan langka banget sampe-sampe server kebanjiran, kecuali kamu taruh servernya di pinggir kali ciliwung.
Potensi yang diakibatkan : tinggi, server tenggelam, nangislah kliennya. Kamu juga mesti ikutan nangis!
Kesulitan mendeteksi : kecil, lah wong hujan deres, knapa gak disingkirin tuh server ke tempat yang tinggi.
Nah, resiko-resiko seperti ini yang mesti diperhitungkan. Terutama ya bayaran kamu. Misal kalo kejadian macem-macem, bayaran kamu telat, bagaimana?. Atau kamunya yang telat ngumpul kerjaan bagaimana?
Dari sisi developer, pas di kontrak kerja, jangan lupa cantumkan aturan-aturan untuk klien (biasanya klien bikin aturan-aturan juga di poin proposal proyek (misal: apabila kamu telat mengumpulkan progress, atau progress tidak sesuai apa yang diharapkan klien, biasanya klien punya hak mengurangi harga proyek), nah, di sini kamu juga perlu membuat aturan-aturan atau klausa yang memperjelas batasan kamu selaku developer, misal: masalah konfigurasi server ataupun backend bukan tanggungjawab kamu yang seorang developer mobile app, masalah akun PlayStore tanggungjawab klien dan harus menggunakan data dari klien, atau apabila ada permintaan tambahan di luar scope pekerjaan yang telah disepakati, maka klien harus di-charge bayaran baru. Itu harus ada klause kerjasama tambahan yang menyatakan poin-poin apa saja tambahannya dan berapa besar biayanya. Nah yang model ini, developer sering luput, lalai, klien menghendaki revisi ini itu, tambahan ini-itu, tapi nilai proyeksi investasinya tetap. Jatuhnya kita yang rugi. 
Berikut ini ada gambar ilustrasi bagaimana harga sebuah proyek apabila dideliver ke klien lebih awal, tepat waktu atau terlambat. Dan berapa harga yang diharapkan. Dari sini bisa kamu kenali kalau untuk deliver sebuah progress pekerjaan ada resiko pinalty dari klien. Dan itu seharusnya kamu sudah antisipasi.

Decision Trees

  1. 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.
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.

  1. Sistem Analis
Analis sistem adalah  seseorang yang bertanggung jawab atas penelitian, perencanaan, pengkoordinasian, dan merekomendasikan pemilihan perangkat lunak dan sistem yang paling sesuai dengan kebutuhan organisasi bisnis atau perusahaan. Analis sistem memegang peranan yang sangat penting dalam proses pengembangan sistem. Seorang analis sistem harus memiliki setidaknya empat keahlian: analisis, teknis, manajerial, dan interpersonal (berkomunikasi dengan orang lain). Kemampuan analisis memungkinkan seorang analis sistem untuk memahami perilaku organisasi beserta fungsi-fungsinya, pemahaman tersebut akan membantu dalam mengidentifikasi kemungkinan terbaik serta menganalisis penyelesaian permasalahan. Keahlian teknis akan membantu seorang analis sistem untuk memahami potensi dan keterbatasan dari teknologi informasi. Seorang analis sistem harus mampu untuk bekerja dengan berbagai jenis bahasa pemrograman, sistem operasi, serta perangkat keras yang digunakan. Keahlian manajerial akan membantu seorang analis sistem mengelola proyek, sumber daya, risiko, dan perubahan. Keahlian interpersonal akan membantu analis sistem dalam berinteraksi dengan pengguna akhir sebagaimana halnya dengan analis, programer, dan profesi sistem lainnya.

  1. Programmer
Programmer adalah  profesi yang paling sering terdengar, karena profesi ini sudah ada sejak diciptakannya komputer itu sendiri. Profesional dalam bidang software development dan consulting umumnya pernah meniti karir sebagai seorang programmer. Keahlian dalam algoritma dan penguasaan terhadap salah satu atau beberapa bahasa memprograman mutlak diperlukan oleh seorang programmer. Programer adalah profesi inti dan tulang punggung dalam software development karena tidak akan terwujud sebuah software aplikasi tanpa adanya programmer, sedangkan tanpa didukung profesi lainnya, seorang programmer dapat membuat sebuah aplikasi yang berguna walaupun dengan cakupan terbatas
Tugas programmer dalam sebuah proyek dasarnya adalah sebagai berikut :
– Membangun/mengembangkan software terutama pada tahap construction dengan melakukan coding dengan bahasa pemprograman yang ditentukan
– Mengimplementasikan requiremant dan desain proses bisnis ke komputer dengan menggunakan algoritma /logika dan bahasa pemprograman
– Melakukan testing terhadap software bila diperlukan
dan seorang programmer butuh beberapa keahlian tertentu sepert :
– Menguasai Algoritma dan logika pemprograman (ini penting sekali)
– Memahami metode, best practice dan tool/pemodelan pemprograman seperti OOP, design pattern, UML
– Menguasai salah satu atau beberapa bahasa pemprograman populer seperti C++, VB, PHP, C#, Java, Ruby dll (untuk web developer perlu juga menguasai HTML, DHTML, CSS, JavaScript dan AJAX)
– Memahami RDBMS dan SQL (Structured Query Language)
– Menguasai bahasa Inggris (bahasa pemrograman memakai bahasa inggris).

  1. Database Administrator (DBA)
Database administrator (DBA) adalah orang yang bertanggung jawab untuk mendesain, implementasi, pemeliharaan dan perbaikan database. DBA sering disebut juga database koordinator database programmer, dan terkait erat dengan database analyst, database modeler, programmer analyst, dan systems manager. Peran DBA mencakup pengembangan dan desain strategi database, pemantauan dan meningkatkan kinerja dan kapasitas database, dan perencanaan kebutuhan pengembangan di masa depan. DBA mungkin juga merencanakan, mengkoordinasi dan melaksanakan langkah-langkah keamanan untuk menjaga database. Suatu perusahaan mungkin mengharuskan seorang DBA memiliki sertifikasi atau gelar untuk  sistem database (misalnya, Microsoft Certified Database Administrator).

Tugas-tugas seorang administrator database bervariasi, tergantung pada job description-nya, perusahaan, peraturan Teknologi Informasi (TI), fitur-fitur teknis, dan juga kemampuan dari DBMS yang diberikan. Semua itu termasuk pemulihan setelah bencana (backups and testing of backups), analisis kinerja dan tuning, pemeliharaan data dictionary, dan desain database.
Peran DBA meliputi:
  1. Pemasangan perangkat lunak baru – Ini adalah tugas DBA untuk menginstal versi baru dari perangkat lunak DBMS, aplikasi perangkat lunak, dan perangkat lunak lain yang berhubungan dengan administrasi DBMS. Penting bahwa DBA atau anggota staf IS menguji software baru sebelum pindah ke sebuah lingkungan produksi.
  2. Konfigurasi hardware dan software dengan sistem administrator – Dalam banyak kasus, perangkat lunak sistem hanya dapat diakses oleh administrator sistem. Dalam kasus ini, DBA bekerja sama dengan administrator sistem untuk melakukan instalasi perangkat lunak, dan untuk mengkonfigurasi hardware dan software agar berfungsi secara optimal dengan DBMS.
  3. Pengamanan administrasi – Salah satu tugas utama DBA adalah untuk memantau dan mengelola keamanan DBMS. Hal ini melibatkan penambahan dan menghapus pengguna, pemberian quota, audit, dan memeriksa masalah keamanan.
  4. Analisis data – DBA menganalisis data yang tersimpan dalam database dan membuat rekomendasi yang berkaitan dengan kinerja dan efisiensi penyimpanan data. Ini termasuk penggunaan indeks efektif, memungkinkan “Paralel Query” eksekusi, atau fitur khusus DBMS lainnya.
  5. Database design (awal) – DBA dapat terlibat di awal tahap desain database, hal ini bertujuan menghilangkan berbagai masalah yang mungkin terjadi. DBA tahu bahwa DBMS dan sistem, dapat menunjukkan potensi masalah, dan dapat membantu pengembangan kinerja tim dengan pertimbangan khusus.
  6. Data pemodelan dan optimasi – pemodelan data befungsi untuk mengoptimalkan sistem tata letak untuk mengambil yang paling keuntungan dari I / O subsystem.
  7. Bertanggung jawab atas administrasi perusahaan yang berhubungan dengan database dan analisis, desain, dan penciptaan database baru.

5.     Designer
designer adalah  adalah orang yang memiliki keahlian menciptakan konten presentasi (biasanya hypertext atau hypermedia) yang dikirimkan ke pengguna-akhir melalui World Wide Web, menggunakan Web browser atau perangkat lunak Web-enabled lain seperti televisi internet, Microblogging, RSS, dan sebagainya.
Dengan berkembangnya spesialisasi dalam desain komunikasi dan bidang teknologi informasi, ada kecenderungan kuat untuk menarik garis yang jelas antara web design khusus untuk halaman web dan pengembangan web secara keseluruhan dari semua layanan berbasis web.

6. Fungsional
Fungsional adalah  kedudukan yang menunjukkan tugas, tanggung jawab, wewenang dan fungsional pada hakekatnya adalah jabatan teknis yang tidak tercantum dalam struktur organisasi, namun sangat diperlukan dalam tugas-tugas pokok dalam suatu organisasi.
Dalam tugasnya seorang atau kelompok fungsional adalah yang bertugas untuk membantu dan melancarkan tugas dalam sebuah proyek, mereka dibagi dalam beberapa bidang yang mempunyai tugas dan hasil masing masing.
Fungsional mempunyai tugas:
– Menyusun rencana dan program kegiatan sesuai bidangnya;
– Mengumpulkan, mengolah dan menganalisa data sesuai bidangnya;
– Melaksanakan kegiatan-kegiatan sesuai bidangnya dalam rangka memperoleh angka kredit sesuai peraturan dan pedoman yang berlaku;
– Memberikan saran-saran atau pertimbangan kepada atasan mengenai langkah-langkah yang diambil sesuai bidangnya;
– Menyusun laporan pelaksanaan tugas kepada atasan.
  1. Engineer
Network Engineer adalah seseorang yang bekerja di bidang engineering dan mampu menggunakan ilmunya untuk menghasilkan suatu benda yang dapat dimanfaatkan dalam kehidupan sehari-hari. Seorang engineer/insinyur juga membantu memecahkan permasalahan dibidang teknologi yang ada.
Insinyur yang bekerja di pabrik, memiliki peran mengawasi proses produksi, menentukan penyebab kerusakan alat, dan menguji produk untuk menjaga kualitas. Seorang insinyur juga dapat bekerja di kantor, pertambangan, laboratorium, dan hampir di semua tempat yang memerlukan teknologi.
Para engineer/insinyur melakukan berbagai percobaan dan mengujinya untuk menemukan sebuah penemuan baru yang dapat dimanfaatkan untuk kepentingan orang banyak. Dalam pekerjaannya, insinyur banyak menggunakan komputer. Komputer digunakan untuk merancang dan mendesain sebuah alat, menguji kerja mesin, atau membuat sistem yang rumit


Komentar

Postingan populer dari blog ini

Mencari nilai Modus Dengan Java

Pada kesempatan kali ini kita akan membahas permasalahan mencari nilai modus jadi permasalahannya adalah A memberikan Anda N buah bilangan bulat. Tentukanlah modus terbesar dari bilangan-bilangan tersebut. Berikut adalah programnya dan ini hasilnya

(Pendalaman String) Mencari Posisi Karater Atau SubString Dari String

Pada bahasan kali ini ada dua cara  untuk mencari posisi karakter dari string dan dua method untuk mendapatkan posisi subString dari string. indexOf (char karakter)   Memerlukan argumen berupa karakter dan akan mengembalikan nilai posisi indeks dari karakter yang dicari. Posisi yang dikembalikan adalah posisi pertama dari karakter yang ditemukan. Bila karakter tidak ditemukan, maka akan mengembalikan nilai -1. indexOf (char karakter, int indeks)   Sama dengan sebelumnya, tetapi memerlukan argumen tambahan, yaitu indeks posisi awal pencarian dalam integer.  Method untuk mencari posisi subString pada String : indexOf(String Str)   Penggunaan dan fungsi sama dengan method untuk char.   indexOf(String str, ont indeks)  Penggunaan dan fungsi sama dengan method untuk char .

Rotasi Matriks pada Java

Pada kesempatan kali ini kita akan memecahkan permasalahan rotasi matriks. permasalahanya adalah A  memberikan Anda sebuah matriks berukuran N × M. Cetak kembali matriks tersebut setelah diputar 90 derajat searah jarum jam. Dan berikut adalah hasilnya