Saturday, September 27, 2014

Apa Itu Software Requirement Specifications (SRS)

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

Sunday, September 21, 2014

Apa Itu Dan Penerapan Inheritansi, Enkapsulasi Dan Polimorfisme

PENJELASAN

Inherentance

Inheritanceatau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:

   class Titik
      private integer x
      private integer y
         Titik()
            x < 0
            y < 0
         {end Titik}

         public getX() -> integer
            -> x
         {end getX}
         
         public getY() -> integer
            -> y
         {end getY}
   {end class}
   class Titik3D: Titik
      private integer z

      Titik3D()
         z <- 0
      {end Titik3D}

         public getZ() -> integer
            -> z
         {end getZ}
   
   {end class} 
 
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:

   Titik3D p <-  new Titik3D()
   integer x <-  p.getX()
   integer y <-  p.getY()
   integer z <-  p.getZ()
 
Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.

Enkapsulasi

Enkapsulasi adalah pembungkus, 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.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.

Polymorphisme

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 Polymorphic 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.
Contoh program java nya :

Simpan dengan nama Mahasiswafirman.java

public class FirmanMahasiswa extends Mahasiswa{
public void printNama(){
System.out.println(“Hallo, saya Mahasiswa yg cakep n baik”);
Super.printNama();
}
}
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
MahasiswaFirman mhs = new MahasiswaFirman();
mhs.setNim(“TI1210037”);
mhs.setNama(“Firman Pamungkas Putra”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian compile dan run.
C:\>javac MahasiswaFirman.java
C:\>javac Main.java
C:\>java Main
Kontruksi objek mahasiswa
Nim:TI1210037
Hallo, saya Mahasiswa yg Cakep n baik
Nama: Firman Pamungkas Putra
C:\>
Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class MahasiswaFirman , memiliki perilaku yang berbeda dengan class Mahasiswa.

 CONTOH LAIN 


Inheritance di java
Dalam pemrograman terutama Java inheritance adalah pewarisan
sifat – sifat yang dimiliki sebuah kelas kepada subkelas(kelas turunan). yang diwariskan diantaranya.
  • variabel
  • method

1. Class Lingkaran

 Gambar 1  

 2. Class Tabung
  Gambar 2 

 3. Class Main

  Gambar 3

OUTPUT PROGRAM

Polimorfisme Di Java
Polimorfisme adalah metode yang digunakan untuk menyatakan satu nama yang merujuk ke beberapa fungsi berbeda.
Ada 2 cara Java dalam mengimplementasikan polimorfisme , yaitu:
1. Methode overloading
2. Methode overriding dengan pewarisan  
Ok tanpa basa-basi lagi di sini ada contoh program polimorfisme, yang mana di dalamnya terdapat Program Interface juga yang bisa sekalian sobat pelajari. Bentuk polimorfismenya bisa dilihat di Class Utama yang berwarna merah pada program di bawah ini.
  • Interface Poligon 
interface Poligon {
  // Deklarasi methode
  double Luas();
  double Keliling();
  String displayInfo();
}
Save dengan nama file Poligon.java
  • Class Lingkaran
class Lingkaran implements Poligon {
  // Deklarasi atribut
  private double radius;
  private final double PI = 3.14;

  // Definisi method
  // Konstruktor
  public Lingkaran(double r) {
    radius = r;
  }

  // Selector
  public double getRadius() {
    return radius;
  }

  // Definisi method dari kelas induk
  public double Luas() {
    return (PI*radius*radius);
  }

  public double Keliling() {
    return (2*PI*radius);
  }
  
  public String displayInfo() {
    return ( "Lingkaran"
           + "\no Jari-jari: " + (float)getRadius()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file Lingkaran.java
  • Class Segi Empat
class SegiEmpat implements Poligon {
  // Deklarasi atribut
  private double panjang, lebar;

  // Definisi method
  // Konstruktor
  public SegiEmpat(double p, double l) {
    panjang = p;
    lebar = l;
  }

  // Selector
  public double getPanjang() {
    return panjang;
  }

  public double getLebar() {
    return lebar;
  }

  // Definisi method dari kelas induk
  public double Luas() {
    return (panjang*lebar);
  }

  public double Keliling() {
    return (2*(panjang+lebar));
  }

  public String displayInfo() {
    return ( "Segi Empat"
           + "\no Panjang  : " + (float)getPanjang()
           + "\no Lebar    : " + (float)getLebar()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file SegiEmpat.java
  • Class Segitiga
import java.lang.Math;

class SegiTiga implements Poligon {
  // Deklarasi atribut
  private double alas, tinggi;

  // Definisi method
  // Konstruktor
  public SegiTiga(double a, double t) {
    alas = a;
    tinggi = t;
  }

  // Selector
  public double getAlas() {
    return alas;
  }

  public double getTinggi() {
    return tinggi;
  }

  // Definisi method dari kelas induk
  public double Luas() {
    return (alas*tinggi)/2;
  }

  public double Keliling() {
    double d;
    d = (double)Math.sqrt((alas*alas)+(tinggi*tinggi));
    return (alas+tinggi+d);
  }
  
  public String displayInfo() {
    return ( "Segi Tiga"
           + "\no Alas     : " + (float)getAlas()
           + "\no Tinggi   : " + (float)getTinggi()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file SegiTiga.java
  • Class Utama
// Program utama
class TesPoligon {
  public static void main(String args[]) {
    // Deklarasi array
    Poligon p[] = new Poligon[4];

    SegiEmpat se = new SegiEmpat(17,8);
    SegiTiga sg =  new SegiTiga(21,4);
    Lingkaran lg = new Lingkaran (10);
    Lingkaran lh =  new Lingkaran (7);
 
  
    //bentuk polimorfisme
    p[0] = se; 
    p[1] = sg;
    p[2] = lg;
    p[3] = lh;

    

    Lingkaran x = new Lingkaran(8);
   
    // Display informasi
    for (int i=0; i < p.length; i++) {
      System.out.println("\n"+p[i].displayInfo());
    }
  }
}
Save dengan nama file TesPoligon.java

Cara menjalankan program :
1. Save semua file di atas
2. Jalankan satu persatu filenya terlebih dahulu
3. Apabila sudah jalan semua jalankan program utama TesPoligon.java


Output Program

Jadi intinya pada program di atas adalah Class Poligon mempunyai bentuk bentuk banyak dari class segitiga, class segi empat dan kelas lingkaran.


REFERENSI : 

  • http://top-ilmu.blogspot.com/2012/10/contoh-program-inheritance-pada-java.html
  • http://ansapena.wordpress.com/2010/04/14/pengertian-encapsulation-inheritance-dan-polymorphism/
  • http://rizkynuryandi.blogspot.com/2012/04/apa-itu-inheritance-dan-polimorfisme.html
  • http://a114808201105354.wordpress.com/2012/04/25/inheritance-pewarisan-dalam-pemrograman-berorientasi-objek-pbo/
  • http://blogs.mervpolis.com/roller/nikkend/entry/apa_itu_inheritance
  • http://www.scribd.com/doc/174337119/Inheritansi-Polimorfisme-Enkapsulasi

Friday, September 12, 2014

Apa Itu Object Oriented Programming (OOP) ?


Dalam postingan kali ini saya akan menjelaskan tentang apa yang disebut Object Oriented Programming (OOP).Object Oriented Programming adalah semacam metode dalam pembuatan program yang berbasiskan pada objek yang mempunyai tujuan untuk menyelesaikan berbagai masalah pemprograman yang semakin meningkat dan rumit. Didalam Object Oriented Programming ini tentunya mempunyai beberapa konsep yaitu :
1.   Class/kelas
Class/kelas ini dapat didefinisikan sebagai sekumpulan data atau sebuah fungsi dalam satu lingkup yang mempuyai tujuan tertentu.didalam kelas biasanya terdapat atribut dan method.berbeda dengan objek, class lebih mendefinisikan method secara umum.
2.   Object/objek
Object/objek ini dapat diartikan sebagai pembugkus dari suatu fungsi dalam pemprograman berorientasi objek (OOP) atau juaga dapat dikatakan sebagai dasar atau modul dalam pemrograman berorientasi objek (OOP).
3.   Enkapitulasi
Dalam sebuah objek tentunya memeiliki barbagai variabel dan method,maka dari itu sebuah objek membutuhkan tempat untuk menampung variabel dan method tersebut,tempat inilah yang dinamakan Enkapitulasi.singkatnya Enkapitulasi adalah sebuah wadah atau pembungkus sebuah program dan data yang akan diolah.enkapitulasi memeiliki beberapa keuntungan diantranya adalah :
  • Melindungi program atau data.
  • Objek dapat dikelola secara independen dan kita juga bisa menyembunyikan informasi yang tidak perlu diketahui objek lain.
Pebedaan pemprograman berorientasi objek dengan pemprogram prosedural adalah :
  1. Pemprograman berorientasi objek lebih fokus pada masalah  yang akan ditangani menggunakan komputer.
  2. Sedangkan pemprograman prosedural memfokuskan tentang bagaimana sebuah komputer menangani suatu masalah.