Selasa, 13 Maret 2012

Team Skills in Aligning IT with Business


Systems architecture digunakan sebagai bagian dari proses menjaga arsitektur perusahaan selaras dengan tujuan bisnis dan proses organisasi. Oleh karena itu, untuk mewujudkan pengembangan perangkat lunak yang dapat digunakan untuk membantu pencapaian tujuan organisasi diperlukan tim yang memiliki keahlian. Keahlian yang perlu dimiliki oleh tim antara lain :

1.     Analyzing the Problem
Sebuah masalah harus diketahui akar permasalahannya dan tidak terbatas hanya pada gejala masalah. Setelah masalah diketahui dengan jelas maka diperlukan persetujuan definisi masalah antara tim dan stakeholder. Selanjutnya untuk melakukan analisa lebih lanjut terhadap masalah, diperlukan identifikasi pengguna dan stakeholder. Dengan adanya identifikasi dan kesepakatan yang jelas mengenai penyelesaian akar permasalahan maka dapat disampaikan solusi untuk permasalahan tersebut dan hambatan-hambatan yang mungkin terjadi dalam pengimplementasian solusi tersebut. Tahapan analisis masalah menghasilkan dokumen Stakeholder Request, dokumen yang memuat seluruh permintaan dan data-data dari stakeholder yang harus dipenuhi dalam rangka penyelesaian masalah.
2.     Understanding User and Stakeholder Needs
Memahami kebutuhan pengguna dan stakeholder merupakan tindak lanjut dari analisis stakeholder request. Tim harus dapat memahami kebutuhan sistem yang akan dibuat dan melihat kesesuaian kebutuhan tersebut dengan permintaan yang disampaikan pengguna dan stakeholder. Terdapat beberapa cara untuk memahami kebutuhan pengguna dan stakeholder antara lain dengan melakukan studi literatur, wawancara, workshop, brainstorming, dan storyboarding. Setelah tim dapat menentukan kebutuhan yang harus direalisasikan dalam sistem maka feature sistem dapat ditentukan dan diusulkan kepada stakeholder.
3.     Defining the System
Mendefinisikan sistem dilakukan dengan melakukan pemodelan perilaku sistem menggunakan use case dan dengan mengorganisasikan informasi kebutuhan. Pendefinisian sistem dilakukan berdasarkan problem domain dan berdasarkan solution domain berupa features dan software requirements yang tecantum dalam usecase dan supplementary specification. Pendefinisian sistem menghasilkan Vision Document.
4.     Managing Scope
Pengelolaan scope diperlukan untuk menghindari perluasan proyek pengembangan perangkat lunak diluar kesepakatan yang telah ditentukan mengenai kebutuhan sistem. Pengelolaan scope meliputi penentuan iterasi, skala prioritas, effort, dan resiko dari pengembangan sistem. Pengelolaan scope menghasilkan Requirement Management Plan (RMP).
5.     Refining the System Definition
Perbaikan definisi sistem dapat dilakukan untuk mendefinisikan secara lebih tepat kebutuhan pengguna dan stakeholder terhadap sistem. Perbaikan ini dilakukan untuk memperbaiki proses sebelumnya agar definisi kebutuhan sistem yang didapatkan oleh tim merupakan kebutuhan yang benar-benar dibutuhkan oleh sistem. Perbaikan definisi sistem ini dilakukan dengan melihat dengan teliti kebutuhan perangkat lunak, membuat use case dengan tepat, dan pembuatan supplementary specification.
6.     Building the Right System
Pembuatan sistem yang tepat sesuai dengan kebutuhan pengguna dan stakeholder dapat dilakukan dengan penelusuran kebutuhan yang dipetakan ke dalam perancangan dan pemgrograman sistem, pengetesan sistem, pengelolaan terhadap perubahan yang terjadi terhadap pengembangan sistem serta dengan penilaian kualitas kebutuhan dalam pembangunan iteratif. 

Rabu, 07 Maret 2012

Best Practices of Software Engineering


Perkembangan dunia bisnis meningkatkan ketergantungan terhadap perangkat lunak terutama dikarenakan kebutuhan bisnis untuk meningkatkan produktivitas dan kualitas dalam waktu yang lebih singkat. Pengembangan perangkat lunak mengalami peningkatan baik dalam hal ukuran, kompleksitas, persebaran maupun tingkat kepentingan dari aplikasi yang digunakan dalam bisnis. Peningkatan kebutuhan pengembangan perangkat lunak tidak sejalan dengan peningkatan SDM berkualitas untuk memenuhi kebutuhan tersebut. Keterbatasan SDM yang dimiliki untuk memenuhi kebutuhan pengembangan perangkat lunak yang meningkat menyebabkan banyak proyek pengembangan perangkat lunak mengalami kegagalan.

Kegagalan yang terjadi pada pengembangan perangkat lunak seringkali diketahui hanya terbatas pada gejala permasalahan tanpa mengetahui akar permasalahan yang dimiliki. Penanganan yang dilakukan terdahap masalah pun terbatas pada mengatasi gejala yang timbul tanpa menyelesaikan akar permasalahan yang sebenarnya. Hal ini menyebabkan banyak proyek pengembangan perangkat lunak gagal ataupun tidak sesuai dengan anggaran dan waktu yang telah ditetapkan.

Untuk mengatasi kegagalan-kegagalan yang terjadi dalam proyek perangkat lunak sejumlah gejala dan akar permasalahan yang pernah terjadi diidentifikasi dan dipelajari. Hasil penelitian terhadap penyebab kegagalan tersebut kemudian dijadikan dasar dalam menyusun sebuah best practice dalam pengembangan perangkat lunak untuk meminimalisasi kemungkinan terjadinya kegagalan tersebut. Adapun beberapa best practice tersebut antara lain :

Develop Iteratively
Pengembangan secara iterative dilakukan dengan membangun perangkat lunak secara bertahap untuk mengurangi resiko. Pengembangan dilakukan dengan membuat prototype atau model yang merupakan inti dari sebuah perangkat lunak yang menjadi landasan untuk pengembangan pada tahap selanjutnya. Keberadaan prototype mmbuat pengembang dapat lebih cepat mengetahui kekurangan dan dapat dengan segera melakukan perubahan. Dengan demikian pengembang dapat menekan resiko pada tahapan awal dan membuat mitigasi resiko.

Manage Requirements
Requirements merupakan hal yang penting dalam pengembangan perangkat lunak. Tujuan utama dalam pengembangan perangkat lunak ialah membuat sistem yang tepat untuk memberikan solusi berdasarkan requirement yang disampaikan. Oleh karena itu, pengelolaan requirement penting dilakukan untuk memastikan pengembang menyelesaikan masalah yang tepat dengan membuat sistem yang tepat. Pengelolaan requirement dapat dilakukan dngan cara mengelisitasi, mengelola, dan mendokumentasikan fungsionalitas dan constraint yang dibutuhkan sistem, menetapkan dan mengelola persetujuan mengenai perubahan requirement sebuah perangkat lunak. Mengelola requirements dengan baik mengurangi kesalahan yang terjadi dan mengurangi kegagalan pengembangan perangkat lunak yang dapat terjadi.

Use Component Architectures
Pengembangan berbasis komponen merupakan hal yang penting dalam pengembangan perangkat lunak. Pengembangan berbasis komponen memungkinkan penggunaan kembali (reuse) dan kustomisasi komponen perangkat lunak dari berbagai sumber yang pernah dibuat sebelumnya.
Model Visually
Pemodelan visual ialah proses penggambaran kode dalam bentuk visual. Penggambaran secara visual mendeskripsikan sistem dari berbagai perspektif, memperlihatkan konsistensi sistem, serta membantu pengecekan kesesuaian implementasi sitem dengan rancangan awal. Pemodelan visual pada RUP dibantu oleh keberadaan UML yang merupakan bahasa pemodelan terpadu. Dengan pemodelan visual, kompleksitas dari perangkat lunak menjadi lebih mudah dipahami.

Verify Quality
Verifikasi kualitas perangkat lunak perlu dilakukan untuk mengetahui kualitas suatu perangkat lunak dengan cara melihat beberapa aspek yaitu fungsionalitas, kehandalan serta kinerja dari aplikasi dan sistem yang dikembangkan. Verifikasi kualitas perlu dilakukan secara berkala untuk menghindari besarnya biaya yang dikeluarkan untuk memperbaiki sistem apabila sistem telah dideploy. Dengan melakukan verifikasi kualitas secara berkala, dapat diketahui kualitas perangkat lunak sehingga perbaikan dini terhadap perangkat lunak dapat dilakukan dan biaya yang dikeluarkan dapat berkurang.

Control Changes
Kontrol perubahan sangat diperlukan dalam proses pengembangan perangkat lunak. Tidak adanya kontrol terhadap perubahan-perubahan yang terjadi dalam proses pengembangan perangkat lunak  dapat menimbulkan resiko yang besar dan berdampak pada kekacauan.  RUP menyediakan kemampuan untuk melakukan manajemen control yang baik dengan mendokumentasikan semua perubahan yang telah dilakukan, sehingga terstruktur dengan baik dan dapat dilihat dengan mudah.

Rational Unified Process


Arsitektur Enterprise merupakan sebuah proses mengubah visi dan strategi bisnis menjadi perubahan perusahaan yang efektif dengan menciptakan, mengkomunikasikan serta meningkatkan kebutuhan utama, prinsip dan model yang mengambarkan masa depan perusahaan dan memungkinkan evolusi perusahaan tersebut. (Gartner’s IT Glossary)

Arsitektur sistem enterprise diperuntukan bagi organisasi yang memerlukan sistem terintegrasi.  Pengembangan sistem terintegrasi dalam perusahaan ataupun organisasi dilakukan melalui proses yang terdiri dari sekumpulan metodologi pengembangan perangkat lunak. Proses tersebut diperlukan untuk mendefinisikan “Siapa” yang akan melakukan “Apa”, “Kapan” dilakukan, dan “Bagaimana” cara melakukan hal tersebut agar dapat mencapai tujuan. Tujuan pengembangan perangkat lunak tersebut yaitu melakukan pengembangan secara efektif dengan memenuhi kriteria tepat waktu, tepat biaya serta sesuai dengan kebutuhan pengguna.

Dalam melakukan pengembangan perangkat lunak terdapat berbagai metode yang dapat digunakan. Setiap metode memiliki proses yang berbeda-beda satu dan yang lain serta memiliki kekurangan dan kelebihan masing-masing sesuai dengan proyek pengembangan yang dilakukan.  Salah satu metode pengembangan perangkat lunak adalah Unified Process. Unified process merupakan metode pengembangan perangkat lunak terstandardisasi yang dihasilkan dari integrasi beberapa proses pengembangan perangkat lunak yang berbeda.

Salah satu jenis Unified Process yang banyak digunakan yaitu Rational Unified Process (RUP). RUP merupakan sebuah hasil dari proses, juga merupakan kerangka dari proses sekaligus model dari proses dan kumpulan best practices yang dikembangkan oleh Rational Software Corporation. RUP mencakup guideline, template dan tool assistance yang diperlukan dalam pengembangan perangkat lunak.  

Dalam pengembangan perangkat lunak, RUP menggunakan teknik pengembangan iterative incremental yang dijalankan dengan melakukan iterasi-iterasi dimana setiap iterasi menghasilkan deliverable tertentu yang dapat disampaikan kepada pengguna. Teknik ini dilakukan dengan tujuan untuk menciptakan pengembangan perangkat lunak yang dinamis, dapat memenuhi kebutuhan pengguna serta sesuai dengan waktu dan anggaran yang telah ditentukan.

Pengembangan perangkat lunak menggunakan RUP terdiri atas sejumlah siklus. Setiap siklus yang dilakukan terdiri dari empat fase yaitu fase Inception, Elaboration, Construction, dan Transition.
  • Inception merupakan fase awal yang mendefinisikan sebuah proyek, pada fase ini dihasilkan objective dan scope dari sebuah proyek.
  • Elaboration merupakan fase perancangan proyek, pada fase ini terbentuk arsitektur dasar dari sebuah proyek.
  • Construction merupakan fase pembangunan produk yang menghasilkan kapabilitas operasi dari proyek.
  • Transition yang merupakan fase transisi proyek kepada penguna yang menghasilkan perilisan produk.

Pada setiap fase terdapat aktivitas-aktivitas pengembangan perangkat lunak seperti business modelling, requirements, analysis, dessign, implementation, test dan deployment. Aktivitas-aktivitas tersebut memiliki porsi berbeda pada fase yang berbeda, yaitu porsi yang lebih besar dari sebelumnya. Selain itu setiap fase dalam siklus memiliki milestone yang harus dicapai, dilakukan secara iterative sampai selesai dan menghasilkan produk yang diinginkan

Pencapaian kesuksesan dalam penerapan RUP digambarkan dalam ‘Triangle for Success’ yang terdiri dari process, tools, dan notation. ‘Triangle for Success’ menggambarkan pentingnya proses yang baik, alat-alat yang tepat, dan notasi yang sama dalam mengkomunikasikan kebutuhan suatu produk dengan baik. Ketiga hal ini merupakan kunci keberhasilan dalam pengembangan suatu produk

Selasa, 06 Maret 2012

Intro

Blog Repositoy System Architecture Enterprise diperuntukkan bagi catatan pembelajaran topik lanjut System Architecture Enterprise. Post-post akan dimuat merupakan hasil dari perkuliahan ataupun berdasarkan artikel-artikel terkait dengan SAE. Semoga blog ini berguna terutama untuk teman-teman yang tertarik untuk mempelajari SAE.