Minggu, 14 September 2014

Definisi Dan Deskripsi Profesi dalam Bidang Web





1. Web Architect



     Seperti halnya Arsitek bangunan, web Architect memegang peran penting pada perancangan dan struktur bagian-bagian website yang akan dibuat. Web architect menentukan seperti apa skema/hirarki link-link yang akan disuguhkan, layanan-layanan apa yang diberikan ke public. Orang ini hendaknya memiliki pengalaman bernavigasi di internet, terutama surfing kesitus-situs lain guna melakukan perbandingan dan evaluasi sehingga menemukan pola website terbaik yang sesuai dengan misi organisasi.

     Seorang Web Architect boleh jadi tenaga sewaan dari konsultan IT. Ketika sebuah organisasi menyampaikan bahwa mereka ingin membuat website, web architect akan dapat memberikan nasehat website seperti apa yang mereka butuhkan . setiap kategori situs memiliki ciri khas sendiri. Situs-situs e-commerce berbeda jauh dengan situs-situs kampus. Demikian pula situs-situs pemerintah tidak akan sama dengan situs-situs perusahaan entertainment.

       Organisasi anda mungkin hanya akan membutuhkan Web Architect pada fase-fase awal pembuatan website namaun begitu, bayaran mereka cukup tinggi. Ini dapat dimaklumi mengingat peran seorang “Perancang” sangat menentukan pengembangan ke depan. Ingat bahwa perombakan website (yang dikarenakan salah strategi) hanya akan membuat buang waktu dan biaya).


2. Web Designer


     Web Designer adalah mereka yang memiliki keahlian dalam membuat design atraktif dan menarik untuk situs serta design untuk kepentingan promosi situs secara visual.



      Tugas:
  •  Mendesain tampilan situs
  • Memastikan tampilan gambar berfungsi ketika ditambahkan bahasa pemrograman

      Kualifikasi:
  • Menguasai HTML, CSS dan XHTML
  • Menguasai Adobe Photoshop & Illustrator
  • Memiliki jiwa seni dan harus kreatif
  • Itulah aneka profesi di bidang IT yang sangat potensial untuk dijadikan karir ke depannya dan profesi di bidang IT ini mungkin saja akan semakin bertambah seiring berkembangnya dunia teknologi informasi sehingga kesempatan mencari lowongan kerja it atau sesuai bidang ini semakin terbuka lebar.



3. Web Programmer


       Bila kepala anda memilliki desain nalar jitu , jangan kepalang tanggung, emalmarlah sebagai Web Programmer. Posisi ini cocok bagi mereka yang daya tangkap logikanya encer. Seorang Web Programmer, mengotak atik kode-kode scrip adalah makananya setiap hari.

        Web programmer berperan membuat dan men-setup layanan-layanan interaktif dalam lingkungan web, seperti merancang form aplikasi, guestbook, search engine, news publisher, discussion forum, dan masih banyak lagi. Belum lagi bila tiba-tiba organisasi merancang sebuah program online baru untuk costumers, misalnya layanan e-commerce. Web programmer yang akan paling sibuk dalam hal ini.

          Untuk menjadi Web Programer seseorang focuskan hari-harinya untuk mempelajari PHP, CGI/Perl, Pyton, JavaScript, Java, VBScript, ASP, dan C/C++.


4. Web Developer

  •            Web Developer adalah mereka yang memiliki keahlian untuk memberikan konsultasi pembangunan sebuah situs dengan konsep yang telah ditentukan.


      Tugas:

  • Menganalisa kebutuhan sistem
  • Merancang web atau situs (desain dan program)
  • Mengaktifkan domain dan hosting
  • Pemeliharaan situs dan promosi

        Kualifikasi:

  • Menguasai pemrograman web
  • Menguasai pengelolaan database
  • Mengerti domain dan hosting
  • Menguasai sistem jaringan


         Deskripsi kerja

  • Mendesain, membangun, atau memelihara situs web, menggunakan authoring atau bahasa scripting, alat penciptaan konten, alat manajemen, dan media digital.
  • Melakukan atau update situs web langsung.
  • Menulis, desain, atau mengedit konten halaman web, atau yang lain langsung memproduksi konten.
  • Berunding dengan tim manajemen atau pengembangan untuk memprioritaskan kebutuhan, menyelesaikan konflik, mengembangkan kriteria konten, atau memilih solusi.
  • Back-up file dari situs web untuk direktori lokal untuk pemulihan instan dalam kasus masalah.
  • Mengidentifikasi masalah yang ditemukan oleh umpan balik pengujian atau pelanggan, dan memperbaiki masalah masalah atau merujuk pada personalia yang tepat untuk koreksi.
  • Evaluasi kode untuk memastikan bahwa itu adalah sah, benar terstruktur, memenuhi standar industri dan kompatibel dengan browser, perangkat, atau sistem operasi.
  • Menjaga pemahaman teknologi web saat ini atau praktek pemrograman melalui melanjutkan pendidikan, membaca, atau partisipasi dalam konferensi profesional, workshop, atau kelompok.
  • Menganalisis kebutuhan pengguna untuk menentukan persyaratan teknis.
  •  Mengembangkan atau memvalidasi tes routine dan jadwal untuk memastikan bahwa uji kasus meniru antarmuka eksternal dan alamat semua jenis browser dan perangkat.



5. Web Administrator



  •      Web Administrator adalah seseorang yang bertanggung jawab secara teknis terhadap operasional sebuah situs atau website.


   Tugas:

  • Menjaga kelancaran akses situs (instalasi dan konfigurasi sistem)
  • Merawat hosting dan domain
  • Mengatur keamanan server dan firewall
  • Mengatur akun dan kata sandi untuk admin serta user

     Kualifikasi:

  • Menguasai keahlian seorang programmer
  • Menguasai jaringan (LAN, WAN, Intranet)
  • Menguasai OS Unix (Linux, FreeBSD, dll)


      Deskripsi kerja : 

  • Back up atau memodifikasi aplikasi dan data yang terkait untuk menyediakan pemulihan kerusakan.
  • Menentukan sumber halaman web atau masalah server, dan mengambil tindakan untuk memperbaiki masalah tersebut.
  • Meninjau atau memperbarui konten halaman web atau link pada waktu yang tepat, menggunakan tool-tool.
  • Memonitor sistem untuk intrusi atau serangan denial of service, dan melaporkan pelanggaran keamanan untuk personil yang tepat.
  • Menerapkan langkah-langkah keamanan situs web, seperti firewall atau enkripsi pesan.
  • Mengelola internet / intranet infrastruktur, termasuk komponen seperti web, file transfer protocol (FTP), berita dan server mail.
  • Berkolaborasi dengan tim pengembangan untuk membahas, menganalisis, atau menyelesaikan masalah kegunaan.
  • Test backup atau pemulihan rencana secara teratur dan menyelesaikan masalah.
  • Memonitor perkembangan web melalui pendidikan berkelanjutan, membaca, atau partisipasi dalam konferensi profesional, workshop, atau kelompok.
  • Menerapkan update, upgrade, dan patch pada waktu yang tepat untuk membatasi hilangnya layanan.


6. Web Analisis




  •       Web Analisis adalah orang yang memiliki keahlian untuk menganalisa system pada sebuah web yang akan diimplementasikan, mulai dari menganalisa system yang ada, kelebihan dan kekurangannya, sampai studi kelayakan dan desain system yang akan dikembangkan.

      Tugas :

  • Mengembangkan perangkat lunak/software dalam tahapan requirement, design dan construction
  • Membuat dokumen requirement dan desain software berdasarkan jenis bisnis customer
  • Membangun framework untuk digunakan dalam pengembangan software oleh programmer 


      Kualifikasi :
  • Menguasai keahlian sebagai programmer
  • Menguasai metode dan best practice pemrograman
  • Memahami arsitektur aplikasi dan teknologi terkini


      Deskripsi kerja : 

  • Mengumpulkan informasi untuk penganalisaan dan evaluasi sistem yang sudah ada maupun untuk rancangan suatu sistem.
  • Riset, perencanaan, instalasi, konfigurasi, troubleshoot, pemeliharaan, dan upgrade sistem pengoperasian.
  • Riset, perencanaan, instalasi, konfigurasi, troubleshoot, pemeliharaan, dan upgrade perangkat keras, perangkat lunak, serta sistem pengoperasiannya.
  • Melakukan analisis dan evaluasi terhadap prosedur bisnis yang ada maupun yang sedang diajukan atau terhadap kendala yang ada untuk memenuhi keperluan data processing.
  • Mempersiapkan flowchart dan diagram yang menggambarkan kemampuan dan proses dari sistem yang digunakan.
  • Melakukan riset dan rekomendasi untuk pembelian, penggunaan, dan pembangunan hardware dan software.
  • Memperbaiki berbagai masalah seputar hardware, software, dan konektivitas, termasuk di dalamnya akses pengguna dan konfigurasi komponen.
  • Memilih prosedur yang tepat dan mencari support ketika terjadi kesalahan, dan panduan yang ada tidak mencukupi, atau timbul permasalahan besar yang tidak terduga.
  • Mencatat dan memelihara laporan tentang perlengkapan perangkat keras dan lunak, lisensi situs dan/ atau server, serta akses dan security pengguna.
  • Mencari alternatif untuk mengoptimalkan penggunaan komputer.
  • Mampu bekerja sebagai bagian dari team, misalnya dalam hal jaringan, guna menjamin konektivitas dan keserasian proses di antara sistem yang ada.
  • Mencatat dan menyimpan dokumentasi atas sistem.
  • Melakukan riset yang bersifat teknis atas system upgrade untuk menentukan feasibility, biaya dan waktu, serta kesesuaian dengan sistem yang ada.
  • Menjaga confidentiality atas informasi yang diproses dan disimpan dalam jaringan
  • Mendokumentasikan kekurangan serta solusi terhadap sistem yang ada sebagai catatan untuk masa yang akan datang.



7. Agile Development Methods



Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Agile development methods merupakan salah satu dari Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada. Sehingga saat membuat perangkat lunak dengan menggunakan agile development methods diperlukan inovasi dan responsibiliti yang baik antara tim pengembang dan klien agar kualitas dari perangkat lunak yang dihasilkan bagus dan kelincahan dari tim seimbang.


Saat bekerja dalam tim untuk mengerjakan suatu proyek sangatlah penting menentukan Metodologi pengembangan perangkat lunak dan Proses pengembangan perangkat lunak yang akan digunakan. Metodologi pengembangan perangkat lunak sendiri adalah sebuah metodologi yang digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek, sedangkan Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak. Ada beberapa model Metodologi pengembangan perangkat lunak diantaranya : waterfall, fountain, spiral, rapid, prototyping, incremental, build & fix, dan synchronize & stabilize. Terdapat enam langkah yang digunakan dalam Metodologi pengembangan perangkat lunak, yaitu :


  • Perencanaan, pada langkah ini pengembang dan klien membuat rencana tentang kebutuhan dari perangkat lunak yang akan dibuat.
  • Implementasi, bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.
  • Tes perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian kontrol kualitas agar bug yang ditemukan bisa segera diperbaiki dan kualitas perangkat lunak terjaga.
  • Dokumentasi, setelah dilakukan tes perangkat lunak langkah selanjutnya yaitu proses dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.
  • Deployment, yaitu proses yang dilakukan oleh penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka perangkat lunak siap dideployment.
  • Pemeliharaan, langkah terakhir yaitu pemeliharaan. Tidak ada perangkat lunak yang 100% bebas dari bug, oleh karena itu sangatlah penting agar perangkat lunak dipelihara secara berkala.


Agile development methods terdefinisi dalam empat nilai, biasa di sebut Agile Alliance’s Manifesto, diantaranya :
  1. Interaksi dan personel lebih penting dari pada proses dan alat.
  2. Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap.
  3. Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak.
  4. Respon terhadap perubahan lebih penting daripada mengikuti rencana.
Pengertian dari Agile Alliance's Manifesto dijelaskan di bawah ini:

  • Interaksi dan personel lebih penting dari pada proses dan alat, di dalam agile interaksi antar anggota tim sangatlah penting, karena tanpa adanya interaksi yang baik maka proses pembuatan perangkat lunak tidak akan berjalan sesuai rencana.
  • Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap, saat melakukan proses demonstrasi kepada klien, perangkat lunak yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap.
  • Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, salah satu ciri dari agile adalah klien menjadi bagian dari tim pengembangan perangkat lunak. Kolaborasi yang baik dengan klien saat proses pembuatan perangkat lunak sangatlah penting ketika menggunakan agile. Karena fungsi-fungsi dari perangkat lunak yang dikembangkan harus terus menerus dibicarakan dan diimprovisasi disesuaikan dengan keinginan klien.
  • Respon terhadap perubahan lebih penting daripada mengikuti rencana, agile development methods berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat proses pembuatan perangkat lunak.

Agar suatu tim berhasil dalam menerapkan agile development methods, maka tim tersebut harus mengikuti dua belas prinsip yang ditetapkan oleh Agile Alliance, yaitu :
  1. Prioritas utama proses agile adalah memuaskan klien dengan menghasilkan perangkat lunak yang bernilai dengan cepat dan rutin.
  2. Menyambut perubahan kebutuhan, walaupun terlambat dalam pengembangan perangkat lunak. Proses Agile memanfaatkan perubahan untuk keuntungan kompetitif klien.
  3. Menghasilkan perangkat lunak yang bekerja secara rutin, dari jangka waktu beberapa minggu sampai beberapa bulan, dengan preferensi kepada jangka waktu yang lebih pendek.
  4. Rekan bisnis dan pengembang perangkat lunak harus bekerja sama tiap hari sepanjang proyek.
  5. Kembangkan proyek di sekitar individual yang termotivasi. Berikan mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan pekerjaan dengan baik.
  6. Metode yang paling efisien dan efektif untuk menyampaikan informasi dari dan dalam tim pengembang perangkat lunak adalah dengan komunikasi secara langsung.
  7. Perangkat lunak yang bekerja adalah ukuran utama kemajuan.
  8. Proses agile menggalakkan pengembangan berkelanjutan. Sponsor-sponsor, pengembang-pengembang, dan pengguna-pengguna dapat mempertahankan kecepatan tetap secara berkelanjutan.
  9. Perhatian yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik meningkatkan Agility.
  10. Kesederhanaan (memaksimalkan sumber daya yang tersedia) adalah hal yang amat penting.
  11. Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang yang dapat mengorganisir diri sendiri.
  12. Secara berkala, tim pengembang berefleksi tentang bagaimana untuk menjadi lebih efektif, kemudian menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.
Dua belas prinsip tersebut menjadi suatu dasar bagi tim agar sukses menerapkan agile development methods. Dengan prinsip-prinsip tersebut agile berusaha untuk menyiasati tiga masalah yang biasanya dihadapi saat proses pembuatan perangkat lunak, yaitu:

  • Kebutuhan perangkat lunak sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
  • Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
  • Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.


Beberapa model dari agile development methods, yaitu :

  • Acceptance Test Driven Development (ATDD)
  • Agile Modeling
  • Adaptive Software Development (ASD)

Adaptive software development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem yang kompleks. Filosofi yang mendasari adaptive software development adalah kolaborasi manusia dan tim yang mengatur diri sendiri. Sistem kerja adaptive software development : collaboration dan learning. '
  1. Collaboration : orang-orang yang bermotivasi tinggi bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di bidangnya, dan komunikasikan masalah untuk menyelesikan masalah secara efektif.
  2. Learning: tim developer sering merasa sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu proses ini membuat mereka belajar lebih tentang proyek melalui tiga cara:
  3. Fokus grup, klien dan pengguna memberi masukan terhadap perangkat lunak.
  4. Formal Technique Reviews, tim ASD lengkap melakukan review.
  5. Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.

  • Agile Unified Process (AUP)
  • Continuous integration (CI)
  • Crystal Clear
  • Crystal Methods
  • Dynamic Systems Development Method (DSDM)

Pada Dynamic System Development Method menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototip yang incremental dalam lingkungan yang terkondisikan. Metode ini bisa membuat pengerjaan software lebih cepat 80%.Hal -hal yang perlu diperhatikan jika menggunakan dynamic system development method:
  1. Feasibility study, siapkan requirement, dan batasan, lalu uji apakah sesuai gunakan proses DSDM.
  2. Business Study, susun kebutuhan fungsional dan informasi, tentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi.
  3. Functional model iteration, perlihatkan fungsi perangkat lunak ke klien untuk mendapatkan feedback
  4. Design and Build Iteration, cek ulang prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang memungkinkan fungsi tersebut benar-benar bekerja.
  5. Implementation: buat perangkat lunak sesuai protoip yang ada dan terus tambah fungsionalitasnya.

  • Extreme Programming (XP)
  • Feature Driven Development (FDD)

Feature driven development merupakan sebuah model pengembangan perangkat lunak yang berdasarkan pada fitur yang akan dibuat. Keuntungan dari metodefeature driven development :
  1. User dapat menggambarkan dengan mudah bentuk sistem yang akan dibuat.
  2. Dapat diorganisasikan atau diatur ke dalam kelompok bisnis sesuai hirarki yang ada.
  3. Desain dan kode lebih mudah diperiksa secara efektif.
  4. Perancangan proyek, biaya pembuatan dan jadwal rilis ditentukan oleh fiturnya.

  • Graphical System Design (GSD)
  • Kanban
Lean software development
  • Rational Unified Process (RUP)
Rational unified process, adalah suatu kerangka pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM sejak 2003.Rational unified process bukanlah suatu proses dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh tim pengembang perangkat lunak yang akan memilih elemen proses disesuaikan dengan kebutuhan mereka.Model ini membagi suatu sistem aplikasi menjadi beberapa komponen sistem dan memungkinkan para developer aplikasi untuk menerapkan metoda iterative (analisis, disain, implementasi dan pengujian) pada tiap komponen. Dengan menggunakan model ini, Rational unified process membagi tahapan pengembangan perangkat lunaknya ke dalam 4 fase sebagai berikut.
  1. Inception, merupakan tahap untuk mengidentifikasi sistem yang akan dikembangkan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup analisis sistem, perumusan target dari sistem yang dibuat, identifikasi kebutuhan, perumusan kebutuhan pengujian, pemodelan diagram UML, dan pembuatan dokumentasi.
  2. Elaboration, merupakan tahap untuk melakukan disain secara lengkap berdasarkan hasil analisis di tahap inception. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pembuatan disain arsitektur subsistem, disain komponen sistem, disain format data disain database, disain antarmuka/tampilan, disain peta tampilan, penentuan design pattern yang digunakan, pemodelan diagram UML, dan pembuatan dokumentasi.
  3. Construction, merupakan tahap untuk mengimplementasikan hasil disain dan melakukan pengujian hasil implementasi. Pada tahap awal construction, ada baiknya dilakukan pemeriksaan ulang hasil analisis dan disain, terutama disain pada diagram sequence,class, component, dan deployment. Apabila disain yang dibuat telah sesuai dengan analisis sistem, maka implementasi dengan bahasa pemrograman tertentu dapat dilakukan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pengujian hasil analisis dan disain (misal menggunakan class responsibility collaborator untuk kasus pemrograman berorientasi obyek), pendataan kebutuhan implementasi lengkap (berpedoman pada identifikasi kebutuhan di tahap analisis), penentuan coding pattern yang digunakan, pembuatan program, pengujian, optimasi program, pendataan berbagai kemungkinan pengembangan / perbaikan lebih lanjut, dan pembuatan dokumentasi.
  4. Transition, merupakan tahap untuk menyerahkan sistem aplikasi ke konsumen (roll-out), yang umumnya mencakup pelaksanaan pelatihan kepada pengguna dan testing beta aplikasi terhadap ekspetasi pengguna.
Secara garis besar tujuan dirumuskannya agile development methods, yaitu :
  1. High-value & working App system, diharapkan dengan memakai agile development methods dapat dihasilkan perangkat lunak yang mempunyai nilai jual yang tinggi, biaya pembuatan bisa di tekan dan perangkat lunak bisa berjalan dengan baik.
  2. Iterative, incremental, evolutionaryagile adalah metode pengembangan perangkat lunak yang iteratif, selalu mengalami perubahan, dan evolusioner. Tim harus bekerja dalam waktu yang singkat(biasanya 1-3 minggu) dan juga selalu menambah fungsionalitas dari perangkat lunak sesuai dengan kebutuhan klien.Agile dapat dianalogikan ketika seseorang ingin pergi ke suatu kota dan dia tidak tahu jalannya. Lalu bagaimana dia bisa sampai tujuan? Dengan sering bertanya kepada orang yang dia temui dijalan hingga dia sampai di tempat tujuan.
  3. Cost control & value-driven development, salah satu tujuan dari agile yaitu pengembangan perangkat lunak disesuaikan dengan kebutuhan pengguna, tim bisa dengan cepat merespon kebutuhan yang diinginkan pengguna sehingga waktu dan biaya pembuatan perangkat lunak bisa dikontrol.
  4. High-quality production, walaupun biaya pembuatan perangkat lunak bisa ditekan dan proses pembuatan bisa dipercepat , tetapi kualitas dari perangkat lunak yang dibuat harus tetap dijaga. Dengan melakukan tes setiap fungsionalitas perangkat lunak setelah selesei dibuat berarti agile juga mengakomodir kebutuhan ini.
  5. Flexible & risk management, jika kita menggunakan metode pembuatan yang biasanya dipakai, jika ingin mengubah fungsionalitas dari wireframe yang telah dibuat di butuhkan proses yang rumit. Mulai dari pertemuan dengan sistem analis untuk mengubah sistem perangkat lunak, perubahan rencana rilis produk hingga perubahan biaya produksi. Pertemuan dengan klien untuk melakukan tes perangkat lunak juga sering dilakukan sehingga fungsionalitas perangkat lunak mudah diubah dan akhirnya kegagalan perangkat lunakpun bisa diminimalisir.
  6. Collaboration, dengan menggunakan agile, tim pengembang diharuskan sering bertemu untuk membahas perkembangan proyek dan feedback dari klien yang nantinya akan ditambahkan dalam perangkat lunak, sehingga tim bisa berkolaborasi dengan maksimal.
  7. Self-organizing, self-managing teams, rekrut orang terbaik, beri dan dukung kebutuhan mereka lalu biarkan mereka bekerja. Itulah perbedaan agile dan SDM lainnya. Dengan agiledeveloper dapat memanajemen dirinya sendiri, sedangkan manajer tim hanya bertugas mengkolaborasikan developer perangkat lunak dengan klien. Sehingga terciptalah tim yang solid.


Topik selanjutnya yaitu tentang cara kerja agile development methods

Komposisi tim

Secara umum komposisi dari sebuah tim pengembang perangkat lunak yaitu :

  • Owner / Klien, bersama dengan developer sebagai bagian terpenting dalam proyek, tugas dari klien menentukan fungsi dari perangkat lunak yang akan di buat, melakukan testing dan memberikan feedback.
  • Manajer / Scrum Master, bertugas mengkolaborasikan developer dengan klien, membuat dan mengevaluasi target pengerjaan perangkat lunak.
  • Sistem Analis, membuat arsitektur sistem dari perangkat lunak yang akan dibuat.
  • Developer, merupakan titik vital dalam tim, tanpa developer perangkat lunak tidak akan bisa dibuat.

Story

Story adalah daftar kebutuhan atau fitur yang nanti akan dibuat. Story berisi apa yang klien kehendaki, dan ditulis dalam bahasa yang dimengerti klien. Dengan kata lain dapat disimpulan Story adalah bagian terpenting dari Scrum.
Story terdiri dari kolom-kolom berikut ini:

  • ID – Identifikasi unik, biasanya berupa nomor urut. Hal ini untuk menghindari kehilangan jejak story kalau kita mengganti namanya.
  • Nama – Nama story bersifat deskriptif, padat, singkat, dan jelas (2-10 kata), sehingga tim dan klien memahami kira-kira story yang dibicarakan.
  • Kepentingan – Derajat kepentingan yang diberikan oleh klien terhadap story. Pemberian derajat kepentingan biasanya menggunakan deret fibonacci (1,1,2,3,5,dst). Semakin tinggi nilainya maka semakin tinggi pula prioritas pengerjaannya.
  • Perkiraan awal – Perkiraan awal tim tentang berapa banyak kerja yang diperlukan untuk mengimplementasikan sebuah story.
  • Demo – deskripsi umum bagaimana cara story ini didemokan pada waktu sprint demo (lakukan ini, klik itu, lalu ini akan muncul,dll).

Sprint

Sprint (Rapat perencanaan pembuatan perangkat lunak dilakukan 2-8 minggu sekali), yang perlu diperhatikan saat melaksanakan sprint antara lain :

  • Tujuan sprint.
  • Daftar anggota tim harus lengkap.
  • Sprint backlog (daftar story yang akan diikutkan dalam sprint).
  • Tanggal demo yang pasti.
  • Tempat dan waktu yang jelas untuk pelaksanaan sprint berikutnya.

Tim akan melakukan sprint secara simultan sampai perangkat lunak selesei dikerjakan, sebagai contoh:
Sprint 1, tim membuat fungsi login,logout dan demo perangkat lunak akan dilakukan 3 minggu kemudian. Setelah dilakukan demo untuk mengevaluasi kerja yang dilakukan tim pada Sprint 1, maka Sprint 1 dianggap selesei. Bahan evaluasi dari Sprint 1 akan dibawa ke Sprint 2 begitu seterusnya sampai aplikasi selesei dikerjakan.

Kelebihan

Beberapa kelebihan dari agile diantaranya :

  • 82% Menambah produktivitas tim.
  • 77% Menambah kualitas perangkat lunak.
  • 78% Menambah kepuasan klien.
  • 37% Menghemat biaya.

Kekurangan

Sedangkan kekurangan dari agile antara lain :

  • Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
  • Tidak cocok dalam skala tim yang besar (>20 orang).
  • Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.



sumber :
http://bomy-id.blogspot.com/2014/05/jenis-jenis-profesi-dan-deskripsi.html
http://id.wikipedia.org/wiki/Agile_Development_Methods
http://suyono.web.id/menjadi-webmaster-1/
picture: 
https://www.bluehost.com/blog/wp-content/uploads/2013/10/fall-web-design-trends.jpg

Senin, 25 Agustus 2014

Studi Kasus Pengembangan Software dengan Metode Waterfall


Model Waterfall
     Waterfall adalah suatu metodologi pengembangan perangkat lunak yang mengusulkan pendekatan kepada perangkat lunak sistematik dan sekuensial yang mulai pada tingkat kemajuan sistem pada seluruh analisis, design, kode, pengujian dan pemeliharaan.

Langkah-langkah yang harus dilakukan pada metodologi Waterfall adalah sebagai berikut:
  1. Analisis kebutuhan perangkat lunak
Proses pengumpulan kebutuhan diintensifkan dan difokuskan, khususnya pada perangkat lunak. Untuk memahami sifat program yang dibangun, rekayasa perangkat lunak (analisis) harus memahami domain informasi, tingkah laku, unjuk kerja dan antar muka (interface) yang diperlukan. Kebutuhan baik untuk sistem maupun perangkat lunak di dokumentasikan dan dilihat dengan pelanggan.
  1. Desain
Desain perangkat lunak sebenarnya adalah proses multi langka yang berfokus pada empat atribut sebuah program yang berbeda; struktur data, asitektur perangkat lunak, representasi interface dan detail (algoritma) prosedural.  Proses desain menerjemahkan syarat/kebutuhan kedalam sebuah representasi perangkat lunak yang dapat di perkirakan demi kualitas sebelum dimulai pemunculan kode. Sebagaimana persyaratan, desain didokumentasikan dan menjadi bagian  dari konfigurasi perangkat lunak.
  1. Generasi Kode
Desain harus diterjemahkan dalam bentuk mesin yang bisa di baca. Langkah pembuatan kode melakukan tugas ini. Jika desain dilakukan dengan cara yang lengkap, pembuatan kode dapat diselesaikan secara mekanis.
  1. Pengujian
        Proses pengujian dilakukan pada logika internal untuk memastikan semua pernyataan sudah diuji. Pengujian eksternal fungsional untuk menemukan kesalahan-kesalahan dan memastikan bahwa input akan memberikan hasil yang aktual sesuai yang dibutuhkan


      5.   Pemeliharaan


       Perangkat lunak yang sudah disampaikan kepada pelanggan pasti akan mengalami perubahan. Perubahan tersebut bisa karena mengalami kesalahan karena perangkat lunak harus menyesuaikan dengan lingkungan (periperal atau sistem operasi baru) baru, atau karena pelanggan membutuhkan perkembangan fungsional atau unjuk kerja.



Keunggulan dan Kelemahan Model Sekuensial Linier

a. Keunggulan
       1. Mudah aplikasikan
       2. Memberikan template tentang metode analisis, desain, pengkodean, pengujian, dan
           pemeliharaan

b. Kelemahan
       1. Jarang sekali proyek riil mengikuti aliran sekuensial yang dianjurkan model karena
           model ini bisa melakukan itersi tidak langsung . Hal ini berakibat ada perubahan
           yang diragukan pada saat proyek berjalan.
       2. Pelanggan sulit untuk menyatakan kebutuhan secara eksplisit sehingga sulit untuk
           megakomodasi ketidakpastian pada saat awal proyek.
       3. Pelanggan harus bersikap sabar karena harus menunggu sampai akhir proyrk dilalui.
           Sebuah kesalahan jika tidak diketahui dari awal akan menjadi masalah besar kare
           harus mengulang dari awal.
       4. Pengembang sering malakukan penundaan yang tidak perlu karena anggota tim
           proyek harus menunggu tim lain untuk melengkapi tugas karena memiliki
           ketergantungan hal ini menyebabkan penggunaan waktu tidak efesien


Studi Kasus


METODE PENELITIAN
Gambaran umum mengenai langkah-langkah yang dilakukan dalam penelitian berdasarkan
urutan pelaksanaannya. Penentuan metodologi penelitian ini perlu dilakukan terlebih dahulu
sehingga arah dan pelaksanaan kegiatan penelitian yang akan dilakukan menjadi jelas.


Analisis sistem perlu dilakukan untuk mengetahui kegiatan dan komponen apa saja yang berkaitan
dengan sistem perpustakaan SMKN 1 Cimahi sebelum dilakukan pemodelan sistem. Pada proses
perpustakaan SMKN 1 Cimahi terdapat 2 entitas internal, yaitu siswa/guru, kepala sekolah sedangkan
entitas luar yang mempengaruhi perpustakaan adalah sistem persediaan buku. Untuk lebih jelasnya
kegiatan dan komponen yang terlibat dalam proses perpustakaan dapat digambarkan diagram
konteks sebagai berikut:






Kesimpulan

Berdasarkan kajian dan teori yang dimiliki, serta dari hasil analisis terhadap sistem
informasi perpustakaan yang sedang berjalan di SMKN 1 Cimahi, maka kesimpulan yang dapat
diambil yaitu :
- Pada proses transaksi pada sistem sebelumnya terdapat kesulitan dalam pendataan buku,
 belum tersedianya pemberian denda yang jelas dan lamanya waktu yang digunakan
dalam proses peminjaman maupun pengembalian.
- Memudahkan dalam pembuatan laporan yang akan dibuat oleh staf yang akan
 dilaporkan ke kepala sekolah.

Pengembangan Perangkat Lunak (Prototyping Model)

Pendahuluan    
         Pengembangan perangkat lunak (juga disebut pengembangan aplikasi, desain perangkat lunak, merancang perangkat lunak, pengembangan aplikasi perangkat lunak, pengembangan aplikasi perusahaan, atau pengembangan platform) adalah pengembangan suatu produk perangkat lunak. Istilah "pengembangan perangkat lunak" bisa dipakai untuk menyebut aktivitas pemrograman komputer, yaitu proses menulis dan mengelola kode sumber, namun dalam artian luas istilah ini mencakup semua hal yang terlibat antara penciptaan perangkat lunak yang diinginkan melalui pewujudan akhir perangkat lunak, idealnya dalam proses yang terencana dan terstruktur. Karena itu, pengembangan perangkat lunak bisa mencakup penelitian, pengembangan baru, purwarupa, modifikasi, pemakaian kembali, rekayasa ulang, pengelolaan, atau aktivitas lain yang menghasilkan produk perangkat lunak.

Perangkat lunak bisa dikembangkan untuk berbagai tujuan, tiga tujuan paling umum adalah memenuhi kebutuhan klien/bisnis tertentu (perangkat lunak kustom), memenuhi persepsi kebutuhan sejumlah penggunaa potensial (perangkat lunak komersial dan terbuka), atau memenuhi kebutuhan pribadi (misalnya seorang ilmuwan menulis perangkat lunak untuk mengotomasikan sebuah tugas yang rumit). Pengembangan perangkat lunak tertanam adalah pengembangan perangkat lunak tertanam seperti yang dipakai untuk mengontrol produk konsumen, membutuhkan proses pengembangan yang terintegrasikan dengan pengembangan produk fisik yang dikontrol.

Perlunya pengawasan kualitas yang lebih baik pada proses pengembangan perangkat lunak menciptakan disiplin teknik  perangkat lunak, yang bertujuan menerapkan pendekatan sistematis yang tercantum dalam paradigma teknik hingga proses pengembangan perangkat lunak.

Model Prototyping pada Rekayasa Perangkat Lunak
   Sebuah prototipe adalah bagian dari produk yang mengekspresikan logika maupun fisik antarmuka eksternal yang ditampilkan. Konsumen potensial menggunakan prototipe dan menyediakan masukan untuk tim pengembang sebelum pengembangan skal besar dimulai. Melihat dan mempercayai menjadi hal yang diharapkan untuk dicapai dalam prototipe. Dengan menggunakan pendekatan ini, konsumen dan tim pengembang dapat mengklarifikasi kebutuhan dan interpretasi mereka.

      Prototyping perangkat lunak (software prototyping) atau siklus hidup menggunakan protoyping (life cycle using prototyping) adalah salah satu metode siklus hidup sistem yang didasarkan pada konsep model bekerja (working model). Tujuannya adalah mengembangkan model menjadi sistem final. Artinya sistem akan dikembangkan lebih cepat dari pada metode tradisional dan biayanya menjadi lebih rendah. Ada banyak cara untuk memprotoyping, begitu pula dengan penggunaannya. Ciri khas dari metodologi ini adalah pengembang sistem (system developer), klien, dan pengguna dapat melihat dan melakukan eksperimen dengan bagian dari sistem komputer dari sejak awal proses pengembangan.

Dengan prototype yang terbuka, model sebuah sistem (atau bagiannya) dikembangkan secara cepat dan dipoles dalam diskusi yang berkali-kali dengan klien. Model tersebut menunjukkan kepada klien apa yang akan dilakukan oleh sistem, namun tidak didukung oleh rancangan desain struktur yang mendetil. Pada saat perancang dan klien melakukan percobaan dengan berbagai ide pada suatu model dan setuju dengan desain final, rancangan yang sesungguhnya dibuat tepat seperti model dengan kualitas yang lebih bagus.

Protoyping membantu dalam menemukan kebutuhan di tahap awal pengembangan,terutama jika klien tidak yakin dimana masalah berasal. Selain itu protoyping juga berguna sebagai alat untuk mendesain dan memperbaiki user interface – bagaimana sistem akan terlihat oleh orang-orang yang menggunakannya.

Salah satu hal terpenting mengenai metodologi ini, cepat atau lambat akan disingkirkan dan hanya digunakan untuk tujuan dokumentasi. Kelemahannya adalah metode ini tidak memiliki analisa dan rancangan yang mendalam yang merupakan hal penting bagi sistem yang sudah kokoh, terpercaya dan bisa dikelola. Jika seorang pengembang memutuskan untuk membangun jenis prototipe ini, penting untuk memutuskan kapan dan bagaimana ia akan disingkirkan dan selanjutnya menjamin bahwa hal tersebut telah diselesaikan tepat pada waktunya. 

Tahapan-Tahapan Prototyping dan Kelebihannya
Tahapan-tahapan dalam Prototyping adalah sebagai berikut:

1. Pengumpulan kebutuhan
Pelanggan dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.

2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output).

3. Evaluasi protoptyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan. Jika sudah sesuai maka langkah 4 akan diambil. Jika tidak prototyping direvisi dengan mengulang langkah 1, 2 , dan 3.

4. Mengkodekan sistem
Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.

5. Menguji sistem
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain.

6. Evaluasi Sistem
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan. Jika ya, langkah 7 dilakukan; jika tidak, ulangi langkah 4 dan 5.

7. Menggunakan sistem
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.



Model pengembangan ini (Prototyping Model) memiliki beberapa kelebihan, diantaranya :
  • Adanya komunikasi yang baik antara pengembang dan pelanggan
  • Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan
  • Pelanggan berperan aktif dalam pengembangan system
  • Lebih menghemat waktu dalam pengembangan system
  • Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya
  • membuat klien mendapat gambaran awal dari prototype
  • Membantu mendapatkan kebutuhan detil lebih baik

Implementasi Prototyping Model
            Metode prototyping sebagai suatu paradigma baru dalam pengembangan sistem informasi manajemen, tidak hanya sekedar suatu efolusi dari metode pengembangan sistem informasi yang sudah ada, tetapi sekaligus merupakan refolusi dalam pengembangan sistem informasi manajemen. Metode ini dikjatakan refolusi karena merubah proses pengembangan sistem informasi yang lama (SDLC).

Menurut literatur, yang dimaksud dengan prototipe (prototype) adalah ”model pertama”, yang sering digunakan oleh perusahaan industri yang memproduksi barang secara masa. Tetapi dalam kaitannya dengan sistem informasi definisi kedua dari Webster yang menyebutkan bahwa ”prototype is an individual that exhibits the essential peatures of later type”, yang bila diaplikasikan dalam pengembangan sistem informasi manajemen dapat berarti bahwa Prototipe tersebut adalah sistem informasi yang menggambarkan hal-hal penting dari sistem informasi yang akan datang. Prototipe sistem informasi bukanlah merupakan sesuatu yang lengkap, tetapi sesuatu yang harus dimodifikasi kembali, dikembangkan, ditambahkan atau digabungkan dengan sistem informasi yang lain bila perlu.

Dalam beberapa hal pengembangan software berbeda dengan produk-produk manufaktur, setiap tahap atau fase pengembangan sistem informasi merupakan bagian yang tidak terpisahkan dari seluruh proses yang harus dilakukan. Proses ini umumnya hanya untuk satu produk dan karakteristik dari produk tersebut tidak dapat ditentukan secara pasti seperti produk manufaktur, sehingga penggunaan ”model pertama” bagi pengembangan software tidaklah tepat. Istilah prototyping dalam hubungannya dengan pengembangan software sistem informasi manajemen lebih merupakan suatu proses bukan prototipe sebagai suatu produk.

Sebagai contoh, pembuat mobil dapat mengembangkan sebuah purwarupa yang dapat digunakan dalam lintasan pengujuan khusus dan kemudian ditampilkan dalam showroom. Informasi yang diperoleh dari perlakuan seperti itu dapat digunakan untuk meningkatkan desain sebelum implementasi/produksi dilakukan secara massal.

Karakteristik metode prototyping
Ada empat langkah yang menjadi karakteristik metode prototyping yaitu :
1.    Pemilahan Fungsi
        Mengacu pada pemilahan fungsi yang harus ditampilkan oelh prototyping. Pemilahan harus selalu dilakukan berdasarkan pada tugas-tugas yang relevan yang sesuai dengan contoh kasus yang akan dipergakan.
2.    Penyusunan Sistem Informasi
       Bertujuan untuk memenuhi permintaan akan tersedianya prototype
3.    Evaluasi
4.    Penggunaan Selanjutnya


Incremental Model

Model incremental menggabungkan elemen-elemen model sekuensial linier (diimplementasikan secara berulang) dengan filosofi prototype interatif. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan perangkat lunak yang kemudian dapat disampaikan kepada pengguna. Model ini juga merupakan perbaikan dari model waterfall dan sebagai standar pendekatan top-down. Ide dasar dari model ini adalah membangun software secara meningkat (increment) berdasarkan kemampuan fungsional.

Pada saat model incremental (pertambahan) ini digunakan, pertambahan pertama sering merupakan produk inti (core product), yaitu sebuah model pertambahan yang dipergunakan, tetapi beberapa muka tambahan (beberapa diketahui dan beberapa tidak) tetap tidak disampaikan. Produk inti tersebut dipergunakan oleh pelanggan (atau mengalami pengkajian detail). Sebagai hasil dari pemakaian dan / atau evaluasi maka dikembangkan rencana bagi pertambahan selanjutnya. Rencana tersebut menekankan modifikasi produk inti untuk secara lebih baik memenuhi kebutuhan para pelanggan dan penyampaian fitur serta fungsional tambahan. Proses ini mengikuti penyampaian setiap pertambahan sampai bisa menghasilkan produk yang lengkap.

Model proses incremental tersebut, seperti model prototype dan pendekatan-pendekatan evolusioner yang lain, bersifat iterative. Tetapi tidak seperti model prototype, model pertambahan berfokus pada penyampaian produk operasional dalam setiap pertambahannya. Pertambahan awal ada di versi stripped down dari produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga menyediakan platform untuk evaluasi oleh pemakai.

Perkembangan pertambahan, khususnya berguna pada saat staffing, tidak bisa dilakukan dengan menggunakan implementasi lengkap oleh batasan waktu bisnis yang sudah disepakati untuk proyek tersebut. Jika produk inti diterima dengan baik, maka staf tambahan (bila dibutuhkan) bisa ditambahkan untuk mengimplementasi pertambahan selanjutnya. Sebagai tambahan, system mayor yang sedang pada masa perkembangan serta waktu penyampaiannya belum pasti, mungkin membutuhkan keberadaan perangkat keras yang baru. Bisa juga rencana tertentu dibuat untuk menghindari pemakaian perangkat lunak ini, sehingga memungkinkan fungsionalitas partial disampaikan kepada pemakai tanpa harus banyak tertunda. 



Contoh Penggunaan Incremental Model :
Misalnya, perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigma penambahan akan menyampaikan manajemen file dasar, editing serta fungsi penghasilan dokumen pada penambahan pertama; kemudian editing dan kemampuan penghasilan dokumen yang lebih canggih pada pertambahan kedua; pengecekan spelling dan tata bahasa pada pertambahan ketiga; serta kemampuan pengaturan halaman tingkat lanjut pada tahap pertambahan keempat. Harus dicatat bahwa aliran proses untuk berbagai pertambahan tersebut dapat menggabungkan paradigma prototype.

Kelebihan dan Kekurangan Incremental Model :

Kelebihan :
  • Merupakan model dengan manajemen yang sederhana.
  • Pelanggan tidak perlu menunggu sampai seluruh system dikirim untuk mengambil keuntungan dari system tersebut. Inkremen yang pertama sudah memenuhi persyaratan mereka yang paling kritis, sehingga perangkat lunak dapat segera digunakan.
  • Pelanggan dapat memakai inkremen yang pertama sebagai bentuk prototype dan mendapatkan pengalaman yang dapat menginformasikan persyaratan untuk inkremen system berikutnya.
  • Resiko untuk kegagalan proyek secara keseluruhan lebih rendah. Walaupun masalah dapat ditemukan pada beberapa inkremen, bisa saja beberapa inkremen diserahkan dengan sukses kepada pelanggan.
  • Karena layanan dengan prioritas tertinggi diserahkan pertama dan inkremen berikutnya diintegrasikan dengannya, sangatlah penting bahwa layanan system yang paling penting mengalami pengujian yang paling ketat. Ini berarti bahwa pelanggan akan memiliki kemungkinan kecil untuk memenuhi kegagalan      perangkat lunak pada inkremen system yang paling kecil.
Kekurangan :
  • Inkremen harus relative lebih kecil (tidak lebih dari 20.000 baris kode) dan setiap inkremen harus menyediakan sebagian dari fungsional system.
  • Adanya kesulitan untuk memetakan persyaratan pelanggan pada inkremen dengan ukuran yang benar.
  • Tiap bagian tidak dapat diintegrasikan.

  • Ireactive-Incremental (Spiral) Model
Proses digambarkan sebagai spiral. Setiap loop mewakili satu fase dari software process. Loop paling dalam berfokus pada kelayakan dari sistem, loop selanjutnya tentang definisi dari kebutuhan, loop berikutnya berkaitan dengan desain sistem dan seterusnya. Setiap Loop dibagi menjadi beberapa sektor, yaitu :

1. Objective settings (menentukan tujuan)
Menentukan tujuan dari fase yang ditentukan. Batasan-batasan pada proses dan produk sudah diketahui. Perencanaan sudah disiapkan. Resiko dari proyek sudah diketahui. Alternatif strategi sudah disiapkan berdasarkan resiko-resiko yang diketahui, dan sudah direncanakan.

2. Risk assessment and reduction (Penanganan dan pengurangan resiko)
Setiap resiko dianalisis secara detil pada sektor ini. Langkahlangkah penanganan dilakukan, misalnya membuat prototype untuk mengetahui ketidakcocokan kebutuhan.
3. Development and Validation (Pembangunan dan pengujian)
Setelah evaluasi resiko, maka model pengembangan sistem dipilih. Misalnya jika resiko user interface dominan, maka membuat prototype User Interface. Jika bagian keamanan yang bermasalah, maka
4. Planning
Proyek dievaluasi atau ditinjau-ulang dan diputuskan untuk terus ke fase loop selanjutnya atau tidak. Jika melanjutkan ke fase berikutnya rencana untuk loop selanjutnya.
5. Menggunakan model formal dengan perhitungan matematis, dan jika masalahnya adalah integrasi sistem model waterfall lebih cocok.


Kelebihan dan Kekurangan Spiral Model :

Kelebihan :
   1. Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak
       komputer.
   2. Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar
   3. Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap
       resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses .
   4. Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap
       keadaan di dalam evolusi produk.
   5. Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya
       ke dalam kerangka kerja iteratif .
   6. Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi
       resiko sebelum menjadi permaslahan yang serius.

Kekurangan :
   1. Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
   2. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang
       serius jika resiko mayor tidak ditemukan dan diatur.
   3. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolut.



Pengembangan sistem informasi dapat dikategorikan dalam tiga kelompok besar. Kelompok pertama adalah proyek yang bersifat pembangunan jaringan infrastruktur teknologi informasi (mulai dari pengadaan dan instalasi komputer sampai dengan perencanaan dan pengembangan infrastruktur jaringan LAN dan WAN).

Kelompok kedua adalah implementasi dari paket program aplikasi yang dibeli di pasaran dan diterapkan di perusahaan, mulai dari perangkat lunak kecil seperti produk-produk ritel Microsoft sampai dengan aplikasi terintegrasi yang berbasis teknologi tinggi.

Kelompok ketiga adalah perencanaan dan pengembangan aplikasi yang dibuat sendiri secara khusus (customized software), baik oleh internal organisasi maupun kerja sama dengan pihak luar, seperti konsultan dan software house.


Pengembangan Software dengan model Evolutionary



Pengembangan Eksplorasi: 
Sistem berubah dengan adanya fitur-fitur tambahan dari user.
Prototype yang dapat dibuang (Throw-Away): 
Memahami persyaratan user untuk mendapatkan definisi persyaratan yang lebih baik.