Pernahkan anda mendengar tentang Requirement Engineering?
Jika pernah, selamat!!
Jujur saja... saya belum pernah mendengar tentang Requirement Engineering. Saya pun juga tidak akan tahu jika saya tidak mengikuti mata kuliah Software Engineering semester ini. Dan dari mata kuliah tersebut, saya bisa mengetahui apa itu Requirement Engineering dan apa saja manfaatnya.
Selasa, 24 Februari 2009
Saya membaca dari referensi - referensi dari internet yang berkaitan dengan Requirement Engineering (RE). Salah satunya saya mendapatkannya di http://romisatriawahono.net/2006/04/29/menyegarkan-kembali-pemahaman-tentang-requirement-engineering/
Di sana disebutkan apa itu RE.
Requirements engineering adalah fase terdepan dari proses rekayasa perangkat lunak (software engineering), dimana software requirements (kebutuhan) dari user (pengguna) dan customer (pelanggan) dikumpulkan, dipahami dan ditetapkan.
Para pakar software engineering sepakat bahwa requirements engineering adalah suatu pekerjaan yang sangat penting.
Fakta membuktikan bahwa kebanyakan kegagalan pengembangan software disebabkan karena adaya ketidakkonsistenan (inconsistent), ketidaklengkapan (incomplete), maupun ketidakbenaran (incorrect) dari requirements specification (spesifikasi kebutuhan).
Jadi RE itu bermula dari customer yang memiliki sejumlah masalah di mana kita harus menganalisa apa yang customer inginkan. Menganalisa masalah tersebut dilakukan dengan sejumlah task yang dilakukan oleh project stakeholder.
Stakeholder adalah setiap orang yang mempunyai direct interest terhadap pembangunan sistem tersebut, dan stakeholder ini bisa dari pihak vendor atau client.
Di dalam proses menganalisa requirement ini pasti ada gap antara client dan project manager. Untuk mengatasi gap ini dibutuhkan IEENSVM (Inception, Elicitation, Elaboration, Negotiation, Specification, Validation, dan Management).
Setelah proses ini, maka akan dihasilkan sebuah work product yang terdiri dari user scenario, function atau feature list, dan analysis model specification.
Berdasarkan generic process framework, requirement engineering termasuk di bagian communication dan planning. Generic process framework ini sudah pernah saya jelaskan di Software Engineering : Why do We Need It ?
IEENSVM itu terdiri dari :
1. Inception
- Merupakan proses inisialisasi.
- Mendapatkan informasi seobjektif mungkin tentang tujuan dan pengaruh aplikasi
- Mengidentifikasi masalah stakeholder
- Viewpoints, Mengetahui perspektif terhadap aplikasi dari stakeholder
- Cllaborate, Crosscheck terhadap hasil analisa perspektif stakeholder
- 1st question, Merupakan pertanyaan basic kepada stakeholder.
Misalnya siapa yang membutuhkan aplikasi ini?
2. Elicitation
- Menarik informasi dari client supaya kita bisa membuat system requirement lebih lengkap baik dari segi bisnis dan teknis.
- Membagi - bagi requirement ke dalam functional dan non functional yang masing - masing dibagi - bagi ke dalam 3 kategori, yaitu conscious (bersifat pasti), unconscious (common sense), dan undreamed (relevan atau tidak).
- Dari requirement tersebut dibuat menjadi Requirement Matrix yang menggolongkan requirement ke dalam beberapa aspek yang terlibat, seperti security, core business, dll.
3. Elaboration
- Prinsipnya adalah menguraikan.
- Tahap ini akan menghasilkan data model, use case diagram, activity diagram, swimlane diagram, data flow diagram, state diagram, dan sequence diagram.
- Data model diagram adalah sesuatu yang memiliki deretan di atribut composite yang nantinya bisa dibuat relationship nya.
- Use Case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem.
- Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir.
- Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum.
- Perbedaan antar activity diagram dan swimlane diagram adalah swimlane merupakan activity diagram yang dibagi - bagi berdasarkan objek yang terlibat.
- State diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima.
- Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu.
- Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan.
http://afif.web.id/kuliah/uml.ppt
4. Negotiation
- Menghasilkan win-win solution
- Bukan kompetisi, membuat orang percaya kalau mereka mendapatkan bagian yang paling besar.
- Strategy, ada banyak strategi yang harus dipersiapkan dan diperlukan apabila alternatif pertama tidak disetujui.
- Listen, kita perlu mendengar dari orang lain apa yang diinginkan.
- Other's interest, peka untuk melihat kepentingan yang melatarbelakangi.
- Bukan personal, semua saran dan kritik jangan dihadapi secara personal.
- Creative, kreatif dalam memberikan solusi.
- Commit, komitmen dengan hasil negosiasi yang sudah ditetapkan.
5. Spesification
- Menghasilkan Software Requirements Specification
- Menjelaskan WHAT bukannya HOW.
- Harus hati - hati terhadap assumption dan scope. Kita harus menuliskan semua asumsi yang ada dan memberikan batasan yang jelas terhadap pekerjaan kita.
- Clien yang bertanggung jawab terhadap project ini harus menandatangani SRS ini.
6. Validation
- Consistent role-role nya
- Abstraction, penyaringan informasi harus benar
- Necessary, memasukkan data yang benar-benar dibutuhkan saja
- Unambigous, tidak perlu memasukkan kata-kata yang mendua arti yang membingungkan
- Partitioned, dikelompokkan
- Conflict, apakah kelompok-kelompok yang dihasilkan di partition mengalami konflik
- Mapping, apakah ada fungsi (terutama yang fuctioned) bisa diterjemahkan ke dalam fungsi aplikasi
- Testable, apakah bisa ditest
- Achievable, mungkin atau tidak dikerjakan
- Attribution, siapa saja yang minta requirement
7. Management
- Menghasilkan traceability table
- Membantu untuk dependency, features, subsystem, source, dan interface
- Table nya hampir sama dengan Requirement Matrix, yang sama - sama terdiri dari requirement yang dikelompokkan ke dalam aspect-aspect.
Selain itu, saya juga belajar tentang Business Letter. Business letter itu digunakan untuk menjelaskan suatu tujuan (purpose) dan sebagai record, bukti jika sewaktu - waktu dibutuhkan.
Di dalam business letter terdapat subject (apa yang ditulis), audience (untuk siapa), purpose (kenapa ditulis), dan style / organization (bagaimana menulis).
Bagian - bagiannya adalah : state the point (tujuan secara general), explain (menjelaskan lebih detail tujuan menulis), dan conclude,request acion, atau thanks for response.
7 Gaya menulis business letter ini :
- Conversational
- Clear
- Concise
- Complete
- Concrete
- Constructive
- Correct
Jadi, untuk menulis sebuah business letter itu tidak boleh sembarangan. Ada aturan - aturannya bagaimana menyusun sebuah business letter yang baik sehingga pembaca dapat mengerti maksud dan tujuan kita menulis business letter tersebut.
Resources :
http://afif.web.id/kuliah/uml.ppt
http://romisatriawahono.net/2006/04/29/menyegarkan-kembali-pemahaman-tentang-requirement-engineering/
Friday, February 27, 2009
Wednesday, February 18, 2009
Software Engineering : Why do we need it ?
Selasa, 17 Februari 2009
Kuliah Software Engineering pada pertemuan ini mengajarkan banyak hal yang belum pernah saya ketahui sebelumnya. Kuliah kali ini banyak mengajarkan apa itu Software Engineering dan process model apa saja yang bisa digunakan selama kita mengerjakan sebuah project.
Hal pertama yang dipelajari adalah Software evolution. Software evolution adalah istilah yang digunakan oleh Software Engineering dalam mengembangkan sebuah software sebagai proses awal dalam mengembangkan produk. Software evolution itu terdiri dari :
- system
- application
- engineering/scientific
- embedded
- product-line
- web
- AI
Ada sebuah pernyantaan, "Software is engineered". Apa maksud pernyataan tersebut?
Software harus direkayasa karena software biasanya akan dicustom untuk memenuhi kebutuhan dan permintaan konsumen.
Kemudian ada pertanyaan, "Why do IT solution company exist?"
Perusahaan IT tetap exist karena pasar IT ada sehingga tetap dibutuhkan oleh konsumen.
Selanjutnya ada pernyataan "Consistent but flexible software", apa maksud dari pernyataan itu?
Konsisten supaya hasilnya senantiasa tetap sampai kapanpun. Jika tampilannya bagus tapi tidak konsisten, maka konsumen akan bingung. Flexible untuk memenuhi kebutuhan custom tadi sehingga dapat memenuhi kebutuhan konsumen dalam modifikasi.
Ada juga pernyataan "Software Engineering is project", lalu apa maksudnya? Mengapa disebut sebagai project?
Supaya sistematis karena project memiliki planning, tujuan, role, determination of ending jelas. Ending harus ada agar terlihat tujuan akhir dari project itu.
Lalu siapakah yang termasuk dalam software engineering?
Bisa project manager dan stakeholders.
Dalam project membuat software pasti akan ada event - event yang bisa terjadi saat mengerjakan project tersebut di antaranya :
- Account manager is having dinner with the client
- Kick-off-meeting
- Project's duration is estimated on 140 man/day
- Billing statement will be sent to customer's email in PDF file, max size 512KB each, secured by customer's birthdate (ddMMyyyy) as user level password
- The system must be able to handles 200 online user concurrently, the respond time not more than 4 seconds each.
- SRS document approved by client
- Business users review the UAT scenario document
- Solution architect decides to use Java platform
- Technical architect meets third parties to consolidate the interface spesification
- Every transaction record will be submitted to EAI asynchronously. Call-back mechanism will be provided for the party to inform the process result status.
- In order to support the estimated business growth at 100 new customers/month and 250 transactions/day, HDD 120 GB
- FDD is getting reviewed
- An application framework has been chosen. Function implementation are now being made
- Passing value "29-02-2008" into due date field
- A front-liner reported that she was unable to see the invoice record she just entered
- Deploy the new application to production environment
- Run the regression test scripts
- A clinet's customer called, she received monthly usage repot that was not hers
- MIS manager contacts PM to have an enhancement on user administration module
- Project manager meets the client to sign hand-over document
Di Software Engineering ada istilah SDLC. Apakah SDLC itu? SDLC bisa berupa :
- Software Development Life Cycle
- System Development Life Cycle
- System Design Life Cycle
Dalam mengerjakan sebuah project pembuatan software dibutuhkan Process Model. Apakah itu process model dan mengapa kita membutuuhkan Process Model itu?
Process Model itu dibutuhkan karena yang akan dibuat unique sehingga membutuhkan langkah - langkah kerja dalam project yang didesain sesuai pengguna.
Selain itu ada Generic process framework:
- communication
- planning
- modeling
- construction
- deployment
Beberapa jenis Process Model adalah :
1. waterfall : model klasik yang bersifat sistematis, berurutan dalam membuat software. Jadi fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya. Jika tidak, maka bisa mengalami kesulitan dalam mengakomodasi perubahan setelah proses dijalani.
2. incremental RAD (Rapid Application Development) : menekankan pada siklus pembangunan yang pendek atau singkat yang mengadopsi model waterfall dan pembangunan dalam waktu singkat dapat dicapai. Waktu yang singkat adalah batasan yang penting untuk model ini.
3. evolutionary prototyping : Kadang-kadang klien hanya memberikan beberapa kebutuhan umum software tanpa detil input, proses atau detil output. Di lain waktu mungkin dimana tim pembangun (developer) tidak yakin terhadap efisiensi dari algoritma yang digunakan, tingkat adaptasi terhadap sistem operasi atau rancangan form user interface. Ketika situasi seperti ini terjadi model prototyping sangat membantu proses pembangunan software.
4. evolutionary spiral : 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.
5. evolutionary concurrent development : proses pembuatan software dilakukan secara bersama - sama berbarengan dengan semua departemen yang bekerja pada proyek sama dan dalam waktu yang sama sehingga proyek dapat selesai dengan cepat
6. unified (inception-inisialisasi, elaboration, construction, transition, product) : metode yang digunakan untuk menentukan, memvisualisasikan, membuat sebuah dokument bagan software dengan object oriented.
7. agile XP : model proses yang terbaru dalam dunia rekayasa perangkat lunak dan mencoba menjawab kesulitan dalam pengembangan software yang rumit dan sulit dalam implementasi. Suatu model yang menekankan pada keterlibatan user secara langsung dan pengujian.
8. agile ASD (adaptive software development) : proses membuat software yang menggantikan waterfall dengan menambahkan proses spekulasi, kolaborasi antar semua pihak, dan team cycle. Karakteristik dari ASD ini adalah fokus pada misi yang ingin dicapai, feature based, iteartive, risk driven.
9. agile scrum : sekelompok orang kerja keras untuk menyelesaikan projek
10. agile FDD (Feature Driver Development) : feature based yang digunakan untuk mengukur kemajuan yang telah dicapai pada setiap fitur yang telah ditetapkan. Sehingga ini juga membutuhkan kerja keras yang tinggi.
Kemudian ada juga AGILE PROCESS. Apakah itu AGILE PROCESS?
Agile Process berasal dari kata Agility yang berarti dapat merespon keinginan pasar dengan cepat.
Bagaimanakah perubahan yang terjadi dari cara Konvensional ke Agile?
- processes & tools --> individuals & interactions
- comprehensive documentation --> working software
- contract negotiation --> customer collaboration
- following a plan --> responding to change
Dari pertemuan kuliah Software Engineering kali ini, saya menarik kesimpulan. Bahwa membuat sebuah project, sebelumnya kita harus menetapkan bagaimanakah proses yang akan dijalani sehingga kita dapat menjalankan pekerjaan dengan baik dan dapat meminimalisasi hambatan - hambatan.
Resources : lecturer.ukdw.ac.id/othie/softwareprocess.pdf
Kuliah Software Engineering pada pertemuan ini mengajarkan banyak hal yang belum pernah saya ketahui sebelumnya. Kuliah kali ini banyak mengajarkan apa itu Software Engineering dan process model apa saja yang bisa digunakan selama kita mengerjakan sebuah project.
Hal pertama yang dipelajari adalah Software evolution. Software evolution adalah istilah yang digunakan oleh Software Engineering dalam mengembangkan sebuah software sebagai proses awal dalam mengembangkan produk. Software evolution itu terdiri dari :
- system
- application
- engineering/scientific
- embedded
- product-line
- web
- AI
Ada sebuah pernyantaan, "Software is engineered". Apa maksud pernyataan tersebut?
Software harus direkayasa karena software biasanya akan dicustom untuk memenuhi kebutuhan dan permintaan konsumen.
Kemudian ada pertanyaan, "Why do IT solution company exist?"
Perusahaan IT tetap exist karena pasar IT ada sehingga tetap dibutuhkan oleh konsumen.
Selanjutnya ada pernyataan "Consistent but flexible software", apa maksud dari pernyataan itu?
Konsisten supaya hasilnya senantiasa tetap sampai kapanpun. Jika tampilannya bagus tapi tidak konsisten, maka konsumen akan bingung. Flexible untuk memenuhi kebutuhan custom tadi sehingga dapat memenuhi kebutuhan konsumen dalam modifikasi.
Ada juga pernyataan "Software Engineering is project", lalu apa maksudnya? Mengapa disebut sebagai project?
Supaya sistematis karena project memiliki planning, tujuan, role, determination of ending jelas. Ending harus ada agar terlihat tujuan akhir dari project itu.
Lalu siapakah yang termasuk dalam software engineering?
Bisa project manager dan stakeholders.
Dalam project membuat software pasti akan ada event - event yang bisa terjadi saat mengerjakan project tersebut di antaranya :
- Account manager is having dinner with the client
- Kick-off-meeting
- Project's duration is estimated on 140 man/day
- Billing statement will be sent to customer's email in PDF file, max size 512KB each, secured by customer's birthdate (ddMMyyyy) as user level password
- The system must be able to handles 200 online user concurrently, the respond time not more than 4 seconds each.
- SRS document approved by client
- Business users review the UAT scenario document
- Solution architect decides to use Java platform
- Technical architect meets third parties to consolidate the interface spesification
- Every transaction record will be submitted to EAI asynchronously. Call-back mechanism will be provided for the party to inform the process result status.
- In order to support the estimated business growth at 100 new customers/month and 250 transactions/day, HDD 120 GB
- FDD is getting reviewed
- An application framework has been chosen. Function implementation are now being made
- Passing value "29-02-2008" into due date field
- A front-liner reported that she was unable to see the invoice record she just entered
- Deploy the new application to production environment
- Run the regression test scripts
- A clinet's customer called, she received monthly usage repot that was not hers
- MIS manager contacts PM to have an enhancement on user administration module
- Project manager meets the client to sign hand-over document
Di Software Engineering ada istilah SDLC. Apakah SDLC itu? SDLC bisa berupa :
- Software Development Life Cycle
- System Development Life Cycle
- System Design Life Cycle
Dalam mengerjakan sebuah project pembuatan software dibutuhkan Process Model. Apakah itu process model dan mengapa kita membutuuhkan Process Model itu?
Process Model itu dibutuhkan karena yang akan dibuat unique sehingga membutuhkan langkah - langkah kerja dalam project yang didesain sesuai pengguna.
Selain itu ada Generic process framework:
- communication
- planning
- modeling
- construction
- deployment
Beberapa jenis Process Model adalah :
1. waterfall : model klasik yang bersifat sistematis, berurutan dalam membuat software. Jadi fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya. Jika tidak, maka bisa mengalami kesulitan dalam mengakomodasi perubahan setelah proses dijalani.
2. incremental RAD (Rapid Application Development) : menekankan pada siklus pembangunan yang pendek atau singkat yang mengadopsi model waterfall dan pembangunan dalam waktu singkat dapat dicapai. Waktu yang singkat adalah batasan yang penting untuk model ini.
3. evolutionary prototyping : Kadang-kadang klien hanya memberikan beberapa kebutuhan umum software tanpa detil input, proses atau detil output. Di lain waktu mungkin dimana tim pembangun (developer) tidak yakin terhadap efisiensi dari algoritma yang digunakan, tingkat adaptasi terhadap sistem operasi atau rancangan form user interface. Ketika situasi seperti ini terjadi model prototyping sangat membantu proses pembangunan software.
4. evolutionary spiral : 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.
5. evolutionary concurrent development : proses pembuatan software dilakukan secara bersama - sama berbarengan dengan semua departemen yang bekerja pada proyek sama dan dalam waktu yang sama sehingga proyek dapat selesai dengan cepat
6. unified (inception-inisialisasi, elaboration, construction, transition, product) : metode yang digunakan untuk menentukan, memvisualisasikan, membuat sebuah dokument bagan software dengan object oriented.
7. agile XP : model proses yang terbaru dalam dunia rekayasa perangkat lunak dan mencoba menjawab kesulitan dalam pengembangan software yang rumit dan sulit dalam implementasi. Suatu model yang menekankan pada keterlibatan user secara langsung dan pengujian.
8. agile ASD (adaptive software development) : proses membuat software yang menggantikan waterfall dengan menambahkan proses spekulasi, kolaborasi antar semua pihak, dan team cycle. Karakteristik dari ASD ini adalah fokus pada misi yang ingin dicapai, feature based, iteartive, risk driven.
9. agile scrum : sekelompok orang kerja keras untuk menyelesaikan projek
10. agile FDD (Feature Driver Development) : feature based yang digunakan untuk mengukur kemajuan yang telah dicapai pada setiap fitur yang telah ditetapkan. Sehingga ini juga membutuhkan kerja keras yang tinggi.
Kemudian ada juga AGILE PROCESS. Apakah itu AGILE PROCESS?
Agile Process berasal dari kata Agility yang berarti dapat merespon keinginan pasar dengan cepat.
Bagaimanakah perubahan yang terjadi dari cara Konvensional ke Agile?
- processes & tools --> individuals & interactions
- comprehensive documentation --> working software
- contract negotiation --> customer collaboration
- following a plan --> responding to change
Dari pertemuan kuliah Software Engineering kali ini, saya menarik kesimpulan. Bahwa membuat sebuah project, sebelumnya kita harus menetapkan bagaimanakah proses yang akan dijalani sehingga kita dapat menjalankan pekerjaan dengan baik dan dapat meminimalisasi hambatan - hambatan.
Resources : lecturer.ukdw.ac.id/othie/softwareprocess.pdf
Subscribe to:
Posts (Atom)