Blog, Uncategorized
 

Software Development Process

Agustus 30, 2015

Apa software development? Tingkatkan kinerja perusahaan dengan Software sesuai Business Process. Our team will create a custom software solution for you. We outsource all kinds of projects, like eGovernment, Hospital (SIM Rumah Sakit), HR Management (SIMPEG), Accounting (software akuntansi), and ERP’s. Our team will convert your ideas to application.

Software Development Process

Software development is the computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product. The term refers to a process of writing and maintaining the source code, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

software development process secara umum

Itu menurut definisi umum yang bersumber dari wikipedia, yaitu kegiatan yang meliputi programming, dokumentasi, testing software dan rangkaian kegiatan lainnya untuk menghasilkan produk software yang berkualitas dan sesuai dengan keinginan user nya.

Software Development merupakan suatu proses pengembangan suatu produk perangkat lunak atau software yang bertujuan untuk mengembangkan sistem dan memberikan panduan yang bertujuan untuk menyukseskan proyek pengembangan sistem melalui tahap demi tahap.Proses ini memiliki beberapa model yang masing-masing menjelaskan pendekatan terhadap berbagai tugas atau aktivitas yang terjadi selama proses. Dalam pengembangan software terdapat beberapa model pengembangan yang dapat kita gunakan tergantung jenis proyek yang dikerjakan. Contoh model proses pengembangan perangkat lunak atau software antara lain adalah proses iteratif, Extreme Programming, serta waterfall.

Metodologi Pengembangan Software berbasis SDLC (Software Development Life Cycle)

SDLC (Software Development Life Cycle) merupakan sebuah siklus hidup pengembangan perangkat lunak yang terdiri dari beberapa tahapan-tahapan penting dalam membangun perangkat lunak yang dilihat dari segi pengembangannya. Dengan siklus SDLC, proses membangun sistem dibagi menjadi beberapa langkah dan pada sistem yang besar, masing-masing langkah dikerjakan oleh tim yang berbeda. SDLC tidak hanya penting untuk proses produksi software, tetapi juga sangat penting untuk proses maintenance software itu sendiri,

Terdapat 4 metodologi penting dalam pengembangan software berbasis SDLC yaitu

A. WATERFALL

“Classic Life Cycle” atau model Waterfall merupakan model yang paling banyak dipakai didalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing / verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Roger S. Pressman memecah model ini menjadi 6 tahapan, yaitu :

1. System / Information Engineering and Modeling.
Permodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan Project Definition.

2. Software Requirements Analysis.
Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada pelanggan.

3. Design
Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software.

4. Coding
Desain yang telah dibuat kemudian diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.

5. Testing / Verification
Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.

6. Maintenance
Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya.

Keuntungan menggunakan teknik waterfall:

  • Proses menjadi teratur
  • Estimasi proses menjadi lebih baik
  • Jadwal menjadi lebih menentu

Kelemahan menggunakan teknik waterfall:

  • Sifatnya kaku, sehingga susah melakukan perubahan di tengah proses
  • Membutuhkan daftar kebutuhan yang lengkap di awal, tapi jarang konsumen bisa memberikan kebutuhan secara lengkap diawal

B. PROTOTYPE

Prototyping adalah salah satu pendekatan dalam rekayasa perangkat lunak yang secara langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau komponen-komponen perangkat lunak akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual dilakukan (Howard, 1997). Beberapa model prototype adalah sebagai berikut :

Reusable prototype : Prototype yang akan ditransformasikan menjadi produk final.
Throwaway prototype : Prototype yang akan dibuang begitu selesai menjalankan maksudnya.
Input/output prototype : Prototype yang terbatas pada antar muka pengguna (user interface).
Processing prototype : Prototype yang meliputi perawatan file dasar dan proses-proses transaksi
System prototype : Prototype yang berupa model lengkap dari perangkat lunak.
Proses pada model prototyping adalah sebagai berikut:

1. pengumpulan kebutuhan
developer dan klien bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya. Detil kebutuhan mungkin tidak dibicarakan disini, pada awal pengumpulan kebutuhan

2. perancangan
perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype.

3. Evaluasi prototype
klien mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.

Perulangan ketiga proses ini terus berlangsung hingga semua kebutuhan terpenuhi. Prototype-prototype dibuat untuk memuaskan kebutuhan klien dan untuk memahami kebutuhan klien lebih baik. Prototype yang dibuat dapat dimanfaatkan kembali untuk membangun software lebih cepat, namun tidak semua prototype bisa dimanfaatkan.

Pendekatan prototyping memiliki beberapa keuntungan yaitu:

  • Pemodelan membutuhkan partisipasi aktif dari end-user. Hal ini akan meningkatkan sikap dan dukungan pengguna untuk pengerjaan proyek. Sikap moral pengguna akan meningkat karena system berhubungan nyata dengan mereka.
  • Perubahan dan iterasi merupakan konsekuensi alami dari pengembangan system-sehingga end user memiliki keinginan untuk merubah pola pikirnya. Prototyping lebih baik menempatkan situasi alamiah ini karena mengasumsikan perubahan model melalui iterasi kedalam system yang dibutuhkan.
  • Prototyping adalah model aktif, tidak pasif, sehingga end user dapat melihat, merasakan, dan mengalaminya.
    Kesalahan yang terjadi dalam prototyping dapat dideteksi lebih dini
  • Prototyping dapat meningkatkan kreatifitas karena membolehkan adanya feedback dari end user. Hal ini akan memberikan solusi yang lebih baik.
  • Prototyping mempercepat beberapa fase hidup dari programmer.

Pendekatan prototyping memiliki beberapa kekurangan yaitu:

  • Prototyping memungkinkan terjadinya pengembalian terhadap kode, implementasi, dan perbaikan siklus hidup yang dugunakan untuk mendominasi sistem informasi.
  • Prototyping tidak menolak kebutuhan dari fase analisis sistem. Prototype hanya dapat memecahkan masalah yang salah dan memberi kesempatan sebagai sistem pengembangan konvensional.
    Prototyping dapat mengurangi kreatifitas perancangan.

C. RAD (Rapid Application Development)

Rapid application development (RAD) atau rapid prototyping adalah model proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat). RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat. Waktu yang singkat adalah batasan yang penting untuk model ini. Rapid application development menggunakan metode iteratif (berulang) dalam mengembangkan sistem dimana working model (model bekerja) sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan (requirement) user. RAD mengadopsi model waterfall dan pembangunan dalam waktu singkat dicapai dengan menerapkan component based construction.

Kelemahan dalam model RAD yaitu:

  • Model RAD membutuhkan sumber daya yang besar, terutama untuk proyek dengan skala besar.
  • Proyek bisa gagal karena waktu yang disepakati tidak dipenuhi
  • Sistem yang tidak bisa dimodularisasi tidak cocok untuk model RAD
  • Resiko teknis yang tinggi juga kurang cocok untuk model RAD

Secara umum fase-fase pada RAD adalah sebagai berikut

  • Bussines modeling
  • Data modeling
  • Proses modeling
  • Application generation : RAD mengasumsikan pemakaian teknik 4G (generasi keempat). Selain menciptakan Perangkat Lunak dengan bahasa pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memakai lagi komponen program atau menciptakan komponen yang bisa dipakai lagi.
  • Testing and Turn Over : karena menekankan pada reusability, banyak komponen program yang telah diuji sehingga mengurangi keseluruhan waktu pengujian. Tapi komponen baru harus diuji dan semua interface harus dilatih secara penuh.

D. AGILE SOFTWARE DEVELOPMENT

Agile merupakan adalah jenis pegembangan sistem jangka pendek yang memerlukan adaptasi cepat dan pengembang terhadap perubahan dalam bentuk apapun. Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Agile juga dapat diartikan sebagai sekelompok metodologi pengembangan software yang didasarkan pada prinsip-prinsip yang sama atau pengembangan system jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Menurut Agile Alliance, ada 12 prinsip yang mendorong keberhasilan dalam penerapan Agile Software Development, yaitu:

  • Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
  • Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  • Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
  • Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
  • Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
  • Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
  • Software yang berfungsi adalah ukuran utama dari kemajuan proyek
  • Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
  • Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
  • Kesederhanaan penting
  • Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
    Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.

Kelebihan dari Agile Software Development yaitu:

  • Meningkatkan kepuasan kepada klien
  • Pembangunan system dibuat lebih cepat
  • Mengurangi resiko kegagalan implementasi software dari segi non-teknis
  • Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.

Berikut beberapa model proses yang terdapat pada model Proses Agile :

a. Extreme Programming (XP)

Dipublikasikan oleh Kenn Beck pada tahun 1999 dengan menggunakan pendekatan OOP (Object Oriented Programming), terdiri dari aktivitas perencanaan, aktivitas desain, aktivitas pengkodean dan aktivitas pengujian.

b. Adaptive Software Development (ASD)

Di usulkan oleh Jim Highsmith sebagai tehnik untuk membangun software dan sistem yang komplek, filosofi dari ASD adalah kolaborasi manusia dan tim yang mengatur diri sendiri, aktivitas pada proses ASD adalah speculation, collaboration & learning.

c. Dinamic System Development Method

Menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan. Aktifitas pada DInamic System development method adalah Feasibility Study, Business Study, Functional Model Iteration, Desain & Build iteration, Implementation.

d. SCRUM

Diperkenalkan oleh Jeff Sutherland tahun awal tahun 1990-an, Pengembangan berikutnya dilakukan oleh Schwaber dan Beedle, Scrum memiliki prinsip:

  • ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan emberdayakan satu sama lain
  • proses dapat beradaptasi terhadap perubahan teknis dan bisnis
  • proses menghasilkan beberapa software increment
  • pembangunan dan orang yang membangun dibagi dalam tim yang kecil
  • dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun
  • proses scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan
  • pada metode SCRUM terdapat aktivitas yang dijalankan sebagai berikut: Backlog, Sprints, Scrum Meetings, Demo.

e. Agile Modelling

AM adalah suatu metodologi yang praktis untuk dokumentasi dan pemodelan sistem software. AM adalah kumpulan nilai-nilai, prinsip dan praktek-praktek untuk memodelkan software agar dapat diaplikasian pada software development proyek secara efektif. Prinsip dalam Agile Modelling adalah sebagai berikut:

  • membuat model dengan tujuan
  • mengunakan multiple models
  • travel light
  • isi lebih penting dari pada penampilan
  • memahami model dan alat yang yang digunakan untuk membuat software
  • adaptasi secara lokal

Tantangan Software Development

Dalam setiap kegiatan pasti terdapat berbagai tantangan yang perlu dihadapi. Berbagai tantangan yang terdapat pada Software Development secara umum hanya terdapat 2 tantangan, yaitu Tehnologi dan User Need. Mengapa hanya 2 hal tersebut? Jawabanya adalah karena 2 hal tersebut sudah mencakup semua hal yang terdapat pada Software Development.

Tantangan yang pertama adalah tehnologi. Karena semakin lama maka tehnologi yang digunakan untuk mengembangkan software juga akan semakin baru atau berkembang. Tantangan yang kedua adalah user need (kebutuhan pengguna). Percuma kita dapat mengembangkan sebuah software semakin canggih tetapi tidak sesuai dengan sudut pangdang dan kebutuhan user. Jika hal tersebut terjadi, maka software yang dikembangkan akan tercipta dengan sia sia.

About