Rabu, 03 Juni 2009

Peningkatan Kualitas Software Development Dengan Visual Studio Team System (VSTS) 2008

Pengembangan Perangkat Lunak adalah suatu hal yang cukup menantang, karena dewasa ini daapt kita lihat bahwa kebutuham akan perangkat lunak semakin meningkat khusunya untuk keperluan bisnis/enterprise, organisasi tertentu, dan bahkan dibidang pendidikan. Kebutuhan-kebutuhan akan software ini dapat berbeda-beda, dan oleh karena itu software yang akan dikembangkanpun memiliki spesifikasi tertentu yang dapat memenuhi kebutuhan dari client tersebut. Dan hal yang paling penting dalam pengembangan software adalah kualitas, kualitas software adalah pengukuran seberapa baik design dari suatu software dan seberapa tepat software tersebut dikembangkan sesuai design.


Ada dua karakteristik kualitas software,yaitu Ekternal dan Internal. Eksternal adalah kualitas software yang dinilai dari sudut pandang pengguna atau user sementara karakteristik internal adalah dari sudut pandang pengembang software seperti developer, project manager, architect, dan semua yang terlibat dalam proses pengembangannya. Untuk menentukan kualitas software dari karakteristik eksternya, biasanya pengguna/user akan melihat seberapa mudah software tersebut digunakan, dana seberapa tepat fungsi-fungsinya dapat berjalan sesuai dengan yang dibutuhkan pengguna. Namun yang perlu diperhatikan adalah bahwa secara eksternal, yaitu tidak semua karakteristik kualitas software (mencakup ; correctness, usability, reliability, efficiency, integrity, adaptability, accuracy, robustness) dapat dipenuhi secara sempurna karena beberapa diantara karakteristik tersebut dapat saling melemahkan seperti dapat dilihat dalam tabel berikut ini:


Oleh karena itu pengembangan software dapat dimaksimalkan pada peningkatan kualitas secara internal, dalam hal ini Visual Studio Team System dapat sangat membantu terutama karakter yang berhubungan dengan proses konstruksi, mencakup :

· Maintainability, tingkat kemudahan software untuk dimodifikasi, diperbaiki atau ditingkatkan performancenya.

· Flexibility, tingkat kemudahan software untuk dikembangkan lebih lanjut dan diintegrasikan dengan system lain.

· Portability, tingkat kemampuan software untuk dimodifikasi dalam lingkungan yang berbeda.

· Reusability, tingkat kemampuan system software secara keseluruhan atau komponen-komponennya untuk digunakan oleh system lain.

· Readability, kemudahan source code software untuk dibaca dan dimengerti oleh orang lain.

· Testability, tingkat kemudahan system software untuk mendukung unit-test, code average dan system test.

· Understandability, tingkat kemudahan software untuk dapat dipahami secara menyeluruh mulai dari organisasi system sampai pada level source code.


Tidak jarang kita temui bahwa aspek internal yang biasanya diserahkan pada tim Developer ini tidak didukung dengan Tools yang mampu mengontrol kualitas source code yang dihasilkan. Dan kondisi ini akan sangat berbahaya ketika dilakukan pencarian bugs atau ketika dibutuhkan perbaikan-perbaikan source code yang pada akhirnya biaya perbaikan menjadi lebih mahal ketimbang biaya penulisan awalnya. Masalah lainnya yaitu realita dimana terkadang antara anggota tim pengembang (project manager, architect, developer, dan tester) pun sulit untuk saling bertukar informasi. Waktu terkadang habis terlalu lama untuk melakukan rapat, sinkronisasi waktu, menelpon, dan mengurus email. Permasalahan yang lebih kompleks akan timbul jika para anggota tim tidak berada dalam satu lokasi (kantor). Proyek pengembangan menjadi terhambat, over budget, bahkan terkadang tidak sesuai dengan kebutuhan.

Masalah lain yang terkadang timbul adalah biasanya setiap anggota tim menggunakan tools yang berbeda untuk mendukung perannya. Celakanya, antara satu tools satu dengan yang lain biasanya tidak saling terintegrasi. Aktivitas copy dan paste menjadi rutinitas administratif yang harus dilakukan. Selain itu, semua orang yang terlibat dalam proyek tentu harus melaksanakan tugas administratif seperti pembuatan laporan yang pada akhirnya akan berimbas pada produktivitas. Microsoft melihat hal ini sebagai suatu tantangan, yaitu bagaimana membuat semua orang yang terlibat dalam proyek pengembangan perangkat lunak dapat menggunakan suatu system yang terintegrasi, sekaligus mendukung implementasi dari Software Development Life Cycle (SDLC). Setelah melakukan riset selama beberapa tahun, Microsoft meluncurkan Visual Studio Team System (VSTS) kepada publik. VSTS sebenarnya adalah gabungan tools yang telah digunakan secara internal oleh Microsoft selama beberapa tahun, seperti PREfast, Product Studio, dan Source Depot. VSTS telah diuji ketangguhannya oleh Microsoft selama beberapa tahun belakangan ini, karena Microsoft menerapkan Globally Distributed Development (GDD). GDD memungkinkan project manager, developer, tester, dan semua orang yang terlibat dalam proyek pengembangan perangkat lunak tidak berada dalam satu lokasi (kantor). Tim pengembang perangkat lunak di Redmond, Raleigh, Copenhagen, Hyderabad, dan Beijing dapat bekerja sama satu sama lain dengan adanya Team Foundation Server (TFS). TFS adalah platform terintegrasi untuk membantu kolaborasi proyek pengembangan perangkat lunak.

VSTS memberikan kesempatan pada semua orang dalam proyek pengembangan perangkat lunak untuk berkontribusi sesuai dengan perannya dalam satu system terintegrasi. VSTS terdiri dari Visual Studio Team Architect untuk architect, Visual Studio Team Developer untuk developer, Visual Studio Team Tester untuk tester, dan semuanya terhubung ke satu project portal Team Foundation Server yang tidak hanya dapat diakses melalui Visual Studio Team Edition, namun juga dapat diakses melalui web. VSTS juga sudah mendukung penggunaan dua process guidance framework, yaitu Microsoft Solution Framework (MSF) dengan metodologi Agile dan MSF dengan metodologi Capability Maturity Model Integration (CMMI). Selain itu VSTS juga menyediakan tools untuk membuat proses guidance secara manual.

Salah satu tujuan dari VSTS adalah memungkinkan setiap anggota tim (project manager, architect, developers, dan testers) dapat memanfaatkan tools yang mendukung perannya sesuai SDLC dan saling bertukar informasi dalam satu sistem terintegrasi. Project Manager dapat menggunakan Microsoft Project atau Excel untuk menuliskan daftar pekerjaan setiap orang dan mendefinisikan kualitas kode yang dibuat oleh developer, misalnya mendefinisikan suatu peraturan bahwa hanya kode yang telah dites saja yang boleh masuk ke repositori. Architect dapat memodelkan secara visual Service Oriented Application dan secara otomatis menjadikan rancangan arsitektur tersebut menjadi rancangan kelas kode program.

Developer dapat melakukan static analysis terhadap kode yang dibuat, mengukur performansi dari kode program, dan tentu terbebas dari masalah administratif seperti membuat laporan pekerjaan karena semua laporan akan dibuat secara otomatis. Developer juga tidak perlu dipusingkan dengan masalah versioning dari kode yang ditulis, manajemen kode program menjadi lebih teratur dan terorganisasi. Tester dapat secara langsung melakukan tes terhadap lingkungan implementasi dan secara otomatis membuat laporan kepada project manager atau secara langsung memberikan feedback kepada Developer. Project manager dapat mengevaluasi status dari proyek yang dipimpinnya setiap waktu, melihat kinerja developer dan tester, atau melihat laporan-laporan yang dibuat secara otomatis, misalnya laporan tentang bugs melalui web portal. Selain itu, para pengambil keputusan dapat secara langsung mendapatkan informasi tentang status proyek yang berjalan sehingga dapat menghasilkan keputusan bisnis yang tepat


Semua anggota tim dapat mengakses project portal melalui sebuah website yang disediakan oleh Team Foundation Server. Bagi developer, bekerja dimana saja akan menjadi tawaran yang cukup menarik, mengingat untuk menuliskan kode program biasanya dibutuhkan mood yang tidak bisa dijadwalkan kapan mood yang baik akan datang. Developer, tester, dan project manager dapat bekerja secara virtual dari rumahnya masing-masing hanya dengan jaringan internet. Dapat dibayangkan berapa besar penghematan dan efisiensi yang dihasilkan dengan implementasi sistem ini. Suatu tawaran yang cukup menggiurkan untuk para pengembang perangkat lunak.

Read More..