Kamis, 23 November 2017

About Software Development

1. Agile Decelopment Methodology 

Hasil gambar untuk agile development methodology
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 Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. 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.
Beberapa model dari agile development methods, yaitu :
  • Acceptance Test Driven Development (ATDD)
  • Agile Modeling
  • Adaptive Software Development (ASD)
Adaptive software development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem yang kompleks. Filosofi yang mendasari adaptive software development adalah kolaborasi manusia dan tim yang mengatur diri sendiri. Sistem kerja adaptive software development : collaboration dan learning. '
  1. Collaboration : orang-orang yang bermotivasi tinggi bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di bidangnya, dan komunikasikan masalah untuk menyelesikan masalah secara efektif.
  2. Learning: tim developer sering merasa sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu proses ini membuat mereka belajar lebih tentang proyek melalui tiga cara:
  1. Fokus grup, klien dan pengguna memberi masukan terhadap perangkat lunak.
  2. Formal Technique Reviews, tim ASD lengkap melakukan review.
  3. Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.
Pada Dynamic System Development Method menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototip yang incremental dalam lingkungan yang terkondisikan. Metode ini bisa membuat pengerjaan software lebih cepat 80%.Hal -hal yang perlu diperhatikan jika menggunakan dynamic system development method:
  1. Feasibility study, siapkan requirement, dan batasan, lalu uji apakah sesuai gunakan proses DSDM.
  2. Business Study, susun kebutuhan fungsional dan informasi, tentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi.
  3. Functional model iteration, perlihatkan fungsi perangkat lunak ke klien untuk mendapatkan feedback
  4. Design and Build Iteration, cek ulang prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang memungkinkan fungsi tersebut benar-benar bekerja.
  5. Implementation: buat perangkat lunak sesuai protoip yang ada dan terus tambah fungsionalitasnya.


Kelebihan
Beberapa kelebihan dari agile diantaranya :
·         82% Menambah produktivitas tim.
·         77% Menambah kualitas perangkat lunak.
·         78% Menambah kepuasan klien.
·         37% Menghemat biaya.
Kekurangan
Sedangkan kekurangan dari agile antara lain :
·         Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
·         Tidak cocok dalam skala tim yang besar (>20 orang).
·         Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.

2.Rapid application development (RAD) 

Rapid application development (RAD) atau rapid prototyping adalah model proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat). RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat. Waktu yang singkat adalah batasan yang penting untuk model ini. Rapid application development menggunakan metode iteratif (berulang) dalam mengembangkan sistem di mana working model (model bekerja) sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan (requirement) user dan selanjutnya disingkirkan. Working model digunakan kadang-kadang saja sebagai basis desain dan implementasi sistem final.
Model RAD mengadopsi model waterfall dan pembangunan dalam waktu singkat yang dicapai dengan menerapkan :
1.   Component based construction ( pemrograman berbasis komponen bukan prosedural).
2.   Penekanan pada penggunaan ulang (reuse) komponen perangkat lunak yang telah ada.
3.   Pembangkitan kode program otomatis/semi otomatis.
4.   Multiple team (banyak tim), tiap tim menyelesaikan satu tugas yang selevel tetapi tidak sama. Banyaknya tim tergantung dari area dan kompleksitasnya sistem yang dibangun.
Jika keutuhan yang diinginkan pada tahap analisis kebutuhan telah lengkap dan jelas, maka waktu yang dibutuhkan untuk menyelesaikan secara lengkap perangkat lunak yang dibuat adalah berkisar 60 sampai 90 hari. Model RAD hampir sama dengan model waterfall, bedanya siklus pengembangan yang ditempuh model ini sangat pendek dengan penerapan teknik yang cepat.
Sistem dibagi-bagi menjadi beberapa modul dan dikerjakan beberapa tim dalam waktu yang hampir bersamaan dalam waktu yang sudah ditentukan. Model ini melibatkan banyak tim, dan setiap tim mengerjakan tugas yang selevel, namun berbeda. Sesuai dengan pembagian modul sistem.

Kelemahan & Kelebihan RAD

Beberapa hal (kelebihan dan kekurangan) yang perlu diperhatikan dalam implementasi pengembangan menggunakan model RAD :
1.   Model RAD memerlukan sumber daya yang cukup besar, terutama untuk proyek dengan skala besar.
2.   Model ini cocok untuk proyek dengan skala besar.
3.   Model RAD memerlukan komitmen yang kuat antara pengembang dan pemesssan, bahkan keduanya bisa tergabung dalam 1 tim
4.   kinerja dari perangkat lunak yang dihasilkan dapat menjadi masalah manakala kebutuhan-kebutuhan diawal proses tidak dapat dimodulkan, sehingga pendekatan dengan model ini kurang bagus.
5.   sistem yang tidak bisa dimodularisasi tidak cocok untuk model ini.
6.   penghalusan dan penggabungan dari beberapa tim di akhir proses sangat diperlukan dan ini memerlukan kerja keras.
7.   proyek bisa gagal karena waktu yang disepakati tidak dipenuhi
8.   risiko teknis yang tinggi juga kurang cocok untuk model ini.

3.Dynamic systems development method


DSDM merupakan iteratif dan incremental pendekatan yang mencakup prinsip-prinsip pembangunan Agile, termasuk keterlibatan pengguna atau pelanggan secara terus-menerus, intinya DSDM suatu metode yang mendekati Incremental dan Agile Alliance.

Beberapa karakteristik DSDM yaitu sebagai berikut :
  1. Menyajikan kerangka kerja (Framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan.
  2. Membangun software dengan cepat yaitu 80% dari proyek diserahkan dalam 20% dari waktu total untuk menyerahkan proyek secara utuh.
  3. Aktifitas Feasibility Study yaitu dengan requirement, lalu uji apakah sesuai gunakan proses DSDM
  4. Aktifitas Business Study yaitu susunam kebutuhan fungsional dan informasi, menentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi
  5. Aktifitas Functional model iteration yaitu menghasilkan incremental prototype yang perlihatkan fungsi software ke client untuk dapatkan kebutuhan lebih jelas dan konfirmasi.
  6. Aktifitas Design and Build Iteration yaitu melakukan cek ulang prototype yang di bangun untuk memastikan bahwa prototype yang di bangun dengan cara tersebut memungkinkan semua fungsi benar-benar bekerja
  7. Aktifitas Implementation yaitu menempatkan software pada lingkungan sebenarnya sekalipun belum lengkap atau masih ada perubahan.
  8. DSDM dapat dikombinasikan dengan XP yang menghasilkan kombinasi model proses mengikuti metode DSDM dan praktek yang sejalan dengan XP.

Kelebihan dan Kekurangan
1.    Mengimplementasikan fungsi utama dari aplikasi, sehingga kita dapat menemukan kendala lebih cepat dalam proses pengembangan dan kita dapat lebih cepat mengirimkan aplikasi kepada user untuk mendapatkan feedback.
2.     Biaya lisensi 
3.     Penghalang yang relatif tinggi untuk masuk 
4.     Penghalang yang relatif tinggi untuk masuk 

 4.Extreme programming methodology


Extreme Programming (berikutnya akan disingkat sebagai XP) adalah sebuah pendekatan atau model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel. XP bukan hanya berfokus pada coding tetapi meliputi seluruh area pengembangan perangkat lunak.
Adapun  tahapan pada Extreme Programming dapat di jelaskan sebagai berikut:

 
1)         Planning/Perencanaan
Pada tahap perencanaan ini dimulai dari pengumpulan kebutuhan yang membantu tim teknikal untuk memahami konteks bisnis dari sebuah aplikasi. Selain itu pada tahap ini juga mendefinisikan output yang akan dihasilkan, fitur yang dimiliki oleh aplikasi dan fungsi dari aplikasi yang dikembangkan.
2)         Design/Perancangan
Metode ini menekankan desain aplikasi yang sederhana, untuk mendesain aplikasi dapat menggunakan Class-Responsibility-Collaborator (CRC) cards yang mengidentifikasi dan mengatur class pada object-oriented.
3)         Coding/Pengkodean
Konsep utama dari tahapan pengkodean pada extreme programming adalah pair programming, melibatkan lebih dari satu orang untuk menyusun kode.
4)         Coding/Pengujian
Pada tahapan ini lebih fokus pada pengujian fitur dan fungsionalitas dari aplikasi.
Kelebihan Extreme Programming, yaitu:
·         Meningkatkan kepuasan kepada klien
·         Pembangunan system dibuat lebih cepat
·         Menjalin komunikasi yang baik dengan client.
·         Meningkatkan komunikasi dan sifat saling menghargai antar developer.
Kekurangan Extreme Programming, yaitu:
·         Cerita-cerita yang menunjukkan requirements dari pelanggan kemungkinan besar tidak lengkap sehingga Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
·         Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).
·         XP tidak memiliki dokumentasi formal yang dibuat selama pengembangan. Satu-satunya dokumentasi adalah dokumentasi awal yang dilakukan oleh user.

 5.Scrum development methodology



Scrum adalah iteratif dan pengembangan perangkat lunak kerangka kerja tambahan tangkas untuk proyek-proyek perangkat lunak dan mengelola produk atau pengembangan aplikasi. Scrum adalah sebuah framework yang mengimplementasikan proses Agile Development. Untuk menjelaskan bagaimana Scrum mengubah paradigma dalam proses bekerjaWalaupun sebenarnya metode ini biasanya digunakan secara tim, tapi tidak ada larangan untuk menggunakannya secara perorangan. Metode Scrum membagi proses development menjadi beberapa Sprint.
Berikut ini uraian dari tahap-tahap pengembangan perangkat lunak dengan menggunakan metode Scrum :
1. Product Backlog
Bagian pertama ini adalah kumpulan dari hal-hal yang diperlukan dan yang harus tersedia dalam produk. Produk backlog berada dalam tanggung jawab product owner. Product Backlog adalah daftar utama dari semua fungsi yang diinginkan dalam produk. Metodologi Scrum tidak mengharuskan dokumentasi semua persyaratan pada awal proyek.
2. Sprint Backlog
Perencanaan Sprint dilakukan dalam pertemuan atau meeting antara pemilik produk dan tim developer yang akan berkolaborasi untuk memilih product backlog untuk dimasukan kedalam proses sprint. Hasil dari pertemuan tersebut adalah Sprint Backlog.
3. Sprint
Sprint adalah sebuah kerangka waktu yang berdurasi maksimal 1 bulan untuk mengembangkan produk yang berpontensi untuk dirilis.
 C. Kelebihan SCRUM
1) Mudah menyesuaikan diri dengan perubahan yang terjadi pada realitas bisnis dengancepat2) Tim yang besar dipecah menjadi tim-tim kecil yang disebut Tim Scrum, sehinggamemperlancar komunikasi, mengurangi biaya, dan saling memberdayakan satu samalain3) Dokumentasi dan pengujian selama proses pengembangan dilakukan secara terusmenerus4)
Proses Scrum dapat menyatakan bahwa suatu proses pengembangan “sudah selesai”
kapan saja
D. Kekurangan SCRUM
Tim Pengembang dengan Scrum harus bersedia dan selalu siap untuk menerima perubahanyang terjadi di dalam proses pengembangan.


Senin, 06 November 2017

Sekilas tentang MacOS,Linux, dan Android




macOS, atau yang sebelumnya disebut OS X, adalah antarmuka grafikal sistem operasi yang dikembangkan dan disebarkan oleh Apple Inc. Sistem operasi ini disediakan untuk komputer Macintosh. Sistem operasi ini pertama kali dikeluarkan pada tahun 2001 dan populer di kalangan pengguna.
Karakter "X" adalah nomor Romawi yang berarti sepuluh, di mana versi ini adalah penerus dari sistem operasi yang digunakan sebelumnya seperti Mac OS 8 dan Mac OS 9. Beberapa orang membacanya sebagai huruf "X" yang terdengar seperti "eks". Salah satu alasan mengapa mereka menafsir sedemikian karena tradisi untuk memberikan nama sistem operasi yang berbasis Unix dengan akhiran "x" (misalnya AIXIRIXLinuxMinixUltrixXenix).
Mac OS X Server juga dirilis pada tahun 2001. Pada dasarnya versi Server ini mirip dengan versi standardnya, dengan perbedaan bahwa versi Server mencakup peranti lunak untuk keperluan manajemen dan administrasi workgroup dalam komputer berskala besar. Contoh fitur tambahan yang tersedia untuk versi ini adalah peranti lunak untuk menjalankan fungsi-fungsi seperti SMTPSMBLDAP dan DNS. Selain itu cara melisensinya juga berbeda.
Mac OS X adalah sistem operasi yang menggunakan kernel BSD sehingga beberapa kalangan mengatakan bahwa Mac OS X termasuk dalam keluarga Unix. Hal yang menarik dari OS ini adalah keindahan tampilannya sehingga menjadikannya panutan bagi pengembang desktop lain.
Rilis terakhir macOS diumumkan pada World Wide Developer Conference (WWDC) 2016 dengan kode Sierra dengan versi 10.12
 Linux (diucapkan ˈlɪnəks atau /ˈlɪnʊks/) adalah nama yang diberikan kepada sistem operasi komputer bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja.
Nama "Linux" berasal dari nama pembuatnya, yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternatif GNU/Linux.
Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan-perusahaan komputer ternama seperti IntelDellHewlett-PackardIBMNovellOracle CorporationRed Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di berbagai macam jenis perangkat keras komputer, termasuk komputer desktopsuperkomputer, dan sistem benam seperti pembaca buku elektronik, sistem permainan video (PlayStation 2PlayStation 3 dan XBox), telepon genggam dan router. Para pengamat teknologi informatika beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor (vendor independence), biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas, serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows. Ciri-ciri ini juga menjadi bukti atas keunggulan model pengembangan perangkat lunak sumber terbuka (opensource software).
Sistem operasi Linux yang dikenal dengan istilah distribusi Linux (Linux distribution) atau distro Linux umumnya sudah termasuk perangkat-perangkat lunak pendukung seperti server webbahasa pemrogramanbasisdatatampilan desktop (desktop environment) seperti GNOME,KDE dan Xfce juga memiliki paket aplikasi perkantoran (office suite) seperti OpenOffice.orgKOfficeAbiwordGnumeric dan LibreOffice
Android (/ˈæn.drɔɪd/an-droyd) adalah sistem operasi berbasis Linux yang dirancang untuk perangkat bergerak layar sentuhseperti telepon pintar dan komputer tablet. Android awalnya dikembangkan oleh Android, Inc., dengan dukungan finansial dari Google, yang kemudian membelinya pada tahun 2005. Sistem operasi ini dirilis secara resmi pada tahun 2007, bersamaan dengan didirikannya Open Handset Alliance, konsorsium dari perusahaan-perusahaan perangkat keras, perangkat lunak, dan telekomunikasi yang bertujuan untuk memajukan standar terbuka perangkat seluler. Ponsel Android pertamamulai dijual pada bulan Oktober 2008.
Antarmuka pengguna Android umumnya berupa manipulasi langsung, menggunakan gerakan sentuh yang serupa dengan tindakan nyata, misalnya menggeser, mengetuk, dan mencubit untuk memanipulasi objek di layar, serta papan ketik virtualuntuk menulis teks. Selain perangkat layar sentuh, Google juga telah mengembangkan Android TV untuk televisi, Android Autountuk mobil, dan Android Wear untuk jam tangan, masing-masingnya memiliki antarmuka pengguna yang berbeda. Varian Android juga digunakan pada komputer jinjingkonsol permainankamera digital, dan peralatan elektronik lainnya.
Android adalah sistem operasi dengan sumber terbuka, dan Google merilis kodenya di bawah Lisensi Apache. Kode dengan sumber terbuka dan lisensi perizinan pada Android memungkinkan perangkat lunak untuk dimodifikasi secara bebas dan didistribusikan oleh para pembuat perangkat, operator nirkabel, dan pengembang aplikasi. Selain itu, Android memiliki sejumlah besar komunitas pengembang aplikasi (apps) yang memperluas fungsionalitas perangkat, umumnya ditulis dalam versi kustomisasi bahasa pemrograman Java. Pada bulan Oktober 2013, ada lebih dari satu juta aplikasi yang tersedia untuk Android, dan sekitar 50 miliar aplikasi telah diunduh dari Google Play, toko aplikasi utama Android. Sebuah survei pada bulan April-Mei 2013 menemukan bahwa Android adalah platform paling populer bagi para pengembang, digunakan oleh 71% pengembang aplikasi bergerak. Di Google I/O 2014, Google melaporkan terdapat lebih dari satu miliar pengguna aktif bulanan Android, meningkat dari 583 juta pada bulan Juni 2013.
Faktor-faktor di atas telah memberikan kontribusi terhadap perkembangan Android, menjadikannya sebagai sistem operasi telepon pintar yang paling banyak digunakan di dunia, mengalahkan Symbian pada tahun 2010. Android juga menjadi pilihan bagi perusahaan teknologi yang menginginkan sistem operasi berbiaya rendah, bisa dikustomisasi, dan ringan untuk perangkat berteknologi tinggi tanpa harus mengembangkannya dari awal. Sifat Android yang terbuka juga telah mendorong munculnya sejumlah besar komunitas pengembang aplikasi untuk menggunakan kode sumber terbuka sebagai dasar proyek pembuatan aplikasi, dengan menambahkan fitur-fitur baru bagi pengguna tingkat lanjut atau mengoperasikan Android pada perangkat yang secara resmi dirilis dengan menggunakan sistem operasi lain.
Pada November 2013, Android menguasai pangsa pasar telepon pintar global, yang dipimpin oleh produk-produk Samsung, dengan persentase 64% pada bulan Maret 2013. Pada Juli 2013, terdapat 11.868 perangkat Android berbeda dengan beragam versi. Keberhasilan sistem operasi ini juga menjadikannya sebagai target ligitasi paten "perang telepon pintar" antar perusahaan-perusahaan teknologi. Hingga bulan Mei 2013, total 900 juta perangkat Android telah diaktifkan di seluruh dunia, dan 48 miliar aplikasi telah dipasang dari Google Play.