Showing posts with label Rekayasa Perangkat Lunak. Show all posts
Showing posts with label Rekayasa Perangkat Lunak. Show all posts

Praktek General Perangkat Lunak

Apakah praktek PL?
Praktek adalah rentetan konsep yg luas, prinsip, metode dan tools yang harus diperhatikan dalam perencanaan dan pembangunan perakat lunak. Praktek juga merepresentasikan detail dari perhatian teknis bagaimana proses perangkat lunak dilaksanakan.
Pokok dari Praktek Perangkat Lunak.
Pokok dari praktek perangkat lunak menurut George Polya, in a book written in 1945 mengemukakan:

  1. Mengerti suatu masalah (communication & analysis)
  2. Merencanakan & solusi (modeling & software design)
  3. Menjalankan rencana (code generation)
  4. Mengevaluasi hasil (testing & quality)

Praktek RPL
Kerangka kerja proses general yang menjadi perhatian RPL:
  • Communication (komunikasi)
  • Planning (perencanaan)
  • Modeling (pemodelan)
  • Construction (konstruksi)
  • Deployment (penyebaran)

Prinsip praktek komunikasi
  • Mendengarkan
  • Persiapan sebelum berkomunikasi
  • Fasilitas komunikasi
  • Tatap muka (face-to-face) adalah yang terbaik
  • Pencatatan dan keputusan dokumen
  • Berkolaborasi dengan pelanggan
  • Tetap Fokus
  • Buat gambar ketika sesuatu tidak jelas
  • Tetap bergerak
  • Negosiasi akan berjalan dengan baik jika kedua belah pihak menang

Prinsip Praktek Perencanaan
  • Mengerti batasan proyek
  • Menlibatkan pelanggan
  • Menyadari bahwa perencanaan bersifat iteratif
  • Mengestimasi berdasarkan apa yang kita ketahui
  • Memperhatikan resiko
  • Tetap realistis
  • Tentukan bagaimana kualitas akan diperoleh.
  • Tentukan bagaimana mengakomodasi perubahan
  • Telusuri (track) apa yang telah direncanakan

Praktek Pemodelan
Kita membuat model untuk lebih meningkatkan pengertian kita pada entitas aktual yg akan dibuat. Model Analisis merepresentasikan keinginan pelanggan dng memilah perangkat lunak menjadi 3 domain yaitu: informasi, fungsi dan behavioral. Model design merepresentasikan karakteristik (sifat) dari perangkat lunak sehingga dapat membantu praktisi untuk membangun secara efektif detail pd level: Arsitektur. User Interface dan Komponennya.

Praktek Konstruksi
Sebelum menulis code kita perlu:
  • Mengerti problem yang akan kita coba selesaikan
  • Mengerti prinsip dasar konsep dan desain
Ambil bahasa pemrograman yang cocok dengan keperluan perangkat lunak yg dibuat dan lingkungan kerjanya. Pilih lingkungan pemrograman yg menyediakan tools untuk membuat kerja lebih mudah. Buat unit-unit test yang diterapkan ketika semua komponen kode rampung semua.

Praktek Penyebaran
Atur ekspektasi pelanggan di tiap iterasi. Paket delivery (pengiriman) yang telah selesai harus di assembly (dirakit) dan di test. Instruksi manual harus tersedia untuk pengguna akhir (end user)
Software bug harus diperbaiki terlebih dahulu sebelum dikirim nantinya.

Testing dan Implementasi di Dunia Nyata(2)

Mengenal ASP.NET MVC 1: TDD


TDD atau Test Driven Development adalah suatu disiplin proses pembuatan software yang bersifat iteratif berdasarkan skenario testing yang telah dibuat sebelum penulisan source-code software dilakukan. Konsep kunci dalam TDD adalah adanya test yang telah dibuat terlebih dahulu sebelum sebuah fungsi dalam program dibuat. Keberadaan fungsi atau modul dalam program harus dibenarkan oleh adanya test yang dibuat berdasarkan suatu skenario.

Visual Studio 2008 menawarkan fitur-fitur untuk testing, khusus untuk edisi-edisi tertentu. Kita bisa menggunakan Visual Studio 2008 dengan fitur testing untuk melakukan test yang terotomatisasi. Namun sebagai pilihan lain, kita juga bisa menggunakan framework testing terpisah seperti nUnit. Dengan tool yang ada kita bisa melakukan pendekatan TDD terhadap program-program yang kita tulis.

ASP.NET MVC adalah framework yang dirancang untuk mudah digunakan dengan TDD. Hal ini didukung oleh arsitektur dasar MVC sendiri yang melakukan pembagian tugas yang jelas antara Model, View, dan Controller. Setiap unit, baik itu Model, View, maupun Controller bisa ditest sebagai unit terpisah dan berfokus kepada tanggung jawab dan pekerjaan masing-masing.

Framework ASP.NET MVC sendiri telah dirancang agar mudah digunakan dengan objek mock yang diperlukan dalam unit testing tertentu. Mock adalah objek-objek yang sengaja diciptakan untuk meniru objek yang sesungguhnya, namun jauh lebih sederhana dan bisa dikondisikan dengan konteks test unit tertentu. Objek-objek yang sering di-mock dalam sebuah program web diantaranya adalah HTTP Context, HTTP Request, dan HTTP Response.

Kita akan mendemokan bagaimana melakukan test unit terhadap program ASP.NET MVC yang sederhana. Mungkin demo ini tidak cukup untuk menggambarkan ASP.NET MVC dalam konteks proses pengembangan program yang menganut metodologi TDD, namun bisa mewakili salah satu aktifitas penting dalam TDD yaitu unit-testing.

Kita akan menggunakan library Moq untuk keperluan pembuatan mocking terhadap objek. Library Moq versi 2.6.1 bisa di-download dari alamat berikut ini: http://moq.googlecode.com/files/Moq.2.6.1014.1-bin.zip. Setelah di-download, ekstrak assembly Moq.dll lalu masukkan sebagai referensi lokal dalam project test dari solusi HelloWorld.sln kita.

Ikuti langkah-langkah berikut ini untuk mendemokan unit-testing dalam ASP.NET MVC:

  1. Buka solusi HelloWorld.sln, lalu tambahkan View dengan nama TddDemo.aspx. View ini akan menggunakan class Product sebagai Model yang sudah pernah kita tambahkan sebelumnya. HTML source dan code-behind dari View ini bisa dilihat dalam Listing di bawah ini.

    [Listing: HTML Source View TddDemo.aspx]

    [Listing: Code-Behind View TddDemo.aspx]

    View ini akan menampilkan detail dari produk yang diberikan oleh Controller dalam action-method TddDemo(). Perhatikan bahwa View ini memiliki Model yang strongly-typed, yaitu Product.

  2. Dalam HomeController, buatlah sebuah action-method baru bernama TddDemo(), seperti terlihat dalam Listing di bawah ini.

    [Listing: Action-Method TddDemo()]

    Yang dilakukan oleh action-method TddDemo() ini cukup sederhana, yaitu menginisialisasi sebuah objek dari class Product, kemudian memberikannya kepada View TddDemo.

  3. Dalam Solution Explorer klik kanan pada nama solusi-nya untuk memunculkan dialog menambahkan project baru seperti terlihat dalam Gambar di bawah ini. Pilih template Test Project, lalu ubah nama project-nya menjadi TestProject. Kemudian klik tombol OK.

    [Gambar: Kotak Dialog Test Project]

    Visual Studio 2008 secara otomatis akan membuatkan test project yang menjadi bagian dari solusi HelloWorld.sln. Dalam test project yang baru saja di-generate terdapat beberapa file yang dibuat secara otomatis untuk keperluan test manual. Kita tidak akan menggunakan test manual saat ini, oleh karena itu hapuslah file ManualTest dari TestProject.

  4. Tambahkan referensi terhadap assembly Moq.dll yang sudah kita download sebelumnya ke dalam TestProject. Lalu ubah nama UnitTest1.cs menjadi UnitTest.cs. Di dalam UnitTest.cs, tambahkan method static FakeHttpContext() seperti terlihat dalam Listing di bawah ini. Jangan lupa untuk menambahkan using Moq dalam source code.

    [Listing: Method FakeHttpContext()]

    Method FakeHttpContext() menggunakan library Moq untuk membuat objek-objek tiruan atau mock dari HTTP Context, HTTP Request, HTTP Response, HTTP Session, dan HTTP Server Utility. Setiap objek mempunyai implementasi default yang sudah dibuatkan oleh library Moq.

  5. Tambahkan dua variable private dalam class UnitTest bernama controller dan actionResult. Kemudian di dalam constructor dari class UnitTest, buatlah sebuah instance dari FakeHttpContext dan HomeController. Perhatikan Listing di bawah ini yang memperlihatkan bagaimana kita melakukan hal ini.

    [Listing: Constructor UnitTest()]

    Di dalam constructor, kita memanggil action-method TddDemo() secara ekplisit dengan memberikan ControllerContext yang sengaja kita buat dengan fakeHttpContext dan data routing kosong. Ketiadaan data routing di sini tidak menjadi masalah karena fokus test-nya sendiri ada pada Controller, View, dan Model.

  6. Buatlah sebuah test-method untuk melakukan pengecekan terhadap hasil dari pemanggilan action-method TddDemo(), seperti terlihat dalam Listing di bawah ini.

    [Listing: Test Terhadap TddDemo()]

    Dalam Listing di atas kita melakukan pengecekan apakah tipe data dari actionResult sama dengan ViewResult. Hal ini karena action-result TddDemo() seharusnya berupa ViewResult. Selain itu, kita juga melakukan pengecekan terhadap tipe data Model yang di-assign ke dalam variable controller.ViewData.Model yang seharusnya bertipe Product.

  7. Buatlah sebuah test-method untuk melakukan pengecekan terhadap model, seperti terlihat dalam Listing di bawah ini.

    [Listing: Test Terhadap Model]

    Di sini kita bisa melakukan asersi terhadap nilai properti-properti dari Model.

  8. Untuk melakukan test terhadap View, kita buat implementasi View sederhana yang akan mensubstitusi View default ASP.NET. Dalam unit testing kita tidak memerlukan View yang benar-benar melakukan rendering ke dalam output karena kita akan kesulitan melakukan asersi terhadap tampilan. Yang dilakukan dalam View substitusi adalah memberikan nilai yang kita harapkan, sehingga kita bisa melakukan asersi terhadap nilai ini. Listing di bawah ini menunjukkan definisi dari class TestView.

    [Listing: TestView]

    Yang kita lakukan dalam TestView adalah memberikan StatusCode 200 kepada FakeHttpContext yang bisa kita pakai dalam asersi nanti.

  9. Buatlah sebuah test-method untuk melakukan pengecekan terhadap View, seperti terlihat dalam Listing di bawah ini. Pengecekan yang dilakukan sederhana saja, yaitu dengan membandingkan StatusCode dari objek Response dengan 200.

    [Listing: Pengecekan Terhadap View]

  10. Kita jalankan semua test-method yang sudah kita definisikan di atas dalam Visual Studio 2008. Jika hasilnya sukses, test-result akan terlihat seperti dalam Gambar di bawah ini.

    [Gambar: Hasil Test Dalam Visual Studio 2008]

Seperti kita lihat dalam demo di atas, ASP.NET MVC memudahkan kita untuk melakukan unit-testing. Pembagian tugas dan tanggung jawab yang jelas antar komponen MVC memungkinkan kita melakukan test terhadap masing-masing komponen. Hal ini mendukung pengembangan software dengan metodologi TDD.

Sumber : http://netindonesia.net/blogs/suhanto/archive/2008/12/11/mengenal-asp-net-mvc-1-tdd.aspx

Testing dan Implementasi di Dunia Nyatabaik

Login SSH dengan Private Key
Ada berbagai cara kita memindahkan file dari satu komputer ke komputer lain, diantaranya:

  • Menggunakan USB Flashdisk
  • Windows File Sharing
  • NFS
  • FTP atau SFTP
  • SCP
  • dan sebagainya
Cara pertama jelas tidak bisa diotomasi.Cara kedua sampai keempat mengharuskan kita membuka write access tanpa password di komputer tujuan supaya bisa otomatis. Kalau ada passwordnya kan harus ada seseorang yang mengetik password tersebut. Jadi agak sulit mengotomasinya. Oleh karena itu, kita akan membahas cara kelima, yaitu SCP. SCP –atau Secure Copy– adalah mekanisme copy file melalui protokol SSH. File yang dikirim terenkripsi. Untuk dapat masuk ke komputer tujuan, kita harus melakukan otentikasi. Jadi ini adalah cara yang relatif aman untuk mengirim file. Tunggu dulu, katanya mau otomatis, tapi kok harus otentikasi?? Berarti harus ada yang mengetik password dong ….Tidak juga, makanya saya menggunakan istilah otentikasi, bukan password. SSH dapat melakukan otentikasi dengan password maupun private key. Pada artikel ini, kita akan membahas tentang otentikasi private key. Artikel ini dibuat menggunakan Ubuntu Hardy dengan openssh sudah terinstal. Ada beberapa langkah yang harus kita lakukan, yaitu:
  1. Membuat private key di komputer pengirim
  2. Mengirim public key ke komputer tujuan
  3. Registrasi public key di komputer tujuan
Sebelum mulai, kita tentukan dulu studi kasusnya. Di tengah pertarungan dengan Pain, guru genit Jiraiya tiba-tiba berhasil menemukan kelemahan musuhnya. Dia ingin mengirim file berisi informasi tersebut ke sang Hokage seksi, yaitu Tsunade. Rencananya, dia akan login ke server di markas dengan username Tsunade dan menyimpan file tersebut di folder /home/tsunade/important. Tentunya Tsunade tidak akan memberitahukan passwordnya kepada Jiraiya, mengingat tabiatnya yang genit. Sebagai gantinya, dia mendaftarkan public key Jiraiya ke user accountnya di server, sehingga Jiraiya bisa login sebagai Tsunade, tanpa Tsunade harus memberitahukan passwordnya kepada Jiraiya. Pada cerita di atas, kita punya dua komputer, yaitu laptopnya Jiraiya yang dibawanya kemanapun pergi, dan server di markas. Kita juga punya dua user, yaitu Jiraiya dan Tsunade. Agar bisa melakukan public key authentication, tentunya hal pertama yang harus dilakukan adalah membuat public key.

Membuat public key

Jiraiya harus membuat public key di laptopnya sendiri. Public key selalu berpasangan dengan private key. Untuk membuat public key, Jiraiya mengetik perintah berikut di terminal.
ssh-keygen
Perintah tersebut akan menanyakan password untuk membuka private key. Jiraiya memilih tidak memberikan password. Sebetulnya ini kurang aman, karena kalau ada orang lain yang berhasil mendapatkan file private key, dia bisa login ke server di markas tanpa hambatan. Tapi mau bagaimana lagi, hidup sebagai ninja sangat berbahaya. Kita tidak tahu apakah setelah pertarungan kita masih punya tangan untuk mengetik password. Tekan enter beberapa kali sampai selesai. Berikut output yang dihasilkan.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jiraiya/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jiraiya/.ssh/id_rsa.
Your public key has been saved in /home/jiraiya/.ssh/id_rsa.pub.
The key fingerprint is:
6f:7c:e2:52:f1:14:5d:2c:7f:3a:53:5e:fe:7f:98:9c jiraiya@laptop

Selanjutnya, kita harus kirimkan file public key ke Tsunade agar didaftarkan di accountnya. File public key ini bisa ditemukan di folder /home/jiraiya/.ssh/ dengan nama id_rsa.pub. Public key bisa dikirim melalui media apapun, misalnya email, usb flashdisk, burung hantu, maupun burung merpati.

Registrasi Public Key

Singkat kata, Tsunade telah menerima public key dari Jiraiya. Dia harus mendaftarkannya di accountnya agar Jiraiya bisa login. Tsunade harus login dulu ke server dan menaruh file public key tersebut di sana. Misalnya dia letakkan di folder /home/tsunade/ dan nama filenya diubah menjadi jiraiya_id_rsa.pub. Untuk meregistrasinya, Tsunade menggunakan perintah berikut di terminal.
cat /home/tsunade/jiraiya_id_rsa.pub >> /home/tsunade/.ssh/authorized_keys
Setelah itu, public key tidak lagi diperlukan, sehingga bisa dihapus.
rm /home/tsunade/jiraiya_id_pub
Selesai sudah konfigurasi di server, sekarang kita kembali ke pertarungan Jiraiya vs Pain.

Login dengan public key

Sesaat sebelum Jiraiya menekan tombol Send di Mozilla Thunderbird, Pain mendaratkan serangan mematikan ke Jiraiya, sehingga ybs tidak dapat menggerakkan tangannya. Jiraiya membatin, “Untung saja saya sudah setup public key di server dengan account Tsunade. Baiklah, mari kita scp saja.”
Untuk mengirim file tersebut melalui scp dengan public key, berikut adalah perintahnya
scp -i /path/menuju/private/key username@komputer-tujuan:folder-tujuan
Jadi, untuk mengirim file pain-secret.txt ke server dengan username tsunade, Jiraiya menggunakan perintah berikut
scp -i /home/jiraiya/.ssh/id_rsa pain-secret.txt tsunade@server:/home/tsunade/important/
File akan segera terkirim tanpa harus mengetik password.

 
 
 
 
Copyright © artikel39