Tugas Analisis dan Perancangan Sistem Informasi
Nama : Viqha Felayati
Kelas : SI 38 06
NIM : 1202144096

Metodologi Dalam Pengembangan Sistem

Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Agile development methods merupakan salah satu dari  Metode pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak.
Agile Process merupakan sekelompok aktifitas pembangunan perangkat lunak secara iteratif yang menekankan pada aktifitas konstruksi (desain dan koding). Agile Process mengeliminasi sebagian besar waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin mematuhi jadwal deliver sistem yang telah dijanjikan. Requirements yang dibutuhkan secara langsung di-drive oleh pelanggan itu sendiri, dan apabila terjadi perubahan terhadap requirements tersebut, pengembang dituntut mampu beradaptasi dengan perubahan yang terjadi.
Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada. Sehingga saat membuat perangkat lunak dengan menggunakan agile development methods diperlukan inovasi dan responsibiliti yang baik antara tim pengembang dan klien agar kualitas dari perangkat lunak yang dihasilkan bagus dan kelincahan dari tim seimbang.
Agile Prosese terbagi menjadi beberapa bentuk, diantaranya adalah:
  1. Adaptive Software Development (ASD)
  2. Dynamic Systems Development Method (DSDM)
  3. Scrum
  4. Crystal
  5. Feature Driven Development (FDD)
  6. Agile Modeling (AM)
  7. Lean Software Development (LSD)
  8. Agile Unified Process (AUP)

Sejarah Agile Development
Menurut Dr Winston Royce pada tahun 1970, Dr Winston Royce mempresentasikan makalah berjudul "Mengelola Pengembangan Perangkat Lunak Sistem Besar," yang mengkritik pembangunan berurutan.
Istilah The Agile Manifesto diperkenalkan pada tahun 2001. Sejak itu Agile Movement, dengan segala nilai-nilai, prinsip, metode, praktek, alat-alat, juara dan praktisi, filosofi dan budaya, secara signifikan mengubah landscape modern rekayasa perangkat lunak komersial pembangunan di era Internet.
Pada bulan Februari 2001, 17 pengembang perangkat lunak bertemu di Snowbird ,Utah resort, mendiskusikan metode pengembangan ringan. Mereka menerbitkan Manifesto untuk Agile Software Development.
Menurut Agile Alliance, 12 prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development:
·      Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus
·      Menerima perubahan kebutuhan, sekalipun diakhir pengembangan
·      Penyerahan hasil/software dalam hitungan waktu dua minggi sampai dua bulan
·      Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung
·     Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
·      Komunikasi dengan berhadapan langsung adalah komunikasi yang efektis dan efisien
·      Software yang berfungsi adalah ukuran utama dari kemajuan proyek
·     Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.
·      Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
·      Kesederhanaan penting
·      Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri
·      Secara periodic tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.

Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebut agile process model berusaha untuk menyiasati 3 asumsi penting tentang proyek software pada umumnya :
·     Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berjalannya proyek.
·     Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan
·     Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
Sumber:


9.5 Object: The Cosmic Superclass

Di Java, setiap kelas yang telah di deklarasikan tanpa sebuah explicit extends clause akan secara otomatis extends the class object. Class object mendefinisikan beberapa general method, yaitu:
·         toString, yang menghasilkan string yang menjelaskan objek.
·          equal, yang membandingkan objek dengan satu sama lain.
·          hashCode, yang menghasilkan kode numerik untuk menyimpan objek dalam satu set.

9.5.1 Overriding the toString Method
toString method disebut otomatis kapanpun anda menggabungkan sebuah string dengan sebuah objek. Misalkan:
“box=” + box;
On one side of the + concatenation operator is a string, but on the other side is an object reference.
Bilangan juga di konversi ke strings ketika di gabungkan dengan string lain. Misalkan:
int umur = 18;
String s = "Umur Hari adalah " + age;
Let’s try the toString method for the BankAccount class:
BankAccount momsSavings = new BankAccount(5000);
String s = momsSavings.toString();
// Sets s to something like "BankAccount@d24606bf"
Hashcode dapat diguaan untuk mengatakan suatu objects apart- different objects seperti memiliki hashcode yang berbeda.
Kita harus mengoverride method dan tetap mendukung versi sebelumnya di BankAccount class.
public class BankAccount{
. . .
public String toString(){
return "BankAccount[balance=" + balance + "]";
}
}
This works better:
BankAccount momsSavings = new BankAccount(5000);
String s = momsSavings.toString(); // Sets s to "BankAccount[balance=5000]"
Override toSting method untuk menghasilkan string yang menjelaskan object’s state.

9.5.2 The equals Method
The object class juga mendukung equals method, yang menyatakan bahwa dua objek memiliki content yang sama:
if (stamp1.equals(stamp2)) . . .
// Contents are the same
Hal ini berbeda dengan operator ==, yang menyatakan bahwa dua objek adalah identik:
if (stamp1 == stamp2) . . .
// Objects are the same

9.5.3 The instanceof Operator
Diperbolehkan menyimpan subclass reference dalam variable superclass:
ChoiceQuestion cq = new ChoiceQuestion();
Question q = cq; // OK
Object obj = cq; // OK
Misalkan ada variable bertipe objek dan dia memegang Question refence. Dala hal ini kita dapat menggunakan cast untuk mengkonvertnya:
Question q = (Question) obj;
Namun ini agak berbahaya jika salah, dan obj sebenarnya mengacu ke sebuah objek dari jenis yang tidak berhubungan, maka "class cast" exception is thrown.
Untuk menghindarinya, dapat menggunakan instanceof operator yang digunakan untuk mengetes bahwa sebuah objek milik jenis tertentu. Misal:
Obj instanceof Question;
Akan mengembalikan nilai true jika tipe obj adalah konversi ke Question.

Dengan menggunakan instanceof operator, cast yang aman dapat dibuat:
if (obj instanceof Question){
Question q = (Question) obj;
}
Instanceof itu bukan sebuah method, dia adalah operator biasa seperti halnya + atau <. Tetapi instanceof tidak mengoperasikan pada bilangan.


Sumber: Horstmann, Coy. Fifth Edition. Big Java Early Objects.

8.2 Merancang Method yang Baik dalam Pemrograman

Beberapa kriteria yang berguna untuk menganalisis dan meningkatkan antarmuka publik dari kelas:

8.2.1 Providing a Cohesiv Public Interface
Sebuah kelas harus mewakili satu konsep. Semua fitur antarmuka harus terkait erat dengan konsep tunggal yang mewakili kelas.
Jika ada antarmuka publik dari kelas mengacu pada beberapa konsep, maka itu merupakan pertanda baik bahwa mungkin sudah saatnya untuk menggunakan kelas terpisah sebagai gantinya. Ini jelas merupakan solusi yang lebih baik, karena memisahkan tanggung jawab setiap masalah atau isu.

8.2.2 Meminimalkan Dependensi
Banyak method yang dibutuhkan kelas-kelas lain untuk melakukan pekerjaan mereka. Untuk memvisualisasikan hubungan antar kelas, seperti ketergantungan, programmer menggambar diagram kelas. Disimi, kita menggunakan UML ( "Unified Modeling Language") notasi untuk objek dan kelas. UML adalah notasi untuk analisis berorientasi objek dan desain diciptakan oleh Grady Booch, Ivar Jacobson, dan James Rumbaugh, tiga peneliti terkemuka dalam pengembangan softare berorientasi objek. (Lampiran H memiliki ringkasan
notasi UML yang digunakan disini.) Notasi UML membedakan antara objek diagram sebuah diagram kelas. Dalam sebuah diagram objek nama kelas digarisbawahi; dalam diagram kelas nama kelas tidak digarisbawahi. Dalam diagram kelas, ketergantungan ditunjukan oleh garis putus-putus dengan panah tip terbuka -berbentuk yang menunjuk ke kelas yang bergantung.

8.2.3 Memisahkan Accessors dan mutator
Sebuah muthator method mengubah keadaan suatu objek. Sebaliknya, accessor method
meminta objek untuk menghitung hasilnya, tanpa mengubah asalnya.
Sebuah kelas yang hanya memiliki metode accesor, tidak memiliki metode mutator disebut immutable.
String name = "John Q. Public";
String uppercased = name.toUpperCase (); // Nama tidak berubah
Referensi ke obyek dari kelas berubah dapat dengan aman dishare.

8.2.4 Meminimalkan Efek Samping
Efek samping dari method adalah setiap jenis modifikasi data yang diamati luar metode mutator method memiliki efek samping, yaitu modifikasi dari parameter implisit.

public void printBalance () // Tidak direkomendasikan {
System.out.println ( "Jumlah tersebut sekarang $" + saldo);
}

Metode ini bermutasi objek System.out, yang bukan merupakan bagian dari objek rekening bank. Itu adalah efek samping. Untuk menghindari efek samping ini, jaga sebagian besar kelas bebas dari operasi input dan output, dan berkonsentrasi input dan output di satu tempat, seperti main method dari sebuah program.

Sumber: Horstmann, Coy. Fifth Edition. Big Java Early Objects.