Rabu, 24 September 2014

Software Requirement Specifications


Secara sederhana, Software Requirement Specifications (SRS) adalah dokumen yang menjelaskan tentang berbagai kebutuhan yang harus dipenuhi oleh suatu software. Dokumen ini dibuat oleh developer (pembuat software) setelah menggali informasi dari calon pemakai software. Pembuatannya pun seharusnya mengikuti standar yang ada dan paling diakui oleh para praktisi rekayasa software di dunia. Oleh karena itu, standar yang akan dibahas di sini adalah standar dari IEEE.
IEEE membuat standar SRS agar dokumen penting itu tidak ambigu dan tentu saja komplit. Lengkap. Dengan standar itu, si penggguna dapat mencurahkan semua keinginannya terkait software tersebut dengan jelas dan akurat sehingga sang developer pun dapat memahami apa yang diinginkan pengguna dengan tepat. Bahkan, bagi perorangan, standar ini dapat membantunya dalam mengembangkan outline SRS yang baku khusus untuk perusahaannya, membantunya membuat dokumen SRS dengan format dan isi yang standar (minimal), serta membantunya mengembangkan rincian-rincian pendukung lainnya.
SRS yang baik akan bermanfaat bagi customer, supplier, ataupun perorangan. Manfaat-manfaat tersebut antara lain:
  1. Sebagai bentuk perjanjian antara customer dan supplier tentang software apa yang akan dibuat
  2. Mengurangi beban dalam proses pengembangan software
  3. Sebagai bahan perkiraan biaya dan rencana penjadwalan
  4. Sebagai dasar validasi dan verifikasi software di ujung penyelesaian proyek nantinya
  5. Memfasilitasi transfer, semisal software tersebut ingin ditransfer ke pengguna atau mesin-mesin yang lain. Customer pun merasa mudah jika ingin mentransfer software ke bagian-bagian lain dalam organisasinya. Bahkan, jika terjadi pergantian personil developer, proyek dapat mudah ditransfer ke personil baru dengan memahami SRS ini.
  6. Mendasari perbaikan produk software di kemudian hari. Jadi, kadang SRS boleh diperbaiki dengan alasan dan mekanisme tertentu serta atas kesepakatan antara customer dan developer.
Ada beberapa istilah yang digunakan dan harus diketahui untuk memahami standar SRS yang dibuat IEEE ini. Istilah-istilah tersebut adalah:
  • Kontrak: dokumen yang mengikat secara hukum dan disepakati oleh customer dan supplier, termasuk syarat-syarat teknologi dan organisasi, biaya, serta jadwal pengerjaan. Kontrak bisa mengandung sesuatu yang kurang formal tetapi bermanfaat, seperti komitmen atau harapan dari pihak yang terlibat.
  • Customer (pelanggan) : Pihak yang membayar untuk produk dan biasanya yang menentukan persyaratan (requirements).
  • Supplier (pemasok): Pihak yang membuat produk software untuk customer.
  • Pengguna: Pihak yang mengoperasikan atau berinteraksi langsung dengan software. Pengguna dan customer biasanya bukan orang yang sama.
Untuk menyusun SRS, beberapa hal perlu dipertimbangkan, yaitu:
  • Sifat SRS;
  • Lingkungan SRS;
  • Karakteristik dari SRS yang baik, yaitu:
    1. Correct (benar)
    2. Unambiguous (tidak ambigu, tapi jelas)
    3. Complete (lengkap)
    4. Consistent (konsisten)
    5. Ranked for importance and/or stability (prioritas penting dan atau stabilitas)
    6. Verifiable (dapat diverifikasi)
    7. Modifiable (bisa dimodifikasi)
    8. Traceable (bisa dilacak)
  • Penyusunan SRS secara bersama-sama;
  • Evolusi SRS ;
  • Membuat prototipe, seperti model atau contoh;
  • Mencantumkan desain sistem di SRS;
  • Pencantuman persyaratan proyek di SRS. Untuk persyaratan proyek ada dokumen tersendiri
Pada akhirnya IEEE membuat template sebuah SRS, yang isinya antara lain:
1. Introduction
1.1 Purpose
1.2 Scope
1.3 Definitions, acronyms, and abbreviations
1.4 References
1.5 Overview
2. Overall description
2.1 Product perspective
2.2 Product functions
2.3 User characteristics
2.4 Constraints
2.5 Assumptions and dependencies
3. Specific requirements
4. Appendixes
5. Index
Untuk specific requirements sendiri ada beberapa template yang dibuat oleh IEEE, salah satunya adalah:
3.1 External interface requirements
3.1.1 User interfaces
3.1.2 Hardware interfaces
3.1.3 Software interfaces
3.1.4 Communications interfaces
3.2 Functional requirements
3.2.1 Mode 1
3.2.1.1 Functional requirement 1.1
.
.
.
3.2.1.n Functional requirement 1.n
3.2.2 Mode 2
.
.
.
3.2.m Mode m
3.2.m.1 Functional requirement m.1
.
.
.
3.2.m.nFunctional requirement m.n
3.3 Performance requirements
3.4 Design constraints
3.5 Software system attributes
3.6 Other requirements


Minggu, 21 September 2014

apa itu Inheritance, Polymorphism, dan Enkapsulasi

 Inheritance (Pewarisan)
inheritance (penurunan sifat / pewarisan), ini merupakan ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama. Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk obyek turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut dengan hirarki obyek.
Keuntungan Inheritance:
“Saat anda ingin membuat class baru, dan ternyata pada class lain telah ada code yang ingin anda gunakan, maka anda tinggal meng-extend class lain tersebut.”

Contoh Program
  • Simpan dengan nama Inheritance1.java
class Inheritance1
{
private String na;
private String nama;
public void setna (String van)
{
na=van;
}
public void setnama (String vnama)
{
nama=vnama;
}
public String getna()
{
return (na);
}
public String getnama()
{
return (nama);
}
public void display()
{
System.out.println(“NPM”+getna());
System.out.println(“Nama”+getnama());
}
}
  • Simpan dengan nama Inheritance2.java
class Inheritance2 extends Inheritance1
{
private double ip;
public void setip (double vip)
{
ip=vip;
}
public double getip()
{
return(ip);
}
public void display()
{
System.out.println(“IP : “+getip());
System.out.println(“Nama : “+getnama());
System.out.println(“NPM : “+getna());
}
}
  • Simpan dengan nama InheritanceCoba.java
public class InheritanceCoba
{
public static void main(String[] args)
{
Inheritance2 ap1=new Inheritance2();
ap1.setna(“56410268 & 55410416″);
ap1.setnama(“Rudy Eriyanto & Pulung Bagaskoro”);
ap1.setip(3.5);
ap1.display();
}
}
“Kemudian compile dan run program tersebut, maka akan menghasilkan output seperti ini :

 Polymorphism ( Banyak Bentuk )
Polymorphism, suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphism dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Polymorphism dapat disamakan dengan Method Overloading, dimana di dalam sebuah class terdapat beberapa method dengan nama sama. Sebuah Method bernama CetakData() yang misalnya berfungsi menampilkan data String, tentu tidak bisa menangani masukan berupa data numerik, boolean, ataupun karakter, demikian juga sebaliknya. Solusi yang bisa dilakukan adalah dengan menyediakan beberapa Method CetakData() yang akan menangani setiap tipe data, sehingga data apapun yang diberikan sebagai parameter tetap bisa diproses.
Berikut adalah contoh program Polymorphism pada Java:

Contoh Program 
  • Simpan dengan nama CetakDataTipe.java
class CetakDataTipe {
// membuat method dengan nama sama tapi berbeda tipe data
public void CetakData(String Cetak) {
System.out.println(Cetak);
}
public void CetakData(int Cetak) {
System.out.println(Cetak);
}
public void CetakData(double Cetak) {
System.out.println(Cetak);
}
public void CetakData(char Cetak) {
System.out.println(Cetak);
}
}
  • Simpan dengan nama Polymorphism.java
public class Polymorphism {
public static void main(String[] args) {
CetakDataTipe data = new CetakDataTipe();
System.out.print(“Cetak Data Tipe String : “);
data.CetakData(“Sumatra”);
System.out.print(“Cetak Data Tipe Integer : “);
data.CetakData(1989);
System.out.print(“Cetak Data Tipe Double : “);
data.CetakData(16.5 / 2);
System.out.print(“Cetak Data Tipe Char : “);
data.CetakData(‘N’);
}
}
“Kemudian compile dan run program tersebut, maka akan menghasilkan output seperti ini :

 

 Enkapsulasi (Pembungkusan)
Enkapsulasi/ Pembungkusan (Encapsulation)
Enkapsulasi merupakan suatu cara pembungkusan data dan method yang menyusun suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaimana menyembunyikan informasi detail dari suatu class (information hiding). Dalam OOP, enkapsulasi sangat penting untuk keamanan serta menghindari kesalahan permrograman, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dua hal yang mendasar dalam enkapsulasi yakni :
• Information hiding.
• Interface to access data.
Information hiding
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.
Interface to access data
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.
Manfaat utama teknik encapsulation adalah kita mampu memodifikasi kode tanpa merusak kode yang telah digunakan pada class lain.
Enkapsulasi memiliki manfaat sebagai berikut:
> Modularitas
Source code dari sebuah class dapat dikelola secara independen dari source code class yang lain. Perubahan internal pada sebuah class tidak akan berpengaruh bagi class yang menggunakannya.
> Information Hiding
Penyembunyian informasi yang tidak perlu diketahui objek lain.

Contoh program :
Buatlah sebuah kelas baru dan simpanlah dengan nama mahasiswa.java, berikut contoh syntaxnya :
class mahasiswa {
public String sevenbelle;
public mahasiswa(String n){
this.sevenbelle = n;
}
public String tampilkansevenbelle(){
return sevenbelle;
}
public void fakultas(){
System.out.println("teknik industri ");
}
public void jurusan(){
System.out.println("teknik informatika ");
}
private void tingkat(){
System.out.println("dua");
}
}

Kemudian, buatlah satu kelas baru lagi dengan nama sevenbelle, berikut merupakan syntaxnya:

class sevenbelle {
public static void main(String arg[]){
mahasiswa kelas= new mahasiswa("sevenbelle");
System.out.println("Kelas saya : "+ kelas.tampilkansevenbelle());
kelas.fakultas();
kelas.jurusan();
}
}

Outputnya:
gambar : 1

 gambar : 2







 gambar : 3










REFERENSI :

  • http://ebookrudy.wordpress.com/2012/04/19/pengertian-inheritance-dan-polymorphism-beserta-contoh-program/
  • http://barrardliverpool.blogspot.com/2012/04/pengertian-enkapsulasi-dan-contoh.html