Rabu, 25 Juli 2012

Pemodelan Perangkat Lunak

Saya sudah sering menulis tentang topik ini: pemodelan perangkat lunak, namun karena adanya kebutuhan untuk "mengumpulkan" tulisan-tulisan saya yang tersebar, menjadi lebih mudah dibaca, maka saya (kembalil) menulis topik ini.

Silahkan baca disini, bagi yang ingin mengetahui mengenai UML sebagai Bahasa Pemodelan Perangkat Lunak:

  1. UML dan Pemodelan Software: tulisan ini membahas mengenai jenis-jenis diagram yang ada pada UML, beserta kegunaannya, dan pada proses SDLC mana diagram itu dapat digunakan http://stanlysk.blogspot.com/2012/04/pemodelan-dengan-uml.html
  2. Model Sistem Perangkat Lunak: tulisan ini membahas tentang LINK official UML, serta maksud dan tujuan digunakannya UML sebagai alat pemodelan perangkat lunak. http://stanlysk.blogspot.com/2012/07/model-sistem-perangkat-lunak.html
  3. UML Use Case Diagram; bagian tulisan ini menjelaskan secara mendetail, langkah-langkah logis tertentu dalam memodelkan perangkat lunak, dengan pendekatan user-oriented dan menggunakan UML Use Case Diagram http://stanlysk.blogspot.com/2012/05/use-case-diagram.html
  4. Sequence Diagram; bagian tulisan ini menjelaskan secara mendetail, langkah-langkah logis tertentu dalam memodelkan perangkat lunak, dengan menggunakan UML Sequence Diagram  http://stanlysk.blogspot.com/2012/05/sequence-diagram.html
Bagi yang ingin melihat Video Tuturial tentang Pemodelan menggunakan UML, maka saya menganjurkan beberapa LINK Youtube dibawah ini:
1. Pengenalan tentang UML, klik disini: http://www.youtube.com/watch?v=FkRwbVUVFvE&feature=fvwrel

Tautan dibawah ini, adalah daftar tools yang bisa digunakan untuk menggambar model UML:








Senin, 23 Juli 2012

Model Sistem Perangkat Lunak



Pertanyaan pertama yang selalu muncul di benak pengembang perangkat lunak adalah "mengapa harus repot-repot membuat model sistem dari perangkat lunak yang akan dibangun?"

Memang, jika hanya melihat dari "satu sisi", maka langkah pemodelan sistem perangkat lunak, seperti membuang waktu. Namun demikian, pada kenyataannya, tidaklah demikian. Para pengembang perangkat lunak yang punya banyak "jam terbang" dan telah mengembangkan berbagai "model" akan menyetujui bahwa langkah pemodelan merupakan langkah yang penting dan strategis, dalam pengembangan perangkat lunak.

Sedikitnya ada beberapa alasan mengapa para pengembang "pemula" tidak memahami pentingnya langkah pemodelan perangkat lunak, diantaranya adalah:
1) terlalu banyak melibatkan pekerjaan "dokumentasi" perangkat lunak;
2) tidak menggambarkan persyaratan non - fungsional
3) tidak dapat menggambarkan keseluruhan aplikasi yang akan dikembangkan
4) jika modelnya terlalu "mendetail" maka justru akan membuat kebingungan.

Para pengembang "pemula" JUSTRU harus mengubah paradigma diatas, dengan meyakini bahwa model perangkat lunak, merupakan syarat penting untuk memulai kegiatan pengembangan perangkat lunak. Misalnya, dengan menggunakan model diagram, maka pengembang dapat "mengkomunikasikan" dengan pengguna, perihal perangkat lunak yang akan dikembangkan. Dari sisi pengembang, maka model perangkat lunak akan menjadi "panduan" pada langkah-langkah selanjutnya.

Banyak notasi yang dapat digunakan untuk memodelkan perangkat lunak, yang umum digunakan adalah:
Diagram Konteks,
Data Flow Diagram
Diagram Aktivitas
Diagram Use Case
Diagram Kelas
Diagram Sekuens
Diagram Navigasi

UML adalah salah notasi pemodelan yang umum digunakan dalam industri perangkat lunak. Untuk acuan RESMI dari notasi pemodelan UML, dapat mengklik tautan dibawah ini:
1. http://www.uml.org/
3. Document Associated with UML version 2.0:
4. UML version 2: In support on model driven development:


Sabtu, 21 Juli 2012

Catatan Seminar Sabtu, 21 Juli 2012

Hari ini, Sabtu 21 Juli 2012 kembali saya diminta untuk memberikan Seminar tentang Teknologi Informasi. Kali ini yang meminta saya adalah salah satu komunitas Kristen. Mereka meminta saya menerangkan tentang Pengaruh Teknologi Informasi, khususnya untuk generasi muda.

Berikut adalah LINK terkait materi saya tersebut:

1. Paradigma Kristen mengenai Teknologi Informasi; klik disini:
http://stanlysk.blogspot.com/2012/06/information-technology-christian.html

2. Tentang Perspektif Teknologi Informasi, klik disini:
http://stanlysk.blogspot.com/2012/04/perspektif-teknologi-informasi.html

3. Apa itu Web 2.0?, klik disini:
http://stanlysk.blogspot.com/2012/05/apa-itu-web-20.html
 
Demikian beberapa catatan saya terkait pelaksanaan Seminar kali ini. Semoga bermanfaat!

Jumat, 20 Juli 2012

Requirements Engineering

Apakah yang dimaksud dengan requiremens engineering tersebut?

Menurut pemahaman Ian Sommerville, software requirements adalah ...
Requirements engineering is the process of establishing: (1) the services that the customer requires from a system; (2) the constraints under which it operates and is developed
Jadi, pada dasarnya, requirements adalah proses dimana developer sistem/aplikasi mencoba untuk memahami secara jelas, apa yang diinginkan user (atau stakeholders) pada sistem/aplikasi yang ingin dikembangkan.
Perlu diperhatikan disini, bahwa proses requirements merupakan proses yang sangat krusial dalam pengembangan perangkat lunak. Apalagi jika kita berparadigma bahwa ukuran "kualitas" perangkat lunak yang akan dibangun itu adalah "sesuai dengan kebutuhan dan keinginan pengguna".
Yang menjadi tantangan disini adalah bagaiman pengembang dan pengguna dapat memiliki kesaman persepsi mengenai setiap services dan constraints dari perangkat lunak yang akan dikembangkan.

Software Requirements atau Persyaratan Perangkat Lunak daapt dibedakan menjadi:
1) User Requirements: 
statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers
2) System Requirements:
A structured document setting out detailed descriptions of the system services. Written as a contract between client and contractor
dan
3) Software Specification Requirements:
A detailed software description which can serve as a basis for a design or implementation. Written for developers

Dalam prakteknya, pendefinisian software requirements itu dilakukan dengan menggunakan berbagai model diagram, seperti misalnya UML Use Case Diagram, ataupuan Data Flow Diagram. Tujuan menggunakan notasi diagram adalah untuk "memudahkan" pemahaman antara user dan pengembang.


Proses pendefinisian perangkat lunak, bertujuan untuk "menyelesaikan" berbagai perbedaan antara pengembang dan pengguna seperti yang diilustrasikan pada gambar diatas.
Secara umum, software requirements sering dibedakan menjadi requirement fungsional, non-fungsional dan requirements domain.

Untuk penulisan dokumen Software Requirements Spesification (SRS) dapat mengacu pada standar IEEE, seperti yang ditulis selengkapnya disini:
http://asingh.com.np/blog/ieee-srs-recommendations/
atau bisa juga melihat tulisan blog disini:
http://techwhirl.com/skills/tech-docs/writing-software-requirements-specs/

Beberapa Contoh Template Dokumen SRS dapat diunduh disini:

Penjelasan Video Tutorial Pembuatan Software Requirements Specification, dapat dilihat disini:
http://www.youtube.com/watch?v=HcRQ8oLik18
dan, disini:
http://www.youtube.com/watch?gl=ID&v=_XTQjKhh6hQ

Semoga Bermanfaat ...

Rabu, 18 Juli 2012

Software Process

Apa yang dimaksud dengan Software Process?

Sejak tahun 1968, pengembangan perangkat lunak memasuki babakan baru dengan mengadopsi pendekatan system engineering. Pendekatan pengembangan perangkat lunak dengan system engineering bermakna bahwa perangkat lunak dikembangkan menurut kaidah keteknikan yang mengikuti urutan langkah-langkah logis tertentu. 

Dengan demikian, pengembangan perangkat lunak dapat dimodelkan menurut prinsip engineering tertentu. Model pengembangan perangkat lunak inilah yang disebut sebagai software process.
Sommerville mengartikan software process sebagai:
Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model

Selanjutnya, Sommerville mengusulkan bahwa aktivitas umum dari Software Process tersebut adalah:
specification, design and implementation, validation and evolution.

Pressman, melihat software process dari sudut pandang praktis. Lihatlah sebuah Video tayangan berikut ini:


Pendekatan Pressman pada software process adalah communication, planning, modeling dan deployment.

Singkatnya, dalam memahami pengembangan perangkat lunak secara engineering, terdapat langkah-langkah logis yang berurutan tertentu (sebagai proses) yang akan menghasilkan perangkat lunak.

Menurut Sommerville,
terdapat beberapa software process yang berkembang sekarang ini, diantaranya adalah:
1) Model Waterfall
2) Model Perkembangan Evolutionary
3) Model Pengembangan Formal System
4) Model Pengembangan Guna-Ulang (reused-based)

Selanjutnya software process ini "diterjemahkan" menjadi langkah-langkah logis pada metodologi pengembangan perangkat lunak, seperti misalnya RAD, WebEng, RUP ataupun AUP.

Selasa, 17 Juli 2012

Pekerja TIK

ICT Worker atau Pekerja TIK adalah mereka yang menekuni bidang profesi dalam dunia Teknologi Informasi dan Komunikasi. PBB membedakan Pekerja TIK ini dalam dua kategori utama:
1) ICT Worker
2) ICT Enabled Worker


Perbedaan signifikan antara kedua jenis pekerja TIK ini adalah:
ICT Worker atau disebut juga ICT Professionals adalah individu yang memiliki kemampuan untuk menghasilkan karya cipta inovasi terkait bidang ICT. Yang termasuk kelompok ini misalnya para programmer atau system analyst yang dapat membuat produk software. 
ICT Enabled Workers atau disebut juga ICT Users adalah individu yang memiliki kemampuan untuk menggunakan/memakai produk-produk TIK. Misalnya adalah individu yang dapat menggunakan Aplikasi Microsoft Office Excel dalam membuat laporan keuangan.

Pendidikan Tinggi diharapkan dapat menghasilkan kedua jenis pekerja TIK ini untuk menjawab kebutuhan dunia-kerja yang ada. Kualitas sumber daya manusia dalam bidang TIK, dapat dibedakan dalam kedua bagian besar tersebut diatas.

Senin, 16 Juli 2012

Jurnal Teknik Informatika Unsrat

Akhirnya ...

setelah menunggu beberapa waktu lamanya (tidak terlalu lama pastinya) Jurnal Teknik Informatika Universitas Sam Ratulangi mendapat ISSN. (Lihat Gambar dibawah)


Dengan adanya Surat Keputusan ISSN ini, maka secara legal, Jurnal Teknik Informatika Universitas Sam Ratulangi, sudah dapat diterbitkan.

Pihak pengelola e-Jurnal Universitas Sam Ratulangi sendiri telah memberikan "space" untuk Jurnal Teknik Informatika Unsrat disini:
http://ejournal.unsrat.ac.id/index.php/informatika

Tentu saja, kehadiran Jurnal Teknik Informatika (untuk pertama kalinya dalam sejarah Universitas Sam Ratulangi) merupakan kebanggaan tersendiri bagi segenap Civitas Academica Informatika Unsrat.

Semoga dapat dimanfaatkan untuk kemajuan keilmuan informatika ...

Peran strategis TIK

Apa sebenarnya peran Teknologi Informasi dan Komunikasi?
Gambar dibawah menjelaskan dengan singkat sebuah "proses" berkesinambungan dari TIK (atau ICT - Information and Communication Technology) dalam mendukung "menciptakan" keunggulan kompetitif suatu bangsa.



Pada dasarnya, keunggulan suatu bangsa dapat dibedakan menjadi dua jenis:
1) keunggulan komparatif
2) keunggulan kompetitif

Yang dimaksud dengan keunggulan komparatif itu adalah keunggulan karena sumber daya alam. Misalnya dapat kita contohkan disini adalah posisi geografis Indonesia yang strategis, karena merupakan "titik persilangan" dalam pelayaran laut internasional, menghubungkan Atlantik dan Pasifik. Ini merupakan keunggulan komparatif. Dapat kita contohkan disini juga adalah kekayaan sumber daya alam Indonesia, yang beragam jenisnya dan tersebar meluas di Nusantara, mulai dari minyak bumi, gas alam, besi bahkan uranian dan plutonium. Ditambah dengan "daerah tropis", yang membuat tanah Indonesia relatif lebih subur.

Tpi, kemajuan suatu bangsa, tidak hanya ditentukan dari keunggulan komparatif saja. Juga dibutuhkan keunggulan kompetitif; yang saya contohkan pada gambar diatas adalah "kualitas" sumber daya manusia, menyangkut penguasaan pengetahuan dan kompetensi. Dimana, peran Perguruan Tinggi menjadi strategis, karena "memiliki" proses bisnis yang dapat menciptakan keunggulan sumber daya manusia, menyangkut "learning process" yang berkelanjutan.

Pada dasarnya, proses belajar (atau learning process) itu adalah proses "mengakuisis" pengetahuan. Dimana, pengetahuan ini, memiliki bahan dasar yang disebut informasi (sebagai kumpulan data yang bermakna/berarti). Peran perguruan tinggi atau higher education disini adalah dalam mendampingi (dan membentuk) sumber daya manusia agar secara efisien dapat mengolah informasi untuk pengetahuan dan trampil "menggunakan" pengetahuannya dalam bentuk kompetensi (atau penguasaan ketrampilan teknis tertentu). Pengetahuan dan kompetensi adalah dua hal mendasar yang "menciptakan" kuatlitas sumber daya manusia.

Tentu saja, menciptakan "learning model" yang cepat dan berkarakter menjadi peran utama dari Perguruan Tinggi (terutama para dosen, di garis depan); sehingga peserta didik dapat meng-akuisisi pengetahuan dan memiliki kompetensi tertentu terkait bidang keilmuan yang dipelajari.

Learning Model harus didasari pada "ability on accessing and managing information as source of knowledge". Jadi isu dari learning model ada dua: accessing dan managing informasi. Peran TIK ada pada dua hal ini: (1) bagaimana mengakses informasi yang tepat sasaran dan (2) bagaimana mengelola informasi tersebut, sehingga "lebih cepat" menghasilkan pengetahuan dan kompetensi ...

Jumat, 13 Juli 2012

Pengantar Rational Unified Process (RUP)

Rational Unified Process sebagai suatu kerangka kerja, makin banyak diminati di lingkungan akademis. Dalam artian, makin banyak para mahasiswa yang ingin menyelesaikan Tugas Proyek, Kerja Praktek bahkan Tugas Akhirnya dengan menggunakan framework Rational Unified Process (RUP). Tentu saja, hal ini merupakan perkembangan yang baik.

(sumber gambar: http://www.ibm.com/developerworks/rational/library/content/03July/1000/1156/1156_fig1.gif) 

Namun, minat yang makin meningkat dalam mengimplementasikan RUP juga harus dibarengi dengan pemahaman teori yang baik mengenai kerangka kerja tersebut.

Berikut ini adalah sebuah link acuan (berbasis slide kuliah) mengenai kerangka kerja RUP tersebut:

Tautan tersebut diatas dikeluarkan oleh Fakultas Ilmu Komputer - Universitas Indonesia. Referensi acuan yang dipakai adalah Rational Unified Process version 2003.06.12.01; sedangkan untuk buku acuan yang digunakan adalah Applying UML and Patterns: An Intriduction to Object-oriented Analysis and Design and the Unified Process karangan Craig Larman, Prentice Hall, 2002 ISBN: 0-13-092569-1

Untuk proses analisis dan disain menggunakan kerangka kerja RUP, biasanya akan menghasilkan beberapa dokumen tertentu; yakni:
RMP atau Requirement Management Plan
STRQ atau Stakeholder Request
Vision
Use Case Diagarm
Use Case Spesification
Supplementaru Spesification
Glossary

Dokumen-dokumen diatas merupakan dokumen standar yang harus dihasilkan pada fase inception, elaboration dan construction.

Disamping itu, apabila menggukan tool Rational Rose, maka, "proses" pendefinisian perangkat lunak yang akan dibangun juga harus menghasilkan dokumen:
Attribute Matrix All Features
Attribute Matrix Stakeholder Request
Attribtue Matrix Supplementary Spesification

dilengkapi dengan,
Traceability Stakeholder Needs VS Features
Traceability Features VS Use Case
Traceability Features VS Supplementary

Link dibawah ini adalah sebuah contoh penulisan dokumen-dokumen tersebut diatas:
https://docs.google.com/open?id=0BxSxy7HfW5oJNER6d1hibU5udVE

Link dibawah ini adalah sebuah Metodologi PAUS yang merupakan "modifikasi" gabungan dari RUP dan Agile:
http://ecl.cs.ui.ac.id/PAUS/index.htm

Semoga bermanfaat dan Selamat Belajar !!!

Selasa, 10 Juli 2012

Masalah Interoperability

Masalah "interoperability" antar tools sepertinya selalu menggerogoti hidup para developer aplikasi. Lihat saja, yang saya alami baru-baru ini. Saya memiliki Microsoft Visual Studio 2008 (original) yang sering saya gunakan untuk mendevelop aplikasi dalam bahasa C++ dan C#. Kesulitannya mulai terasa saat harus mengerjakan aplikasi dalam skala enterprise; yakni saat akan mengintegrasikan model arsitektur aplikasi dengan "working code" ataupun "test code".

Berikut ini adalah kutipan-kutipan dari forum komunitas MSDN:
-------------------------------------------------------------------------------------------
Halo, 
Saya memiliki pertanyaan tentang praktek desain UML dalam NET. 
Apa UML alat yang direkomendasikan untuk digunakan untuk NET dan. VS 2008? 
Apakah ada sesuatu seperti RationlRose untuk. NET? Menggunakan "Rational Rose 2003" Saya belum menemukan "C #" model, misalnya dengan ... 
ada juga IBM Rational Rose Developer untuk Visual Studio , tetapi memiliki "integrasi terbatas dengan VS 2003 dan 2005" ... 
Saya tidak Shure jika alat ini harus atau tidak untuk diintegrasikan di VS, saya pikir tidak penting ... 
Apa yang Anda gunakan? 
By the way, saya ingin jika memungkinkan untuk mengimpor diagram kelas VS (. Cd) ke lingkungan UML
. 

-------------------------------------------------------------------------------------------------------------
Jika Anda bertanya kepada saya pertanyaan itu dalam kurun waktu 2003 Studio Visual maka saya pasti akan mengatakan XDE Rasional untuk Visual Studio adalah pilihan terbaik. Hari ini, sejak IBM membeli Rasional dan produk XDE tidak pernah direvisi untuk Visual Studio 2005 atau 2008, jawabannya kurang jelas.

IBM tidak menjual produk yang disebut IBM Rational Software Architect meskipun tanpa plugin. BERSIH (lebih banyak uang untuk itu) alat ini hanya mendukung Java dan C + +.
Aku benar-benar dibeli pada gagasan dari Rasional Lingkungan Pengembangan eXtended (XDE) di mana pemodelan dibangun ke IDE.Tampaknya meskipun bahwa IBM adalah hanya tertarik memberikan janji bahwa jika membangun Eclipse yang. NET pengembang benar-benar tidak mungkin untuk bermigrasi ke Visual Studio ketika tendangan Eclipse dalam segala hal.
Tolong beritahu saya jika Anda tahu dari alat lain UML besar meskipun ...
- Doug
---------------------------------------------------------------------------------------------------------------
Saya mencoba untuk mencari tahu hal yang sama.
Saya akan berbagi penemuan saya terbaru dan quandaries.
VS 2003 memiliki SKU disebut Enterprise Architect. Ini seharusnya memiliki alat pemodelan yang kuat.
Sekarang ada SKU disebut Studio Team System 2008 Edisi Visual Arsitektur tapi saya tidak bisa mendapatkannya dari uber-MSDN langganan saya. Aku benar-benar ingin melihat apa yang dilakukannya.
Kemudian, "fungsionalitas pemodelan kuat" itu harus digulung menjadi VS Edisi Tim SKU dimulai dengan '05 dan mungkin melanjutkan '08.
Jadi, saya menginstal Visual Studio Team System 2008 Team Suite bersama dengan Visio Pro 2007. Saya bahkan tidak bisa "balik" proyek (alat yang mengubah kelas C # untuk UML). Pada VS08, "Proyek / Visio UML" pilihan tidak hadir dan tidak ada "Visio UML" Toolbar. Aku agak bingung.
Namun, saya BISA "balik" menggunakan VS05 Professional Edition dengan Visio Pro 2007. Kedua pilihan menu tersebut dan toolbar yang terlihat dalam VS05 PE.
Berikut adalah link mengenai "reverse engineering" alat: http://office.microsoft.com/en-us/visio/HP815507451033.aspx
Ia melakukan pekerjaan yang bagus untuk menciptakan kelas-kelas dan interface UML dari kode C #.
Namun, tampaknya tidak menjadi alat siklus hidup penuh. misalnya saya tidak dapat membuat perubahan pada UML dan memilikinya menghasilkan kode.
BISA SOMEOME DARI MICROSOFT SILAKAN POST PETA JALAN INI macam TECHNOLOGIES DAN ALAT DAN MENJELASKAN APA FUNGSIONALITAS ADALAH SAAT YANG SKU DAN / ATAU KOMBINASI PRODUK?
Banyak terima kasih!
TerryMcP
----------------------------------------------------------------------------------------------
Jawaban singkat:   Reverse engineering dari kode ke model Visio UML bekerja dengan kombinasi Visio Pro 2007 dan Visual Studio Team System untuk Arsitek Software 2005. Tidak bekerja dengan Visio Pro 2007 dan Visual Studio Team System Arsitektur Edisi 2008. Namun, Visio Pro 2007 tidak memungkinkan Anda untuk melakukan reverse engineering dari database.
Mengapa?:   Kemampuan untuk membalikkan kode insinyur sekarang disediakan oleh semua versi dari Visual Studio dalam bentuk desainer kelas di mana kode ini terus disinkronkan dengan model. Fungsi pemodelan tambahan akan disediakan dalam Team System Visual Studio di masa depan.  
David Trowbridge | Grup Manajer Program | Visual Studio Team System Arsitektur Edition | Microsoft 
ADUH!

----------------------------------------------------------------------------------------------

Kutipan-kutipan diatas, makin memperkuat dugaan saya tentang "masalah interoperability" antar tool. Konektivitas UML DIagram dengan IDE Microsoft Visual Studio ternyata baru mulai "terjadi" pada lingkunga IDE Microsoft Visual Studio 2010 untuk Professional Edition.

Mungkin, sudah tiba waktunya Microsoft mulai  mengejar "ketertinggalan" dengan IDE lainnya (yang berbasis FREE), dengan mengintegrasikan kemampuan forward engineering dan reverse engineering-nya.

Belum lagi, dalam persoalan menggunakan framework ataupun metodologi pengembangan ... Saya belum pernah menemukan IDE yang terintegrasi seluruh proses SDLC-nya dengan berbagai kerangka kerja ... apalagi untuk Formal Methods ...

Saya kira a long road head masih harus dijalani oleh para developer ...


Senin, 09 Juli 2012

Kelas di Abad ke-21

Implementasi Teknologi Informasi untuk mendukung proses belajar mengajar semakin meluas. Menurut hemat saya, salah satu peranan penting berbagai produk Web 2.0 dalam mendukung proses belajar mengajar adalah mendorong suasana kolaborasi antar mahasiswa/siswa dengan mahasiswa/siswa, dan antar mahasiswa/siswa dengan guru/dosen.

Penelitian yang serius mengenai memanfaatkan Web 2.0 untuk kepentingan pendidikan mulai marak dilakukan. Tantangannya adalah bagaimana mengklasifikasikan produk Web 2.0 sesuai manfaat masing-masing dengan kurikulum terkini. Untuk area program studi Teknik Informatika sendiri, sudah "terlebih" dahulu hadir secara nyata, misalnya yang ditunjukkan oleh Khan Academy ataupun EdX.

Berikut adalah sebuah ilustrasi suasana ruangan kelas abad ke-21:


Meskipun banyak pihak yang menyambut baik perkembangan ini, studi lebih lanjut tentang manfaat yang dapat diperoleh harus digencarkan. Riset-riset terkini mengenai topik ini akan berkisar pada "pengukuran" besar manfaat yang diperoleh pada setiap stakeholders pendidikan. Apakah manfaatnya hanya akan berkisar pada efisiensi, efektivitas ataupun hingga strategic competitive value. Terlebih, apakah manfaatnya bisa menciptakan sumber daya manusia yang lebih superior dibandingkan generasi sebelumnya?


Jumat, 06 Juli 2012

UML di IDE Netbeans


(Gambar diambar dari javastudy.wordpress.com)


Setelah sedikit mengutak-atik Netbeans Community, akhirnya saya mendapat kabar kalo UML sudah bisa digunakan di IDE Netbeans 6.9.1. Biasanya saya menggunakan Rational Rose untuk membuat model diagram UML, tapi akhirnya saya "tergoda" juga untuk menggunakan IDE Netbeans.

Sedikit perbedaan adalah, pada Rational Rose, disediakan fitur untuk menggambar diagram2 UML yang lebih lengkap, sedangkan untuk IDE Netbeans hanya disediakan Class Diagram, Activity Diagram, Use Case Diagram, Sequence Diagran dan State Diagram. Dari sudut pandang seorang dosen, maka saya mengatakan bahwa diagram2 tersebut sudah cukup untuk digunakan dalam perkuliahan maupun sebagai bagian dari Laporan Tugas Proyek dan Tugas Akhir.

Fitur click-and-drag yang disediakan Netbeans dalam menggambar UML Diagram, tentu saja memberikan kemudahan tersendiri bagi para pengguna IDE ini. Ditambah dengan fitur "reverse engineering" yang akan memudahkan kita untuk men-generate code dari diagram2 yang telah kita gambar.

Berikut ini adalah petunjuk instalasi Plug In UML:

Berikut ini adalah Petunjuk Pemakaian UML di Netbeans:

Berikut ini adalah Video Petunjuk Penggunaan UML di Netbeans:

Untuk yang ingin mengetahui UML secara lebih mendalam melalui Video, dapat melihat link ini:


Kamis, 05 Juli 2012

Internetware

Hong Mei, Gang Huang dan Tao Xie dari Peking University - Cina mengusulkan sebuah paradigma baru dalam pengembangan perangkat lunak berbasis web; yakni INTERNETWARE. Trio peneliti dari Peking University tersebut mengemukakan paradigma Internetware di Majalah Computer (June 2012 (Vol. 45, No. 6) pp. 26-310018-9162/12/$31.00 © 2012 IEEE; Published by the IEEE Computer Society)

Apa yang dimaksud dengan Internetware menurut Hong Mei, Gang Huang dan Tao Xie dari Peking University tersebut? Internetware adalah software paradigm (atau disebut juga programming paradigm) yang menyediakan sekumpulan teknologi dalam mengembangkan aplikasi untuk memenuhi persyaratan-persyaratan dalam lingkungan implementasi berupa internet.

Argumentasi mereka adalah ...
Software on the Internet differs from traditional software in terms of its form, structure, and behavior. Consequently, software applications (including software entities and their interactions) for Internet computing should be autonomous, cooperative, situational, evolvable, emergent, and trustworthy

Jadi, dari sudut pandang bentuk, struktur dan perilaku perangkat lunak di internet (misalnya web services) jika dibandingkan dengan aplikasi tunggal ataupun clien-server (LAN) memiliki perbedaan yang cukup tajam. 
Internetware harus memenuhi beberapa aspek terkait:
1) Software Model (what to be)
2) Software Operating Platform (how to run)
3) Engineering Approach (how to do)
4) Quality Assessment (how well)


Gambar diatas menunjukkan bagaimana para peneliti di China mengembangkan teknologi untuk mendukung internetware.

Yang diusulkan oleh rekan-rekan peneliti di China merupakan suatu terobosan dalam perkembangan keilmuan teknologi informasi. Tentu saja, perkembangan internet yang sedemikian pesat, membuat paradigma internetware mulai keliatan masuk akal. Kesediaan infrastruktur "keras" seperti konektivitas kabel maupun broadband, merupakan prasyarat mutlak dalam mengimplementasikan paradigma internetware.
Mungkin pada level universitas, seperti Universitas Sam Ratulangi, sudah dapat mengimplementasikan paradigma internetware dalam blue print pengembangan infrastruktur yang mendukung sistem penyelenggaraan universitas.

Catatan:
Tulisan ini adalah adaptasi dari Majalah Computer Edisi Juni 2012, yang berjudul Internetware: A Software Paradigm for Internet Computing.

Tentang para penulis dapat dilihat dibawah ini:
Hong Mei is a professor in the School of Electronics Engineering and Computer Science, Peking University, China. His research interests include software engineering, software reuse, distributed object technology and middleware, and programming languages. Mei received a PhD in computer science from Shanghai Jiaotong University. He is a senior member of IEEE. Contact him at meih@pku.edu.cn.
Gang Huang is a professor in the School of Electronics Engineering and Computer Science, Peking University. His research interests include software engineering, particularly software architecture and middleware. Huang received a PhD in computer science from Peking University. He is a member of IEEE. Contact him at hg@pku.edu.cn.
Tao Xie is a visiting professor in the School of Electronics Engineering and Computer Science, Peking University, and an associate professor in the Department of Computer Science at North Carolina State University. His research interests include software engineering, particularly software testing, program analysis, and software analytics. Xie received a PhD in computer science from the University of Washington, Seattle. He is a member of IEEE and a senior member of ACM. Contact him at xie@csc.ncsu.edu.

Tata Kelola TI

Pada dasarnya, Tata Kelola TI (diterjemahkan dari IT Governance) adalah bagaimana melakukan pengelolaan yang optimal bagi sumber daya SI/TI yang dimiliki organisasi. Pengelolaan yang optimal ini berkaitan dengan peranan SI/TI yang memberikan manfaat bagi organisasi termasuk mengendalikan setiap resiko yang ada. Implementasi tata kelola TI diharapkan dapat memberikan manfaat bagi organisasi.

Menurut Grembergen[1] tata kelola TI adalah kapasitas organisasi sebagai tanggung jawab direksi, manajemen eksekutif, dan manajemen teknologi informasi untuk mengendalikan rumusan dan implementasi strategi SI/TI untuk memastikan selarasnya sumber daya SI/TI dengan bisnis organisasi. Grembergen menekankan pengertian tata kelola TI pada bagaimana organisasi memandang, mengelola dan mengoptimalkan sumber daya SI/TI yang dimilikinya dalam mendukung tujuan organisasi.


Menurut Weill dan Ross[2], tata kelola TI adalah mengenai pengelolaan hak-hak dalam pengambilan keputusan dan kerangka kerja yang dapat dipertanggungjawabkan untuk mendorong terwujudnya hal-hal yang diharapkan dalam penggunaan SI/TI. Weill dan Ross[2] mengusulkan lima pilar utama dari tata kelola TI yang perlu untuk dikelola oleh seluruh stakeholders organisasi. Kelima pilar tata kelola TI tersebut adalah IT Principles, IT architecture, IT Infrastructure, IT Business Application Needs,  IT Investment. (Lihat Gambar 1).

Grembergen[1] mengatakan bahwa tantangan krusial tata kelola TI sekarang ini adalah bagaimana memastikan bahwa penerapan tata kelola TI pada suatu organisasi dapat memberikan manfaat bisnis yang optimal dari setiap investasi SI/TI yang dilakukan. Manfaat bisnis ini harus dapat terukur dengan jelas.

Rabu, 04 Juli 2012

Source Code Review

Yang namanya seorang software engineer pastinya sudah kenal dengan source code review. Terlebih bagi mereka yang berkecimpung dalam dunia software testing. Software testing, sebagai bagian dari daur hidup pengembangan perangkat lunak, sebenarnya adalah "kunci" dari dihasilkannya perangkat lunak yang berkualitas.

Tren yang saya amati sekarang ini, hampir semua hasil tugas project, laporan kerja praktek dan bahkan karya akhir mahasiswa yang mengambil topik software development, sering "mengabaikan" tahap software testing. Beberapa laporan bahkan tidak mencantumkan sama sekali kalau pernah melakukan prosedur pengujian perangkat lunak. Sebagian hanya mencantumkan pengujian fitur antar muka. Jarang, bahkan hampir tidak ada yang melampirkan dokumen, telah melakukan source code review. Hal ini tentu saja, sangat memprihatinkan.


Memang harus diakui, diperlukan ketrampilan khusus dalam melakukan source code review. Dan untuk level pengguna, biasanya tidak ada yang dapat melakukan source code review. Bahkan untuk level profesional TI sekalipun, tugas melakukan source code review itu sangat melelahkan. Tentu saja, secara ideal, diperlukan tim khusus untuk melakukan source code review.

Secara umum, source code review dapat dilakukan secara otomatis dan manual. Static Code Analysis, dapat dilakukan dengan penekanan pada me-review source code menurut predefined rules tertentu. Static Code Analysis adalah contoh dari source code review secara otomatis. Tujuan utamanya adalah untuk menemukan bugs dan security flaws sedini mungkin pada aplikasi yang akan di-released. Melakukan static code analysis merupakan suatu keharusan dalam pengujian aplikasi sebelum di-released. Sayangnya, static code analysis tidak dapat mendeteksi malicious code yang ditambahkan/diselipkan oleh attacker.

Manual Code Review, memiliki kemampuan untuk mendeteksi malicioius code atau perilaku sistem aplikasi yang tidak diinginkan. Kelemahnnya adalah merupakan suatu pekerjaan yang sangat memakan waktu apabila baris code yang harus diperiksa sangat panjang dan banyak.

Teknik source code review yang baik adalah yang sesuai dengan target pengembangan sistem perangkat lunak yang akan dikembangkan. Dengan perkembangan IDE yang semakin handal, maka pekerjaan melakukan software testing menjadi relatif lebih ringan. Meskipun demikian, esensi kompetensi dasar seorang software tester tidak berubah: ketahanan, ketajaman dan ketepatan.

Berikut ini adalah link terkait tools yang dapat digunakan untuk melakukan static code analysis:

Dibawah ini, dapat dilihat perbandingan IDE pengembangan aplikasi:

Sedangkan dibawah ini, terdapat link menuju Portal Software Testing:



Metode Formal

Mengapa seorang software engineers PERLU memiliki kemampuan matematika yang mumpuni? Pertanyaan ini seringkali ditanyakan oleh mahasiswa jurusan informatika dan masyarakat umum. Sepertinya telah terjadi salah-pemahaman mengenai keilmuan Informatika itu sendiri. Masyarakat awam "memiliki" pemahaman bahwa informatika terkait dengan Facebook, Twitter dan Internet Marketing, sedangkan mahasiswa informatika sering memahami keilmuan informatikan itu sebagai Gaming dengan berbagai bentuknya. Semua itu merupakan pandangan yang keliru.

Beberapa waktu lalu saya telah menulis tentang kemampuan matematika dasar yang harus dimiliki oleh seorang software engineer. Tulisan itu dapat dibaca pada link ini:

Pada bagian ini, saya akan menulis tentang Formal Methods atau Metode Formal. Sebagai pengantar, maka perlulah dikemukakan apa itu formal methods tersebut ...
Formal methods is the term applied to the analysis of software (and computer hardware) whose results are obtained purely through the use of rigorous mathematical methods. The mathematical techniques used include denotational semantics, axiomatic semantics, operational semantics, and abstract interpretation.

Jika diterjemahkan maka akan seperti ini:
Metode formal adalah istilah yang diterapkan pada analisis perangkat lunak (dan perangkat keras komputer) yang hasilnya diperoleh murni melalui penggunaan metode matematika ketat. Teknik-teknik matematika yang digunakan meliputi semantik denotational, semantik aksiomatik, semantik operasional, dan interpretasi abstrak.


Formal Methods merupakan bagian pembahasan pengembangan perangkat lunak yang makin berkembang sekarang ini. Mahasiswa jurusan informatika harus memahami konsep dan implementasi Formal Methods dalam pengembangan perangkat lunak, dan untuk itu dibutuhkan kemampuan matematika dasar dan lanjut yang menyeluruh.

Misalnya kita dapat melihat apa yang dimaksud dengan interpretasi abstrak:
Abstract interpretation models the effect that every statement has on the state of an abstract machine (i.e., it 'executes' the software based on the mathematical properties of each statement and declaration). This abstract machine over-approximates the behaviours of the system: the abstract system is thus made simpler to analyze, at the expense of incompleteness (not every property true of the original system is true of the abstract system).
Use of assertions in program code as first suggested by Hoare logic. There is tool support for some programming languages (e.g., the SPARK programming language (a subset of Ada) and the Java Modeling Language — JML — using ESC/Java and ESC/Java2, Frama-c WP (weakest precondition) plugin for the C language extended with ACSL (ANSI/ISO C Specification Language).

atau dalam terjemahannya ...
Interpretasi abstrak memodelkan efek dari setiap pernyataan pada keadaan mesin abstrak (yaitu, 'mengeksekusi' perangkat lunak berdasarkan sifat matematis dari setiap pernyataan dan deklarasi). Mesin abstrak memperkirakan perilaku sistem: sehingga dapat digunakan untuk menganalisis, dengan model sistem yang tidak lengkap (yakni tidak setiap properti dari sistem yang asli dimodelkan pada sistem abstrak). 
Penggunaan pernyataan dalam kode program sebagai pertama kali diusulkan oleh logika Hoare. Ada alat dukungan untuk beberapa bahasa pemrograman (misalnya, pemrograman SPARK bahasa (subset dari Ada) dan Modeling Language Jawa - JML - menggunakan ESC / Jawa dan ESC/Java2, Frama-c WP (prasyarat paling lemah) plugin untuk C bahasa diperpanjang dengan ACSL (ANSI / ISO C Language Specification)).

Matematika Diskrit adalah salah satu mata kuliah yang mendasari konsep-konsep metode formal. Sedangkan Kalkulus, Aljabar Linier, Probabilitas dan Statistik serta Metode Numerik memberikan latar belakang keteknikan untuk formulasi permasalahan, pemodelan masalah dan penyusunan algoritma penyelesaian masalah, untuk selanjutnya disalin dalam bahasa coding.

Berikut ini adalah slide kuliah tentang Formal Method:

Security and Privacy Requirements

Security dan Privacy Requirements sering diklasifikan sebagai non-fungsional requirements dalam pengembangan perangkat lunak. Namun, seiring dengan perkembangan perangkat lunak yang menuju pada tren Komputasi Awan, maka requirements yang berhubungan dengan security dan privacy menjadi kian diperhitungkan oleh user dan stakeholders pemilik perangkat lunak.

Berikut ini adalah non fungsional requirements terkait high-level security dan privacy dalam aplikasi e-voting (Pemilihan Online):

1) Eligibility (atau kelayakan); yang dimaksud dengan kelayakan dalam aplikasi e-voting adalah pemilih yang layak dapat diidentifikasi dengan akurat dan terdaftar dengan baik. Eligibility dalam aplikasi e-voting diartikan juga sebagai hanya pemilih yang terdaftar yang dapat mengeksekusi proses voting pada e;ection server.
2) Uniqeness (atau keunikan); yang dimaksud dengan keunikan disini adalah aktor pemilih hanya diberikan satu kali kesempatan mengeksekusi proses pemilihan, setelah "hak satu kali" dikonfirmasi, maka aktor pemilih tidak bisa lagi melakukan proses pemilihan. Tentu saja, akan terdapat skenario jika aktor pemilih, memilih beberapa kali, maka sistem hanya akan mendaftarkan pilihan voter yang terakhir saja.
3) Accuracy (atau keakuratan); yang dimaksud dengan persyaratan keakuratan adalah semua hasil pemilihan yang telah dilakukan harus dapat dihitung dengan tepat. Tidak ada yang dapat mengubah, menghapus, membatalkan, menggandakan semua hasil pemilihan.
4) Soundness (atau kukuh); yakni invalid votes (atau pemilih yang gagal melakukan prosedur pemilihan) tidak akan dihitung. Misalnya hasil pemilihan yang menunjukkan format yang keliru atau content yang keliru. Kasus yang dapat dicontohkan adalah hanya ada 1, 2 dan 3 kemungkinan pilih, tapi yang keluar angka selain dari 1, 2 dan 3.
5) Privacy (atau kerahasiaan); persyaratan non fungsional ini terkait dengan kerahasiaan identitas aktor pemilih dan ketidakmungkinan untuk menghubungkan identitas aktor pemilih dengan hasil pemilihan tertentu.
6) Fairness (atau keseragaman); yang dimaksud dengan fairness adalah semua aktor pemilih harus dapat melihat hasil akhir pemilihan pada waktu yang sama. Tidak boleh ada yang mendahului ataupun ketinggalan.
7) Transparency (atau keterbukaan); yakni data yang terkait dengan sistem informasi pemilihan dan content hasil pemilihan harus available untuk semua stakeholder. Termasuk source code aplikasi, yang harus dapat direview oleh siapa saja.
8) Robustness (atau kekuatan); yang dimaksud dengan robustness adalah tidak ada aktor stakeholders yang dapat mempengaruhi proses voting yang dilakukan aplikasi, dimulai pada proses masukan hingga keluaran dari sistem aplikasi.
9) Uncoercibility; yang dimaksud dengan requirement ini adalah seorang coercer tidak dimungkinkan untuk dapat mempengaruhi (memaksa) aktor voter untuk mengubah hasil pemilihan yang telah dihitung oleh sistem aplikasi
10) Receipt-freeness; untuk mencegah jual-beli suara, maka semua aktor voter tidak diizinkan untuk mendapatkan nota tercetak yang menunjukkan content hasil pemilihan aktor pemilih.
11) Verifiability; yakni setiap aktor pemilih dapat memeriksa bahwa infrastuktur sistem informasi telah menerima dengan tepat hasil pilihan dan telah menghitung pilihan aktor pemilih (ini yang disebut personal verifiability); dan pada saat yang bersamaan juga dapat mengkonfirmasi semua user tentang hasil perhitungan (ini disebut universal verifiability).

References:
1. M. Volkamer, Evaluation of Electronic Voting, Springer - 2009.
2. R. Celeste, D. Thornburgh and H. Lin, Asking the Right Questions about Electronic Voting, National Academies Press - 2006