Khairul Sani (13/359750/PTK/9462) Yosua Alvin Adi Soetrisno (13/359461/PTK/9439) S2 Teknologi Informasi Teknik Elektro dan Teknologi Informasi Universitas Gadjah Mada
Software adalah suatu program komputer, prosedur, data dan semua dokumentasi yang berhubungan dengan operasi pada sistem computer atau dengan kata lain software merupakan kumpulan dari objek membentuk konfigurasi yang didalamnya termasuk program, documen, dan data. Menurut IEEE, pengembangan software (software engineering) adalah aplikasi sistematik, disiplin, pendekatan kualitatif untuk pengembangan, operasi dan pemeliharaan dari software dengan kata lain software engineering merupkan sebuah metodologi pengembangan perangkat lunak (software) yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesfikasi sistem hingga pada tahap pemeliharaan sistem setelah digunakan dengan tujuan untuk membuat perangkat lunak yang tepat dengan metode yang tepat. Adapun beberapa metode pengembangan software, yaitu seperti spiral, waterfall, RAD, XP, dan lain sebagainya. Pada makalah ini akan dibahas mengenai model prototype dan agile model. I. Prototype Model a. Pendahuluan Prototype memiliki tujuan untuk memodelkan sebuah sistem atau merupakan aspek khusus dari sebuah sistem. Prototype awal dapat dikembangkan dengan menggunakan dokumentasi dari user yang berupa rangkaian cerita atau proses bisnis yang bisa dituangkan dalam bentuk navigasi atau secara lebih mudah dengan menggunakan spreadsheet yang berisi formula dan juga report yang biasa dipakai oleh user. Prototype dapat memberikan wawasan dan juga pemahaman yang lebih luas tentang lingkup, asal mula kebutuhan, dan harapan dari aktifitas pengembangan walaupun memiliki fungsionalitas dan fitur yang terbatas. Sering terjadi seorang user hanya mendefinisikan secara umum apa yang dikehendakinya tanpa menyebutkan secara detail output apa saja yang dibutuhkan, pemrosesan, dan data-data apa saja yang dibutuhkan. Sebaliknya disisi developer kurang memperhatikan efesiensi algoritma, kemampuan sistem operasi, dan pengalaman dalam menggunakan interface yang menghubungkan manusia dan komputer. Prototype secara khusus berguna untuk mengijinkan developer melakukan komunikasi dengan user secara dua arah. Konsep, ide, dan pendekatan bisa ditelaah lebih jauh untuk mendapatkan pemahaman yang lebih baik. Feedback dari user juga bisa diberikan untuk memandu proses modifikasi dari komponen yang telah dibuat, dengan elemen khusus atau interpretasi juga fitur yang akan dilanjutkan, dirubah, atau dibuang. Developer secara lebih jauh dapat menggunakan prototyping untuk memperoleh informasi yang lebih jauh tentang bentuk interface, sifat, kebiasaan dan juga fungsionalitas dari sistem keseluruhan. User dapat melihat developer menindaklanjuti kebutuhan user sehingga masing-masing bisa memiliki visi yang sama. Masalah dan kesalahan yang diketahui pada saat prototyping akan lebih efektif untuk diperbaiki daripada memperbaiki sistem yang telah jadi secara keseluruhan. Prototyping membantu mengurangi resiko terjadinya kesalahan. Dengan prototyping developer lebih mungkin untuk mengembangkan solusi yang dapat menyelesaikan masalah sebenarnya dan sesuai dengan kebutuhan khusus dan harapan yang dimiliki user. Meskipun prototyping dapat digunakan sebagai model proses yang berdiri sendiri, namun lebih sering digunakan sebagai teknik yang diimplementasikan bersama dengan model-model yang lain. Tanpa memperhatikan cara bagaimana model ini dipakai, paradigma prototyping membantu developer dan user untuk memiliki pemahaman yang lebih baik tentang apa yang akan dibangun ketika kebutuhan yang diinginkan tidak diuraikan secara jelas. Paradigma prototyping diawali dengan komunikasi antara developer dan user yang bertemu dan mendefinisikan sasaran-sasaran menyeluruh dari perangkat lunak yang akan dibangun, mengidentifikasi kebutuhan apa saja yang diinginkan. Iterasi prototyping direncanakan secara cepat, demikian juga pemodelan dalam bentuk rancangan segera dibuat.
Gambar 1. Prototype Model b. Siklus pada Prototype Model 1. Communication Developer dan user bertemu dan menentukan tujuan umum, kebutuhan yang diinginkan, dan gambaran bagian-bagian yang akan dibutuhkan berikutnya. 2. Quick Plan Perancangan dilakukan cepat dan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype. 3. Modelling Quick Design Berfokus pada representasi aspek software yang bisa dilihat user. Modelling Quick Design cenderung ke pembuatan prototipe. 4. Construction of Prototype Membangun kerangka atau rancangan prototype dari software yang akan dibangun. 5. Deployment Delivery & Feedback Prototype yang telah dibuat oleh developer akan disebarkan kepada user untuk dievaluasi, kemudian user akan memberikan feedback yang akan digunakan untuk merevisi kebutuhan software yang akan dibangun. Perulangan proses ini terus berlangsung hingga semua kebutuhan terpenuhi. Prototype dibuat untuk memuaskan kebutuhan user dan untuk memahami kebutuhan user dengan lebih baik. Prototype yang dibuat dapat dimanfaatkan kembali untuk membangun software secara lebih cepat, namun tidak semua prototype bisa dimanfaatkan.
c. Tahapan-tahapan Prototyping
Gambar 2. Tahapan Prototype Tahapan-tahapan dalam prototyping adalah sebagai berikut: 1. Pengumpulan kebutuhan (Goal) User dan developer bersama-sama mendefinisikan format dari seluruh komponen yang akan dipakai pada software terutama secara aspek user interface, mengidentifikasi semua proses bisnis, dan juga memberikan garis besar sistem akan dibuat. Detail yang rumit dari proses perancangan internal dan aspek eksternal seperti performa dan keamanan bisa diabaikan pada tingkat ini. 2. Penentuan fungsionalitas program (Functionality) Menunjukkan bagaimana esensi sistem akan bekerja sehingga bisa bekerja secara terstruktur dan juga memberikan beberapa detail dari konten yang biasanya disediakan untuk dikomunikasikan lebih lanjut. Prototype merupakan model dengan fungsional yang lengkap setelah diberi komentar teknis karena semakin kompleks suatu sistem akan membentuk semakin banyak pemahaman yang perlu dipelajari untuk menggunakan sistem. Inilah yang membedakan prototype dengan model karena pada pemodelan seperti autocad, objek rancangan tidak harus bisa berfungsi. 3. Membangun prototyping (Develop) Membangun prototyping dengan membuat perancangan sementara yang dapat memenuhi permintaan dasar, yang berfokus pada penyediaan user interface (misalnya dengan membuat input dan format output). Fitur yang ada tidak berjalan sama persis seperti pada software sebenarnya dan solusi (workaround) digunakan untuk memberi kesamaan tampilan dan rasa (pengalaman) pada user pada prototype yang dibangun. 4. Review dari prototype (Evaluation) Prototype yang dikembangkan dipresentasikan ke user dan juga stakeholder yang penting pada proyek terkait. Feedback dikumpulkan secara terorganisasi dan digunakan untuk pengembangan lebih jauh dari produk yang sedang dikembangkan. Jika prototype sudah sesuai maka bisa langsung dilanjutkan untuk melakukan pemrograman sistem (mengkodekan sistem). Jika belum sesuai prototype direvisi dengan mengulangi langkah satu sampai tiga. Pada tahap ini peninjan ulang dari komentar akan didiskusikan dan negosiasi terjadi antara customer berdasarkan faktor keterbatasan waktu dan biaya dan juga kelayakan secara teknis untuk implementasi sesungguhnya. Siklus ini berulang ketika harapan dari user belum bisa terpenuhi. 5. Mengkodekan sistem Dalam tahap ini prototyping yang sudah disepakati akan diterjemahkan ke dalam program sesungguhnya menggunakan database dan bahasa pemrograman yang sesuai. 6. Menguji sistem Setelah sistem sudah menjadi suatu software yang siap pakai, maka dilakukan pengujian semua fungsi yang ada sebelum digunakan. Pengujian ini dilakukan dengan metode White Box yang meliputi pengujian basis path (untuk mengukur komplektisitas algoritma, pengujian kondisi dan pengujian loop dan juga Black Box untuk mencari solusi error yang terjadi pada fungsional program. 7. Evaluasi Sistem User akan mengevaluasi apakah sistem sudah sesuai dengan apa yang diharapkan. d. Keunggulan dan Kelemahan Prototyping Keunggulan prototyping adalah sebagai berikut: 1. Adanya komunikasi yang baik antara developer dan user. 2. Developer dapat bekerja lebih baik dalam menentukan kebutuhan user. 3. User berperan aktif dalam pengembangan sistem. 4. Lebih menghemat waktu dalam pengembangan sistem. 5. Penerapan menjadi lebih mudah karena user mengetahui apa yang diharapkannya. Kelemahan prototyping adalah sebagai berikut: 1. User terkadang tidak melihat atau menyadari bahwa software yang ada belum menyertakan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangka waktu lama. 2. Developer biasanya ingin lebih cepat dalam menyelesaikan proyek, sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping yang lebih cepat selesai, tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru dari sistem keseluruhan, sehingga sering terjadi perombakan besar dari prototype yang memakan waktu lebih lama. 3. Hubungan user dengan sistem yang disediakan terkadang tidak mencerminkan teknik perancangan yang baik. Prototyping bekerja dengan baik pada penerapan-penerapan yang berciri sebagai berikut: a. Resiko tinggi yaitu untuk masalah-masalah yang tidak terstruktur dengan baik, membutuhkan perubahan yang besar dari waktu ke waktu, mulai dengan adanya kebutuhan data yang tidak menentu. b. Interaksi user dan sistem penting. Sistem harus menyediakan percakapan dua arah antara user dan sistem. c. Perlunya penyelesaian yang cepat d. Perilaku pemakai yang sulit ditebak e. Sitem yang inovatif. Sistem tersebut membutuhkan cara penyelesaian masalah dan penggunaan perangkat keras yang canggih. f. Perkiraan tahap penggunaan sistem yang pendek f. Dimensi pada Prototyping Prototype dapat memiliki dimensi horisontal dan vertikal. Dimensi horisontal menampilkan user interface dari produk dan memberi pandangan yang lebih luas dari sistem keseluruhan. Prototype vertikal pada sisi yang lain merupakan perluasan dari detail pada fungsi yang lebih spesifik atau pada sub sistem dari produk. Tujuan dari prototype horisontal dan vertikal berbeda. Prototype horisontal digunakan untuk memperoleh informasi pada tingkat user interface dan kebutuhan proses bisnis. Hal ini biasa ditunjukkan pada demo penjualan untuk mendapat nilai bisnis pada pasar. Prototype vertikal lebih secara teknis pada umumnya, digunakan untuk memperoleh detail dari fungsi yang tepat dari sub sistem, sebagai contoh kebutuhan database dan beban pemrosesan data yang diberikan sub sistem. g. Tipe Prototype Software Ada beberapa tipe prototype yang digunakan sebagai berikut: 1. Throwaway/Rapid Prototyping Disebut juga sebagai rapid atau close ended prototyping. Tipe prototyping ini menggunakan usaha yang sangat kecil dengan analisis sistem yang minimal untuk membangun prototype. Ketika kebutuhan sebenarnya telah bisa dipahami, prototype lalu dibuang dan sistem sebenarnya dikembangkan dengan pemahaman yang lebih pada kebutuhan user. Kelebihan dari metode ini adalah secara signifikan mengurangi resiko dari poyek dan mempunyai timeline proyek yang singkat. Kekurangannya adalah prototype hanya digunakan untuk demo, dengan tujuan yang terbatas, tidak dapat dijadikan acuan untuk proyek ke depan. 2. Evolutionary Prototyping Disebut juga breadboard prototyping yang berdasarkan pada pengembangan fitur fungsional dengan fungsionalitas yang minimal pada tahap awal. Prototype mengembangkan form yang menjadi landasan dari prototype selanjutnya di atas sistem keseluruhan yang akan dibangun. Evolutionary prototype digunakan bila kebutuhan sudah dipahami dengan baik, disertakan pada prototype dan kebutuhan akan ditambahkan ketika bisa dipahami.
Gambar 3. Evolutionary Prototyping Kelebihan dari sistem ini adalah developer selalu mencari cara untuk mengembangkan sistem yang ada, meningkatkan kesempatan untuk membuat user menjadi puas dengan sitem kerjanya, dapat digunakan walaupun kebutuhan belum terbentuk, dan pengiriman sistem yang lebih cepat. Kekurangannya adakah metode ini dapat digunakan untuk menghindari dokumentasi dari kebutuhan sistem, manajemen dibutuhkan, maintenance jangka panjang akan mahal, ide perancangan yang tidak pasti, informasi dapat hilang melalui banyak penambahan yang terjadi. 3. Incremental prototyping Incremental prototyping mengacu pada membangun beberapa prototype fungsional dari beberapa variasi sub sistem dan mengintegrasikan beberapa prototype yang tersedia menjadi sebuah sistem yang lengkap.
4. Extreme prototyping Extreme prototyping digunakan pada domain pengembangan web. Extreme prototyping terdiri dari tiga fase sekuensial. Pertama, sebuah prototype dasar dengan semua halaman dipresentasikan dalam format html. Lalu pemrosesan data disimulasikan dengan layer layanan prototype. Terakhir layanan akan diimplementasikan dan diintegrasikan menjadi prototype final. 5. Low fidelity prototyping Low fidelity programming merupakan fungsi yang dibatasi secara umum, dengan usaha interaksi prototyping yang terbatas. Prototype dibangun untuk menggambarkan konsep, merancang alternatif dan layout dari tampilan. Prototype dimaksudkan untuk mendemokan tampilan dan pengalaman dari interface secara umum. Prototype digunakan untuk memberi edukasi, berkomunikasi dan memberi informasi, namun tidak untuk latihan, testing, atau sebagai basis yang akan diprogram. Low fidelity digunakan pada tahap awal perancangan, untuk memperlihatkan pendekatan konseptual tanpa melihat lebih jauh dari segi pengembangan. 6. High fidelity prototyping High fidelity prototyping merepresentasikan fungsionalitas utama dari sebuah produk user interface. Sistem ini merupakan sistem yang benar-benar interaktif. User dapat memasukkan data pada field yang tersedia, memberikan respon pada pesan, memilih icon untuk membuka windows dan berinteraksi dengan user interface yang digunakan pada sistem sebenarnya. Sistem ini mengesampingkan kecepatan untuk memperoleh akurasi. Membangun high fidelity akan memakan resource dan memakan biaya yang besar. Perbandingan low fidelity dan high fidelity prototyping dapat dilihat pada Gambar 4.
Gambar 4. Low Fidelity vs High Fidelity Prototyping h. Metodologi yang dipakai pada prototyping Berikut merupakan metodologi yang dipakai pada prototyping sesuai dengan jenis dan juga posisinya pada tahapan prototyping.
Gambar 5. Metodologi Prototyping Pada tahap awal design maka sistem dibangun menggunakan throw-away prototyping. Ketika melakukan demo ke user, yang juga merupakan investigasi dari prototype tersebut, mengijinkan perancangan untuk memenuhi kebutuhan user secara lebih presisi sesuai dengan teknik evaluasi yang digunakan pada sistem akhir. Perbaikan dari throw away prototype adalah tentang kebutuhan yang telah diselesaikan. Evolutionary prototyping digunakan untuk membangun model prototype (sebuah sistem yang akurat dan memiliki penjelasan lengkap). Prototype ini dapat dipelajari dengan beberapa kondisi yang disimulasikan. Perbaikan di model prototype, adalah mengacu pada sistem aktual, telah dikerjakan dan merupakan sistem akhir yang dikeluarkan setelah melakukan testing.
i. User Interface Prototyping Pengembangan dari sistem software yang interaktif dengan graphical user interface (GUI) menjadi sangat umum dan diterima dari sistem yang bergantung pada kualitas dari GUI. Prototyping merupakan arti yang baik dalam menciptakan ide tentang bagaimana GUI dapat dirancang dan membantu mengevaluasi kualitas dari solusi pada tahap awal. Klasifikasi pada user interface dapat menggunakan presentation prototypes, functional prototype, breadboards, dan juga pilot sistem. j. Resiko Prototyping User akan menganggap bahwa sistem tersebut adalah sistem sebenarnya sehingga menghasilkan persepsi yang tidak realistis dari progress. Implementer akan memilih pilihan yang buruk karena prototype menjadi justifikasi bagaimana sistem akhir bekerja, sehingga akan mencoba mengembangkan sistem sebenarnya yang hampir mirip dengan prototype. Prototype tidak identik dengan sistem sebenarnya, user bisa melakukan interaksi yang berbeda karena karakteristik yang berbeda, harus melakukan interpretasi pengalaman menggunakan prototype dengan teliti. II. Agile Model a. Pendahuluan Software process dalam perangkat lunak digunakan untuk merancang atau membangun suatu perangkat lunak, dengan perkembangan teknologi yang sangat pesat metodologi perangkat lunak juga terjadi perubahan atau penambahan requirements. Dari model waterfall hingga model-model incremental memiliki karakteristik yang berbeda dalam membangun suatu perangkat lunak. Semua model yang berkembang sebelunya belum bias menangani kemungkinan perubahan (ditengah jalan) ataupun penambahan requirement. Padahal untuk mencapai keberhasilan dalam sebuah perancangan dan pembangunan perangkat lunak adalah kesesuaian hasil dengan requirement yang ada dan memberikan kepuasan pada pengguna. Pada tahun 90-an diperkenalkan dengan software process model baru yang dikenal dengan nama agile methods, kata agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Metodologi yang dikenal sebagai agile methods ini mengutamakan fleksibilitas terhadap perubahan-perubahan yang terjadi selama pengembangan. Bahkan perubahan ataupun penambahan pada saat fase terakhir pun teratasi apabila menggunakan metodologi ini.
b. Pengertian Agile methods dikembangkan karena pada metodologi tradisional terdapat banyak hal yang membuat proses pengembangan tidak dapat berhasil dengan baik sesuai tuntutan user. Konsep Agile Software Development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus. Agile method juga dapat diartikan 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. c. Perbedaan Agile dan Model klasik 1. Metode agile memiliki konsep yang rumit dibandingkan dengan metode klasik 2. Metode klasik relatif lebih lama dalam pengerjaan proyeknya dibandingkan dengan model metode agile 3. Resiko kegagalan lebih rendah dibandingkan dengan metode klasik d. Prinsip Agile Software Agile development methods terdefinisi dalam empat nilai, biasa di sebut Agile Alliances 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. Dari manifesto di atas Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer, team leader dan proyek managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Dari manifesto di atas pula dapat dijabarkan beberapa prinsip agile software. Prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development: 1. Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus. 2. Menerima perubahan kebutuhan, sekalipun diakhir pengembangan. 3. Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan. 4. Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan. 5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek. 6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien 7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek 8. Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan 9. Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile 10. Kesederhanaan penting 11. Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri 12. Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya. Dua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebur Agile Process Model berusaha untuk menyiasati tiga asumsi penting tentang proyek software pada umumnya: 1. Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek. 2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan. 3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan. e. Kelebihan dari Agile Method 1. Meningkatkan kepuasan kepada klien 2. Pembangunan system dibuat lebih cepat 3. Mengurangi resiko kegagalan implementasi software dari segi non teknis 4. Jika pada saat pembangunan system terjadi kegagalan/kerugian dari segi materi relatif kecil. f. Model-model Agile method 1. Extreme Programmning (XP) 2. Adaptive Software Development (ASD) 3. Dynamic Systems Development Method (DSDM) 4. Scrum Methodology 5. Crystal 6. Feature Driven Development (FDD) 7. Agile Modeling (AM) 8. Rational Unified Process g. Agile modeling (AM) Dalam situasi pembangunan software harus membangun sistem bisnis yang besar dan penting. Jangkauan dan kompleksitas sistem harus dimodelkan sehingga dapat dimengerti, masalah dapat dibagi menjadi lebih kecil dan kualitas dapat dijaga pada tiap langkah pembangunan software. Agile modeling adalah suatu metodologi yang praktis untuk dokumentasi dan pemodelan sistem software. Agile modeling adalah kumpulan nilai-nilai, prinsip dan praktek-praktek untuk memodelkan software agar dapat diaplikasian pada software development proyek secara efektif. h. Prinsip dalam Agile Modeling 1. Membuat model dengan tujuan: tentukan tujuan sebelum membuat model. 2. Mengunakan multiple models: tiap model mewakili aspek yang berbeda dari model lain. 3. Travel light yaitu menyimpan model-model yang bersifat jangka panjang saja. 4. Isi lebih penting dari pada penampilan sehingga modelling dapat menyajikan informasi kepada domain yang tepat. 5. Memahami model dan alat yang yang digunakan untuk membuat software. 6. Adaptasi secara lokal. i. Kelebihan dari Agile Modeling 1. Meningkatkan kepuasan kepada klien 2. Pembangunan sistem dibuat lebih cepat 3. Mengurangi resiko kegagalan implementasi software dari segi non-teknis 4. Jika pada saat pembangunan sistem terjadi kegagalan/kerugian dar segi materi relatif kecil j. Kelemahan dari Agile Modeling Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
Daftar Referensi Baumer, B. (1996). User Interface prototyping- Concepts, Tools, and Experience. Proceedings of ICSE , 18, 532-541. Hoffer, J. J. (2007). Modern Systems Analysis and Design. Reading,MA: Prentice Hall Publishing Company. Luqui, V. Berzins (1988).Rapidly prototyping Real-Time System.IEEE Software, September 1998, 25-36. SoftDevTeam. (2006). Evoutionary Prototyping Model. Retrieved 04 12, 2008, from http://www.softdevteam.com Sommerville, I. (2000). Software Engineering. Pearson publications. http://agilemanifesto.org/ Final Version to appear in, J.J. Marciniak (ed.), Encyclopedia of Software Engineering, 2 nd
Edition, John Wiley and Sons, Inc, New York, December 2001. http://www.agilemodeling.com/essays/introductionToAM.htm. Ambler, Scott W. "An Introducation to Agile Modeling." Agile Modeling Home Page. 2001- 2008. Pressman, Roger S. Software Engineering : A Practitioner's Approach. 6th Ed. McGraw-Hall. NY. 2005.