Minggu, 22 April 2012

SOFTWARE DEVELOPMENT METHODE



Menurut  IEEE , Pengembangan software (software engineering ) adalah : Aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software, dengan kata lain software engineering merupakan sebuah metodologi pengembangan perangkat lunak (software) yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi sistem hingga pada tahap pemeliharaan sistem setelah digunakan dengan tujuan untuk membuat perangkat lunak yang tepat dengan metode yang tepat.

Hal yang perlu di pertimbangkan dalam pengembangan software yaitu :
1.  Produk dan software (terdiri dari program, dokumen, dan data)
2.  Proses pengembangannya (terdiri dari proses manajemen dan proses teknikal)

System Development Life Cycle (SDLC) merupakan beberapa tahap pengembangan pemantauan produk dari perangkat lunak.  Contoh dari SDLC antara lain model waterfall, model V, model spiral, prototyping dan lain-lain. Sedangkan proses manajemen dalam pengembangan software lunak terdiri atas manajemen proyek, configuration management dan quality assurance management dan proses teknikal merupakan metode yang diaplikasikan pada tahap tertentu dalam pengembangan software, yang didalamnya termasuk metode analisis, metode desain, metode pemrograman, dan metode testing.

Tiga Elemen kunci dalam Pengembangan Software :

1.  Metode
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Terdiri dari serangkaian tugas seperti perencanaan dan estimasi proyek
Software merupakan bagian terbesar dari sistem, sehingga pekerjaan dimulai dengan cara      menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti hardware, software lain dan database

Analisis kebutuhan sistem dan software
Merupakan suatu proses pengumpulan kebutuhan software untuk mengerti sifat -sifat program yang dibentuk software engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan interfase terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan ditinjau bersama-sama klien.
Desain struktur data
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu struktur data, arsitektur software dan rincian prosedur.
* Arsitektur program dan prosedur algoritma
Proses desain menterjemahkan kebutuhan kedalam representasi software yang dapat diukur kualitasnya sebelum coding dimulai. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
* Coding
Merupakan proses penterjemahan desain ke dalam bentuk yang dapat dibaca oleh mesin
* Testing dan pemeliharaan
Setelah objek program dihasilkan, testing program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.  Sementara proses pemeliharaaan atau maintenance dilakukan karena software mengalami error, atau harus diadaptasi untuk menyesuaikan dengan lingkungan external.

2. Peralatan atau tools
Peralatan pengembangan software memberikan dukungan atau semiautomasi untuk metode, contohnya:
1. CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hardware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
2. Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
3. Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE.

3.  Prosedur
Prosedur terdiri dari, urut-urutan di mana metode tersebut diterapkan, dokumen, laporan-laporan, formulir-formulir yang diperlukan, kontrol kualitas software, dan koordinasi perubahan yang terjadi pada software.

       Metode System Development Life Cycle (SDLC) :
1. Rekayasa dan Pemodelan Sistem/Informasi
Karena perangkat lunak merupakan bagian dari suatu sistem maka langkah pertama dimulai dengan membangun syarat semua elemen sistem dan mengalokasikan ke perangkat lunak dengan memeperhatiakn hubungannya dengan manusia, perangkat keras dan database.

2. Analisis Kebutuhan Perangkat Lunak
Proses menganalisis dan pengumpulan kebutuhan sistem yang sesuai dengan domain informasi tingkah laku, unjuk kerja, dan antar muka (interface) yang diperlukan. Kebutuhan-kebutuhan tersebut didokumentasikan dan dilihat lagi dengan pelanggan.

3. Desain
Proses desain akan menerjemahkan syarat kebutuhan ke sebuah perancangan perangkat lunak yang dapat diperkirakan sebelum dibuat coding. Proses ini berfokus pada : struktur data, arsitektur perangkat lunak, representasi interface, dan detail (algoritma) prosedural.

4. Pengkodeaan (Coding)
Pengkodean merupakan proses menerjemahkan desain ke dalam suatu bahasa yang bisa dimengerti oleh komputer.

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

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




SPIRAL MODEL



Proses model yang lain, yang cukup populer adalah Spiral Model. Model ini juga cukup baru ditemukan, yaitu pada sekitar tahun 1988 oleh Barry Boehm pada artikel A Spiral Model of Software Development and Enhancement. Spiral model adalah salah satu bentuk evolusi yang menggunakan metode iterasi natural yang dimiliki oleh model prototyping dan digabungkan dengan aspek sistimatis yang dikembangkan dengan model waterfall. Tahap desain umumnya digunakan pada model Waterfall, sedangkan tahap prototyping adalah suatu model dimana software dibuat prototype (incomplete model), “blue-print”-nya, atau contohnya dan ditunjukkan ke user / customer untuk mendapatkan feedback-nya. Jika prototype-nya sudah sesuai dengan keinginan user / customer, maka proses SE dilanjutkan dengan membuat produk sesungguhnya dengan menambah dan memperbaiki kekurangan dari prototype tadi.
Model ini juga mengkombinasikan top-down design dengan bottom-up design, dimana top-down design menetapkan sistem global terlebih dahulu, baru diteruskan dengan detail sistemnya, sedangkan bottom-up design berlaku sebaliknya. Top-down design biasanya diaplikasikan pada model waterfall dengan sequential-nya, sedangkan bottom-up design biasanya diaplikasikan pada model prototyping dengan feedback yang diperoleh. Dari 2 kombinasi tersebut, yaitu kombinasi antara desain dan prototyping, serta top-down dan bottom-up, yang juga diaplikasikan pada model waterfall dan prototype, maka spiral model ini dapat dikatakan sebagai model proses hasil kombinasi dari kedua model tersebut. Oleh karena itu, model ini biasanya dipakai untuk pembuatan software dengan skala besar dan kompleks.
Spiral model dibagi menjadi beberapa framework aktivitas, yang disebut dengan task regions. Kebanyakan aktivitas2 tersebut dibagi antara 3 sampai 6 aktivitas. Berikut adalah aktivitas-aktivitas yang dilakukan dalam spiral model:
· Customer communication. Aktivitas yang dibutuhkan untuk membangun komunikasi yang efektif antara developer dengan user / customer terutama mengenai kebutuhan dari customer.
· Planning. Aktivitas perencanaan ini dibutuhkan untuk menentukan sumberdaya, perkiraan waktu pengerjaan, dan informasi lainnya yang dibutuhkan untuk pengembangan software.
· Analysis risk. Aktivitas analisis resiko ini dijalankan untuk menganalisis baik resiko secara teknikal maupun secara manajerial. Tahap inilah yang mungkin tidak ada pada model proses yang juga menggunakan metode iterasi, tetapi hanya dilakukan pada spiral model.
· Engineering. Aktivitas yang dibutuhkan untuk membangun 1 atau lebih representasi dari aplikasi secara teknikal.
· Construction & Release. Aktivitas yang dibutuhkan untuk develop software, testing, instalasi dan penyediaan user / costumer support seperti training penggunaan software serta dokumentasi seperti buku manual penggunaan software.
· Customer evaluation. Aktivitas yang dibutuhkan untuk mendapatkan feedback dari user / customer berdasarkan evaluasi mereka selama representasi software pada tahap engineering maupun pada implementasi selama instalasi software pada tahap construction and release.
Berikut adalah gambar dari spiral model secara umum :

Satu lingkaran dari bentuk spiral pada spiral model dibagi menjadi beberapa daerah yang disebut dengan region. Region tersebut dibagi sesuai dengan jumlah aktivitas yang dilakukan dalam spiral model. Tentunya lingkup tugas untuk project yang kecil dan besar berbeda. Untuk project yang besar, setiap region berisi sejumlah tugas-tugas yang tentunya lebih banyak dan kompleks daripada untuk project yang kecil. SE berjalan dari inti spiral berjalan mengitari sirkuit per sirkuit. Sebagai contoh untuk sirkuit pertama dilakukan untuk pembangunan dari spesifikasi dari software dengan mencari kebutuhan dari customer. Untuk sirkuit pertama harus menjalani semua aktivitas yang didefinisikan. Setelah 1 sirkuit terlewati lanjut ke tugas selanjutnya misalnya membangun prototype. Tugas ini juga harus mengitari 1 sirkuit dan begitu terus selanjutnya sampai project selesai.
Tidak seperti model-model konvesional dimana setelah SE selesai, maka model tersebut juga dianggap selesai. Akan tetapi hal ini tidak berlaku untuk spiral model, dimana model ini dapat digunakan kembali sepanjang umur dari software tersebut. Pada umumnya, spiral model digunakan untuk beberapa project seperti Concept Development Project (proyek pengembangan konsep), New Product Development Project (proyek pengembangan produk baru), Product Enhancement Project (proyek peningkatan produk), dan Product Maintenance Project (proyek pemeliharaan proyek). Keempat project tersebut berjalan berurutan mengitari sirkuit dari spiral. Sebagai contoh setelah suatu konsep dikembangkan dengan melalui aktivitas2 dari spiral model, maka dilanjutkan dengan proyek selanjutnya yaitu pengembangan produk baru, peningkatan produk, sampai pemeliharaan proyek. Semuanya melalui sirkuit2 dari spiral model.
Mengapa spiral model begitu populer? Pendekatan dengan model ini sangat baik digunakan untuk pengembangan sistem software dengan skala besar. Karena progres perkembangan dari SE dapat dipantau oleh kedua belah pihak baik developer maupun user / customer, sehingga mereka dapat mengerti dengan baik mengenai software ini begitu juga dengan resiko yang mungkin didapat pada setiap aktivitas yang dilakukan. Selain dari kombinasi 2 buah model yaitu waterfall dan prototyping, kelebihan dari software ini ada pada analisis resiko yang dilakukan, sehingga resiko tersebut dapat direduksi sebelum menjadi suatu masalah besar yang dapat menghambat SE. Model ini membutuhkan konsiderasi langsung terhadap resiko teknis, sehingga diharapkan dapat mengurangi terjadinya resiko yang lebih besar. Sebenarnya dengan menggunakan prototype juga bisa menghindari terjadinya resiko yang muncul, tetapi kelebihan dari model ini yaitu dilakukannya proses prototyping untuk setiap tahap dari evolusi produk secara kontinu. Model ini melakukan tahap2 yang sudah sangat baik didefinisikan pada model waterfall dan ditambah dengan iterasi yang menyebabkan model ini lebih realistis untuk merefleksikan dunia nyata. Hal-hal itulah yang menjadi kelebihan menggunakan spiral model.
Meskipun banyak kelebihan tetapi tentu masih ada kekurangannya. Kekurangannya ada pada masalah pemikiran user / customer dimana mereka pada umumnya tidak





Unified Modeling Languag (UML)






·                     Unified Modeling Language (UML) adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat tool untuk mendukung pengembangan sistem tersebut.UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980-an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP. UML merupakan dasar bagi perangkat (tool) desain berorientasi objek dari IBM.

·                     UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun, dan mendokumentasikan suatu sistem informasi. UML dikembangkan sebagai suatu alat untuk analisis dan desain berorientasi objek oleh Grady Booch, Jim Rumbaugh, dan Ivar Jacobson. Namun demikian UML dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi.Penggunaan UML dalam industri terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri peranti lunak dan pengembangan sistem.
Contoh Diagram UML







·                     UML menyediakan 10 macam diagram untuk memodelkan aplikasi berorientasi objek, Yaitu :
o                  Use Case Diagram untuk memodelkan proses bisnis.
o                  Conceptual Diagram untuk memodelkan konsep-konsep yang ada di dalam aplikasi.
o                  Sequence Diagram untuk memodelkan pengiriman pesan (message) antar objects.
o                  Collaboration Diagram untuk memodelkan interaksi antarobjects.
o                  State Diagram untuk memodelkan perilaku objects di dalam sistem.
o                  Activity Diagram untuk memodelkan perilaku Use Casesdan objects di dalam system.
o                  Class Diagram untuk memodelkan struktur kelas.
o                  Object Diagram untuk memodelkan struktur object.
o                  Component Diagram untuk memodelkan komponen object.
o                  Deployment Diagram untuk memodelkan distribusi aplikasi.
·                     4 macam diagram yang paling sering digunakan dalam pembangunan aplikasi berorientasi object, yaitu : 
o                  use case diagram


o                  Collaboration Diagram


o                  Class Diagram


o                  sequence diagram



Langkah-Langkah Penggunaan UML

Berikut ini adalah tips pengembangan piranti lunak dengan menggunakan UML:

1. Buatlah daftar business process dari level tertinggi untuk mendefinisikan aktivitas dan proses yang mungkin muncul.

2. Petakan use case untuk tiap business process untuk mendefinisikan dengan tepat fungsionalitas yang harus disediakan oleh sistem. Kemudian perhalus use case diagram dan lengkapi dengan requirement, constraints dan catatan-catatan lain.

3. Buatlah deployment diagram secara kasar untuk mendefinisikan arsitektur fisik sistem.

4. Definisikan requirement lain (non-fungsional, security dan sebagainya) yang juga harus disediakan oleh sistem.

5. Berdasarkan use case diagram, mulailah membuat activity diagram.

6. Definisikan objek-objek level atas (package atau domain) dan buatlah sequence dan/atau collaboration diagram untuk tiap alir pekerjaan. Jika sebuah use case memiliki kemungkinan alir normal dan error, buatlah satu diagram untuk masing-masing alir.

7. Buarlah rancangan user interface model yang menyediakan antarmuka bagi pengguna untuk menjalankan skenario use case.

8. Berdasarkan model-model yang sudah ada, buatlah class diagram. Setiap package atau domain dipecah menjadi hirarki class lengkap dengan atribut dan metodanya. Akan lebih baik jika untuk setiap class dibuat unit test untuk menguji fungsionalitas class dan interaksi dengan class lain.

9. Setelah class diagram dibuat, kita dapat melihat kemungkinan pengelompokan class menjadi komponen-komponen. Karena itu buatlah component diagram pada tahap ini. Juga, definisikan tes integrasi untuk setiap komponen meyakinkan ia berinteraksi dengan baik.

10. Perhalus deployment diagram yang sudah dibuat. Detilkan kemampuan dan requirement piranti lunak, sistem operasi, jaringan, dan sebagainya. Petakan komponen ke dalam node.

11. Mulailah membangun sistem. Ada dua pendekatan yang dapat digunakan :
• Pendekatan use case, dengan meng-assign setiap use case kepada tim pengembang tertentu untuk mengembangkan unit code yang lengkap dengan tes.
• Pendekatan komponen, yaitu meng-assign setiap komponen kepada tim pengembang tertentu.

12. Lakukan uji modul dan uji integrasi serta perbaiki model berserta codenya. Model harus selalu sesuai dengan code yang aktual.

13. Piranti lunak siap dirilis.
Tool Yang Mendukung UML

Saat ini banyak sekali tool pendesainan yang mendukung UML, baik itu tool komersial maupun opensource. Beberapa diantaranya adalah:
·                     Rational Rose (www.rational.com)
·                     Together (www.togethersoft.com)
·                     Object Domain (www.objectdomain.com)
·                     Jvision (www.object-insight.com)
·                     Objecteering (www.objecteering.com)
·                     MagicDraw (www.nomagic.com/magicdrawuml)
·                     Visual Object Modeller (www.visualobject.com)

Tabel Perbedaan Software Development Approach



Jenis
Sistem Kerja
Penekanan
Konsep
Pendekatan
Waterfall
Proyek dibagi menjadi fase yang berurutan, dengan beberapa tumpang tindih dan splashback diterima antara fase.
Penekanan pada perencanaan, jadwal waktu, tanggal target, anggaran dan implementasi dari keseluruhan sistem pada satu waktu.
Kontrol ketat dijaga selama umur proyek melalui dokumentasi tertulis yang luas, review formal, dan persetujuan / signoff oleh pengguna dan manajemen informasi teknologi yang terjadi pada akhir fase yang paling sebelum memulai tahap berikutnya.

Pendekatan teknik tradisional diterapkan untuk rekayasa perangkat lunak
Prototyping
Upaya untuk mengurangi risiko proyek yang melekat dengan memecah proyek ke dalam segmen yang lebih kecil dan menyediakan lebih banyak kemudahan-perubahan selama proses pembangunan.
Penekanan pada pengurangan waktu dan biaya, dan peningkataan keterlibatan pengguna
Kecil mock-up dari sistem yang dibentuk setelah melalui proses berulang-ulang sampai modifikasi prototipe berkembang untuk memenuhi kebutuhan pengguna.

Pendekatan untuk menangani bagian-bagian yang dipilih dari metodologi, pengembangan yang lebih besar yang lebih tradisional
Incremental Development
Cara kerja mirip waterfall, serangkaian Air terjun mini dilakukan di mana semua fase Waterfall tersebut selesai untuk sebagian kecil dari suatu sistem, sebelum melanjutkan ke kenaikan berikutnya
Penekanan pada sistem waktu kerja yang lebih cepat dan pengurangan resiko kerja karena prosedur yang lebih sederhana
Konsep perangkat lunak awal, analisis persyaratan, dan desain arsitektur dan inti sistem didefinisikan melalui Waterfall, diikuti dengan berulang Prototyping, yang berpuncak dalam memasang prototipe akhir, sistem kerja.
Pendekatan metodelogi pengembangan sistem

Rapid Application Development (RAD)
Model RAD hampir sama dengan model waterfall, bedanya siklus pengembangan yang ditempuh model ini sangat pendek dengan penerapan teknik yang cepat.

RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat.
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 dan selanjutnya disingkirkan
proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat).
Spiral
Setiap perjalanan sekitar melintasi spiral empat kuadran dasar: (1) menentukan tujuan, alternatif, dan kendala dari iterasi, (2) mengevaluasi alternatif; Mengidentifikasi dan mengatasi risiko, (3) mengembangkan dan memverifikasi kiriman dari iterasi, dan (4) merencanakan iterasi berikutnya
Penekanan pada penilaian risiko dan meminimalkan risiko proyek dengan memecah proyek ke dalam segmen yang lebih kecil dan menyediakan lebih banyak kemudahan-perubahan selama proses pengembangan
Konsep dengan memulai setiap siklus dengan identifikasi pemangku kepentingan dan kondisi menang mereka, dan mengakhiri setiap siklus dengan review dan komitmen
Pendekatan pada penggabungkan keuntungan dari konsep top-down dan bottom-up.
Unified Modeling Languange
UML menggabungkan teknik dari pemodelan data (entitas diagram hubungan), pemodelan bisnis (alur kerja), pemodelan objek, dan pemodelan komponen
Penekanan pada penilaian standar bahasa pemodelan tunggal yang umum dan banyak digunakan
UML menggabungkan teknik dari pemodelan data (entitas diagram hubungan), pemodelan bisnis (alur kerja), pemodelan objek, dan pemodelan komponen
Pendekatan pada  standar bahasa pemodelan di bidang berorientasi objek rekayasa perangkat lunak