Jenis Kebutuhan Perangkat Lunak

Jenis Jenis Kebutuhan Perangkat Lunak


ada 2 jenis kebutuhan perangkat lunak, yaitu Fungsional dan Non-Fungsional

1. Kebutuhan Fungsional adalah kebutuhan yang menyatakan layanan yang harus disediakan sistem, reaksi sistem terhadap input tertentu dan perilaku sistem pada situasi terntentu.

contoh : mengecek saldo, menarik uang, dan mentransfer uang


2. Kebutuhan non Fungsional adalah batasan, karakteristik, dan properti pada sistem (dalam lingkungan pengembangan maupun operasional), kualitas.


}Faktor kualitas eksternal (ketertarikan pelanggan)
Correctness
Robustness
Performance
Interface
Reliability
Availability
}Faktor kualitas internal (ketertarikan pengembang)
Readability
Testability
Documentation
Maintainability

Portability 

contoh :
 

10 perangkap dalam rekayasa kebutuhan

10 ( Sepuluh ) Perangkap dalam Rekayasa Kebutuhan!



     Sedikit ilmu yang saya dapatkan dari perkuliahan, semoga bermanfaat bagi pembaca.

     Kali ini saya akan membahas mengenai perangkap dalam rekayasa perangkat lunak. Perangkap perangkat lunak yang dimaksud di sini adalah hal-hal yang menyebabkan suatu perangkat lunak itu menjadi perangkat lunak yang tidak sesuai dengan kebutuhan, bisa disebut errror atau cacat baik dalam skala besar atau kecil.

      Berikut adalah hal-hal yang dianggap sebagai perangkap dalam Rekayasa Kebutuhan.


1. Tidak mengerti tentang  "kebutuhan".
    Kebutuhan yang dimaksud pada bahasan kali ini adalah Kebutuhan akan Perangka Lunak. Para pemangku kepentingan (Stakeholder) memiliki pandangan atau pemikiran yang berbeda tentang kebutuhan sehingga menyebabkan kebingungan ketika proses untuk mengetahui spesifikasi kebutuhan akan perangkat lunak.
    Solusi yang bisa dilakukan adalah dengan meningkatkan keberadaan jenjang kebutuhan. Jangan sampai kebutuhan sebagai dasar terbentuknya sebuah perangkat lunak itu sendiri diabaikan atau tidak begitu dipikirkan. Selain itu pembelajaran tentang Rekayasa Kebutuhan Perangkat Lunak kepada stakeholder juga perlu dilakukan untuk paling tidak menyamakan pandangan yang sebelumnya berbeda tentang perangkat lunak



2. Kurangnya Keterlibatan Pelanggan
    Pelanggan adalah stakeholder yang menjadi target perangkat lunak atau yang akan menggunakan (komersil) perangkat lunak. Oleh karena itu tidak wajar jika pelanggan memiliki keterlibatan yang minim dalam proses spesifikasi kebutuhan perangkat lunak. ada 2 hal yang menyebabkan minimnya keterlibatan perangkat lunak, yaitu
              1. pelanggan yang tidak mau terlibat.
              2. Pengembanga tidak melibatkan user dari berbagai latar belakang ( non super user)
     2 hal ini akan menyebabkan kebutuhan yang sebenarnya tidak tersampaikan sehingga perangkat lunak bisa jadi tidak memuaskan pelanggan nantinya.
    Solusi untuk permasalahan ini adalah dengan mengidentifikasi kelas-kelas pengguna sehingga nantinya kita bisa mengidentifikasi individu-individu dari tiap kelas tersebut. mengidentifikasi kelas-kelas pengguna bisa dengan memperhitungkan frekuensi penggunaan fitur dan level akses.

3. Kebutuhan yang kabur atau ambigu
    Hal ini bisa disebabkan karena pelanggan atau pengguna tidak bisa menyampaikan kebuthan dengan menggunakan bahasa alamiah. Kebutuhan ambigu ini akan mengakibatkan pengembang menggunakan pandangan masing-masing mengenai kebutuhan padahal belum tentu yang dimaksud sesuai dengan kebutuhan yang sebenarnya.
     Solusi untuk permasalahan ini adalah pengembang harus terus berusaha untuk mendapatkan kebuthan secara spesifik dan terukur dari pengguna atau pelanggan, bukan kebutuhan yang umum atau kabur. Selain itu kebutuhan juga harus dipastikan dapat dicapai dan direalisasikan.

4. Tidak Ada Prioritas
    Hal ini disebabkan karena pelanggan menganggap semua kebutuhannya penting dan pengembang cenderung meremehkan kebutuhan yang sebenarnya adalah kebutuhan yang penting. Selain itu hal ini juga bisa disebabkan karena pengembang tidak memperhitungkan keterbatasan kemampuan sumber daya yang ada sehingga kenyataan nantinya tidak sesuai dengan harapan.
    Solusi untuk permasalahan ini adalah memperhitungkan kebutuhan fungsional yang diturunkan dari  deskripsi usecase sehingga akan lebih mudah dikenali dan diprioritaskan. Penggunaan tingkat skala prioritas dengan berdasarkan nilai yang diproyeksikan oleh pengguna atau pengembang menyangkut hal-hal seperti perkiraan biaya, risiko teknis, dll.

5. Membangun fungsionalitas yang tidak digunakan siapapun
   Hal ni disebabkan karena pengguna tidak bisa membedakan antara kebutuhan dan keinginan sehingga beberapa fungsi nantinya hanya digunakan beberapa saat saja. Selain itu terlalu seringnya pengembang berasumsi serta menambahkan perangkat lunak agar terlihat menakjubkan sebenarnya malah menyebabkan fitur tidak digunakan sehinggan mengeluarkan biaya dan tenaga secara sia-sia.
    Solusi untuk hal ini adalah menggali lebih dalam tentang masing-masing kebutuhan. Dengan mengetahui latar belakang kebutuhan itu muncul, maka kita akan bisa mengklasifikasikan antara kebutuhan dan keinginan.

6. Paralis Analisis
    Hal ini disebabkan karena perancang dan programmer tidak mau bekerja berdasarkan spesifikasi yang belum lengkap padahal spesifikasi kebutuhan itu sendiri lengkap ditengah atau menjelang akhir proyek.
    Solusi untuk hal ini adalah dengan melakukan proses pengembangan Perangkat Lunak secara iteratif dengan menetapkan milestones (*kejadian penting).

7. Scope Creep
    Hal ini disebabkan karena konsumen seringkali tidak tahu yang sebenarnya ia butuhkan. Selain itu juga disebabkan karena keinginan yang di anggap kebutuhan dan terus berubah-berubah.
    Solusi untuk permasalahan ini adalah dengan menempatkan dokumen spesifikasi kebutuhan perangkat lunak sebagai sutau kontrak kesepakatan antar kedua belah pihak. Selain itu pertimbangan risiko munculnya perubahan kebutuhan mengharuskan pemberian waktu tenggang dan sumber daya cadangan.

8. Proses perubahan kebutuhan yang tidak memadai
    Hal ini disebabkan karena penyampaian permintaan kebutuhan secara informal kepada programmer dan tidak didokumentasikannya alasan terjadi perubahan.
    Solusi dari permasalahan ini adalah dengan memperbaiki mekanisme pengontrolan perubahan. Selain itu juga bisa dengan menggunakan perkakas bantu untuk manajement perubahan dan pelacakan, misalnya dengan sub-version-sytem, bug tracking system, dan change control board.

9. Analisa perubahan dampak yang tidak memadai
    Hal ini disebakbkan karena kurangnya pengetahuan dan pengalaman dari sistem analys untuk menyetujui perbuahan yang diminta konsumen.
    Solusi dari permasalah ini adalah dengan memahami metode analisis yang sistematis dan baku terhadap setiap perubahan keputusan

10. Kontrol versi yang tidak memadai.
     Penyebab utama hal ini adalah pengelolaan perubahan dokumen yang kurang baik.Sehingga untuk menyelesaikan permasalahan ini dalah dengan meningkatkan manajemen dokumentasi, merevisi SKPL setiap adanya perubahan yang telah disepakati oleh semua pihak yang berkepentingan, serta menggunakan perkakas bantu sub-versi.
   



File System

File System

Definisi

File system adalah struktur logika yang digunakan untuk mengendallikan akses terhadap data yang ada pada harddisk.

Macam File System

1. FAT
merupakan File System yang digunakan dalam sistem operasi windows. Nama FAT berasal dari penggunaan tabel yang memusatkan pada informasi mengenai area mana milik file yang kosong, tidak dipakai, dan setiap file yang tersimpan dalam disk. Versi pengembangan dari format file system FAT dinamai sesuai dengan jumlah bit tabel elemennya, yaitu  FAT 12, FAT 16, dan FAT  32

2. NTFS
merupakan file system standar untuk windows NT  termasuk windows 200, XP, Server 2003, Windows Vista. NTFS menggantikan file system FAT sebagai file system yang dipakai untuk sistem operasi Windows

3. EXT2
pada EXT2 file system, file data disimpan sebagai data blok yang mempunyai panjand sama meskipun bervariasi diantara EXT2 file sistem, besar blok tersebut ditentukan pada saat file system dibuat dengan perintah mk2fs

4. EXT3
disebut juga third extended file system adalah file system journaling yang umum digunakan dalam sistem operasi linux. EXT3 merupakan pengembangan versi journaling dan hampir kompatibel secara keseluruhan dari file system EXT2. fitur journaling ini membuatnya lebih reliable dibanding ext2 dan menghilangkan keperluan untuk mengecek file system setelah shutdown yang semestinya tidak diperlukan.

5. SWAP
file system yang digunakan sebagai virtual memory, bukan untuk penyimpanan data. digunakan sebagai pembantu kinerja dari memory.



Virtual File System

Sistem operasi modern harus mampu mengimplementasikan berbagai sistem berkas dengan tipe yang berbeda dalam waktu yang bersamaan. salah satu teknik yang digunakan sebagai solusinya adalah dengan menggunakan virtual file system (VFS). VFS adalah lapisan perangkat lunak dalam kernel yang menyediakan interface sistem berkas untuk program userspace. VFS juga menyediakan suatu abstraksi dalam kernel  yang mengizinkan implementasi sistem berkas yang berbeda untuk muncul.


Fuse

merupakan sebuah kerangka sistem berkas pada area pengguna. terdiri dari sebuah modul kernel (fuse.ko), sebuah pustaka pada area pengguna, dan sebuah utilitas untuk melakukan proses mount (fusermount). salah satu keistimewaan fuse yang paling utama adalah diizinkannta proses mount oleh pengguna biasa yang aman. hal ini memberikan kemungkinan baru untuk menggunakan sistem berkas.

instalasi fuse 
a. download fuse dari http:/fuse.sourceforge.net/ pada bagian download stable release
b. extract file yang didownload tersebut
c. lakukan instalasi fuse, buka terminal lebih dahulu
    kemudian lakukan langkah berikut :
  1. gunakan hak akses superuser
  2. lakukan perintah ./configure
  3. lakukan perintah make
  4. lakukan perintah make install




Concurrency


CONCURRENCY



Adalah situasi ketika 2 atau lebih suatu hal yang berjalan pada waktu yang bersamaan.

Masalah yanhg dihadapi
·       bahaya berbagai global resource
·         sulitnya OS mengatur alokasi resources secara optimal
·         sulitnya mencari kesalahan

 Istilah pada concurrency
·       ATOMIC OPERATION
a.       operasi yang bersifat atomic (tampaknya tidak bisa di sela)
b.      Dieksekusi semua atau tidak sama sekali
c.       Bagian program yang tidak dapat interrupt
·       
       CRITICAL SECTION
a.       Operasi yang tidak bisa disela ( tidak bisa dijalankan ketika ada proses lain yang sedang menjalankan bagian tersebut
b.      Bagian tertentu dari kode yang membutuhkan akses ke shared resources
·     
          RACE CONDITION
a.       Hasil eksekusi program tergantung pada siapa yang dijalankan terlebih dahulu

 Cara Menangani
·         MANUAL EXECUTION
a.       Sesuatu yang dibutuhkan  untuk memastikan tidak ada proses lain yang menjalankan critical section, ketika ada proses yang sedang dijalankan
b.      Mekanisme menggunakan hardware (disable/enable interrupt)
Menggunakan software (software object/variable)
        
·         Kesalahan pengguna dapat menyebabkan
a.       Starvation, yaitu situasi ketika prosesor tidak dapat menjalankan suatu proses
b.      Deadlock saling menunggu resource dari yang lainnya dan menyebabkan dua proses tidak dapat berjalan

·         SEMAPHORE
Merupakan sebuah nilai integer yang digunakan sebagai sinyal dalam komunikasi antar proses.
Memiliki berbagai kemungkinan nilai seperti
a.       Inisialisasi, yang diisi dengan bilangan integer non negative
b.      Semwait , mengurangi nilai semaphore dan jika hasilnya minus, maka proses akan diblock
c.       Semsignal , menambah nilai semaphoredan jika hasilnya lebih dari 0 maka proses akan memanggil semwait sehingga bisa masuk ke state ready lagi.

·         Pipe merupakan komunikasi sekuensial antar proses. Kelemahan dari pipe adalah hanya bisa digunakan oleh proses saling berhubungan. Terdapat dua jenis pipe antara lain :
a.       Unnamed pipe , digunakan untuk komunikasi antara proses induk dengan proses anak
b.      Named pipe, merupakan komunikasi antar proses yang menggunakan pipe dan diberi nama.


Multi Threading

Multi Threading


      Thread adalah kumpulan dari instruksi yang ada pada prosesor. Thread merupakan bagian dari proses karena proses itu sendiri terdiri dari beberapa Thread. Thread memiliki ciri-ciri yaitu terdapat

  • thread state 
  • saved thread context saat tidak berjalan, 
  • execution stack, 
  • local variables, 
  • dan akses ke memory dan resource yang dimiliki oleh prosesornya.
Keuntungan dari Thread adalah waktu pembuatan yang lebih cepat, begitu pula dengan waktu pemberhentiannya yang juga lebih cepat. Tidak hanya itu, waktu pergantian antar thread juga lebih cepat daripada antar proses, serta komunikasi antar thread lebih efisien.

     berikut adalah contoh penggunaan dari thread :
  • foreground dan background work
  • asynchronous processing
  • speed of execution
     jika tadi dikatakan bahwa pada thread terdapat state, berikut penjelasan lebihnya. 
  • spawn adalah state saat thread muncul atau dibuat oleh prosesor
  • block adalah state saat thread menunggu suatu event
  • unblock adalah ketika event yang ditunggu oleh thread muncul
  • finish adalah saat thread selesai dieksekusi 
jenis implementasi dari thread

user level thread
memiliki ciri-ciri
  • kernel tidak mengetahui keberadaan thread
  • thread management dilakukan oleh aplikasi user level/library
keuntungan


  • Thread switchinh tidak membutuhkan kernel mode privieges
  • dapat berjalan di berbagai OS
kerugian 
  • satu thread blocked, thread lain pada proses sama juga blocked
  • dua thread pada proses yang sama tidak dapat berkalan bersamaan di dua prosesor
hybrid level thread
    ciri-ciri :

  • ada sejumlah kernel level thread yang dipetakan ke sejumlah user level thread
  • pembuatan thread, scheduling, sinkronisasi dilakukan di user space



Proses Programming



Process Programming





    Sebagaimana di pos sebelumnya bahwa setiap Proses pada linux memiliki PID (Proses ID) yang bernilai unik sebagai pembeda antara satu proses dengan proses yang lainnya. PID itu sendiri terdiri dari 16 bit integer yang keluar secara berurutan. Setiap Proses pun memiliki Parent Proses dan bisa juga memilki Child Proses kecuali prose init yang tidak memilki Parent Proses. Contoh kode untuk mendapatkan Proses ID salah satu caranya adalah sbb 
    
      int main (){
printf("the process ID is %d\n", (int) getpid());
printf("the parent process ID is %d\n", (int) getppid());
return 0;
}

    ada 3 cara untuk membuat proses baru melalui kode program berikut :

  1. fungsi system() adalah fungsi yang menjalankan shell command, namun fungsi ini kurang dianjurkan karena fungsi ini menghabiskan banyak memory karena harus memutus program yang sedang berjalan dan kemudian mengalihkannya ke proses baru yang diinginkan. fungsi ini juga kurang portable dibanding kedua fungsi lainnya.
  2. system call fork() adalah proses yang menduplikasi proses yang ada, proses baru itulah yang disebut proses Child. return value dari fork () menunjukkan kita sedang berada pada proses yang mana. jika nilai lebih dari 0 maka sedang berada dalam parent proses, jika = 0 maka sedang berada dalam proses Child, sedangkan jika kurang dari 0 maka error.
  3. fungsi exec *family adalah fungsi yang mengganti program yang sedang berjalan pada suatu proses. ada beberapa keluarga exec yaitu Execv Execvp Execve Execlp Execle

SIGNALS
     Signal adalah sebuah event yang dikirimkan ke suatu proses oleh proses itu sendiri atau proses lain, signal ini digunakan untuk mengirimkan notifikasi kepada suatu proses bahwa ada suatu event. Beberapa yang termasuk kedalam signal Populer :
  1. SIGKILL untuk mengakhiri eksekusi program sekarang juga
  2. SIGTERM mengakhiri eksekusi program
  3. SIGSEGV diterima ketika program melakukan segmentation violation mengeksekusi tanpa hak
  4. SIGSTOP untuk menghentikan sementara suatu proses sekarang juga
  5. SIGCONT untuk melanjutkan kembali program yang di stop
  6. SIGINT untuk interrupt ke suatu proses
     Untuk mengirimkan sinyak ke Proses ada dua cara yang bisa digunakan yaitu dengan menggunakan perintah kill atau menggunakan system call kill().

-wait ()
    system call wait() digunakan untuk membuat proses induk menunggu proses anak selesai. fungsi ini memblok eksekusi program sampai salah satu proses anaknya selesai. 

Daemon

Proses Dibalik Layar


     Pada pos ini saya akan menerangkan kepada anda mengenai proses yang berjalan di background. Proses ini sering juga disebut dengan daemon. Jika pada pos sebelumnya saya menjelaskan beberapa perintah pada linux yang salah satunya adalah penggunaan crontab. Crontab bisa melakukan penjadwalan atau pengulangan perintah dengan pengaturan yang kita inginkan. Namun pada kesempatan kali ini kita tidak akan berhubungan dengan crontab, tapi kita akan langsung mengatur proses yang ada pada linux sehingga bisa melakukan pengulangan perintah secara otomatis. Kita akan mengimplementasikan penggunaan daemon melalui bahasa C++.
     Pada pos yang berisi materi mengenai proses sebelumnya, saya telah menjelaskan bahwa proses itu bisa memiliki anak dan tentunya juga memiliki induk kecuali satu proses yaitu proses init. Setiap proses pun juga memilki PID sebagai pembeda antara satu proses dengan proses yang lain. PID inilah yang akan kita manfaatkan untuk membuat child proses yang identik dengan induknya, kemudian child anak inilah yang akan kita proses sesuai yang kita perintahkan.
      berikut potongan code implementasi daemon dalam bahasa C++


     Bisa anda lihat pada code diatas, fork() adalah fungsi yang digunakan untuk mendapatkan child. sebagai bukti berhasilnya proses mendapatkan child adalah dengan mengecek pid sekarang. PID untuk proses anak adalah lebih dari 0, untuk mengatur proses dibalik layar atau daemon ini, anda perlu menjadi superuser sehingga anda punya hak penuh untuk mengatur daemon ini. Anda bisa menambahkan fungsi while yang berisi perintah yang ingin anda lakukan berulang-ulang secara otomatis.

- Copyright © KODE ILMU - Skyblue - Powered by Blogger - Designed by Johanes Djogan -