Assignment Forum Software Engineering Binus University | Stefanus Hendy Blog

Assignment Forum Software Engineering Binus University



Assignment Forum Software Engineering Binus University
Sumber Gambar : Glints


1. Apa yang dimaksud dengan Software? dan apa software Engineering dan bagaimana karakteristik  Software

Software adalah sekumpulan data yang diformat dan disimpan secara digital dalam bentuk program atau intruksi untuk menjalankan suatu perintah yang diinputkan ke perangkat computer dan pastinya memiliki tujuan dari dibuatnya software.

Software Engineering adalah proses pengembangan dan pembangunan software sistem komputer dan sistem aplikasi bertujuan untuk mengetahui tahapan dan proses yang baik untuk membangun dan mengembangkan software.

Karakteristik Software
  • Sebuah Perangkat Lunak itu dikembangkan dan tidak diproduksi masal seperti pada umumnya perangkat keras. Disini sebuah perangkat lunak hanya dibuat satu dan tidak dibuat dalam jumlah yang banyak sedangkan perangkat keras dibuat dalam jumlah besar.
  • Sebuah Perangkat Lunak tidak pernah memiliki batasan waktu atau usia. Hal ini sangat berbeda dengan perangkat keras, dimana sebuah perangkat keras akan usang dimakan waktu.
  • Beberapa Perangkat Lunak dikembangkan secara custom (pesanan) sedangkan Perangkat Keras dikembangkan berdasarkan sistem Component-Based Assembly. Disini sebuah perangkat lunak selain dikembangkan dengan cara umumnya, beberapa perangkat lunak juga ada yang dikembangkan dengan cara pesanan. Tetapi perangkat lunak dapat di update sewaktu-waktu dengan mudah (lebih fleksibel).

2. Salah satu pendekatan pembangunan software adalah dengan SDLC, apa yang dimaksud dengan SDLC? 

Jelaskan masing-masing langkahnya, dan  apa yang dimaksud dengan model proses waterfall, incremental, RAD, Prototype. 

Apa keuntungan dan kerugian dari masing-masing model tersebut

SDLC adalah sebuah siklus hidup pemngembangan perangkat lunak yang terdiri dari beberapa tahapan-tahapan yang sangat penting dalam keberadaan perangkat lunak yang dilihat dari segi pengembangannya guna untuk menghasilkan software yang baik.

Langkah-langkah SDLC :

  1. Planning : Mendefinisikan sistem yang akan dikembangkan, Membuat manajemen projek.

  2. Analysis : Mengumpulkan kebutuhan-kebutuhan informasi terkait dengan sistem yang akan dibangun.

  3. Design : Mendesain Technical Architecture, mendesain model.

  4. Development : Membuat Technical Architecture, menulis program, membuat database.

  5. Testing : Melakukan berbagai testing mengenai sistem baru.

  6. Implementation : Menyiapkan production, documentation, konversi sistem.

  7. Maintenance : Membangun layanan bantuan, pemeliharaan berkala.

1) Model Waterfall : 

Model ini menggunakan pendekatan secara sistematis dan sekuensial yang mulai pada tingkat requirment sampai tingkat maintenance.

Keuntungan :
  • Proses menjadi teratur.

  • Jadwal menjadi lebih menentu.

  • Proses mudah dipahami dan jelas.

  • Mudah dalam pengelolaan proyek.

  • Kondisi requirment jelas.

Kerugian :
  • Sifatnya kaku, karena tidak mudah tanggap dalam menanggapi segala perubahan.

  • Membutuhkan daftar kebutuhan yang lengkap diawal.

  • Proses pengembangan relative lama, dikarenakan tahap selanjutnya bisa dilakukan jika tahap sebelumnya selesai dikerjakan.


2) Model RAD :

Model pengembangan yang menggunakan pendekatan orientasi komponen terhadap pengembangan perangkat lunak. Model ini bertujuan mempersingkat waktu yang biasanya diperlukan dalam siklus hidup pengembangan konvensional.

Keuntungan :
  • Pengembangan yang cepat.

  • Adanya prototype.

  • Pengurangan penulisan kode yang kompleks, dikarenakan reuse code yang sudah ada.

Kerugian :
  • Tidak relevan untuk proyek skala besar.

  • Memerlukan komitmen yang kuat antara pengembang dengan consumer.

  • Membutuhkan sumber daya yang besar untuk proyek skala besar.

3) Model Prototype :

Model prototype merupakan model pengembangan software yang mengijinkan pengguna/user memiliki gambaran awal tentang program yang akan dikembangkan serta melakukan pengujian awal. Model prototype juga memberi fasilitas bagi pengembangn dan user untuk saling terkait dan berinteraksi.

Keuntungan :
  • Fleksibel.

  • Bersifat aktif, sehingga user dapat melihat, merasakan, dan mengalami proses pengembangan.

  • Perbaikan kesalahan relative cepat.

Kerugian :
  • Mengurangi kreatifitas perancangan.

  • Cakupan pengembangannya sistem dapat lebih luas.


4) Model Incremental :

Model pengembangan sistem pada software engineering berdasarkan requirement software yang dipecah menjadi beberapa fungsi atau bagian sehingga model pengembangannya secara bertahap. dilain pihak ada mengartikan model incremental sebagai perbaikan dari model waterfall dan sebagai standar pendekatan topdown.

Keuntungan :
  • Merupakan model dengan manajemen yang sederhana.
  • Pengguna tidak perlu menunggu sampai seluruh sistem dikirim untuk mengambil keuntungan dari sistem tersebut. Increment yang pertama sudah memenuhi persyaratan mereka yang paling kritis, sehingga perangkat lunak dapat segera digunakan.
  • Resiko untuk kegagalan proyek secara keseluruhan lebih rendah. Walaupun masalah masih dapat ditemukan pada beberapa increment. Karena layanan dengan prioritas tertinggi diserahkan pertama dan increment berikutnya diintegrasikan dengannya, sangatlah penting bahwa layanan sistem yang paling penting mengalami pengujian yang ketat. Ini berarti bahwa pengguna akan memiliki kemungkinan kecil untuk memenuhi kegagalan perangkat lunak pada increment sistem yang paling bawah.
  • Nilai penggunaan dapat ditentukan pada setiap increment sehingga fungsionalitas sistem disediakan lebih awal.
  • Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem,
  • Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.
Kerugian :
  • Kemungkinan tiap bagian tidak dapat diintegrasikan.
  • Dapat menjadi build and Fix Model, karena kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung.
  • Harus Open Architecture
  • Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment.

3. Berikan penjelasan tentang metode pengembangan software dengan cara adaptif development dan bagaimana tahap pengembangan sw?

Metode pengembangan aplikasi atau software dengan cepat dan adaptif menggunakan Agile Software Development. Agile Software Development adalah sebuah grup metodologi-metodologi pengembangan software yang berbasis pada pengembangan iteratif dimana keperluan dan solusi pengembangan software berubah terus menerus. Agile Software Development terdiri dari beberapa model pengembangan seperti SCRUM dan Extreme Programming (XP).

Dokumen-dokumen design awal software pada Agile tidak selengkap metode pengembangan lainnya seperti Waterfall dan Spiral. Sejalan dengan perkembangan software di tiap iterasi pengembangan, design software nantinya akan lengkap dengan sendirinya.

Iterasi pengembangan software pada Agile biasanya maksimal 1 bulan lama pengembangannya dan waktu pengembangan diukur secara mingguan. Jika pada suatu iterasi terjadi kegagalan, design software dapat diubah tanpa memerlukan biaya dan penundaan yang signifikan. 

Idealnya setiap akhir iterasi, software sudah siap atau setidaknya hampir siap untuk dikirimkan ke pelanggan. Setelah akhir iterasi, tim pengembang mengevaluasi kembali seluruh proyek dan menentukan langkah ke depan.

Tahap Pengembangan Software :

1. Perencanaan, pada langkah ini pengembang dan klien membuat rencana tentang kebutuhan dari perangkat lunak yang akan dibuat.

2. Implementasi, bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.

3. Tes perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian kontrol kualitas agar bug yang ditemukan bisa segera diperbaiki dan kualitas perangkat lunak terjaga.

4. Dokumentasi, setelah dilakukan tes perangkat lunak langkah selanjutnya yaitu proses dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.

5. Deployment, yaitu proses yang dilakukan oleh penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka perangkat lunak siap dideployment.

6. Pemeliharaan, langkah terakhir yaitu pemeliharaan. Tidak ada perangkat lunak yang 100% bebas dari bug, oleh karena itu sangatlah penting agar perangkat lunak dipelihara secara berkala.

4. Apa perbedaan antara pendekatan pengembangan software dengan pendekatan terstruktur  dan pendekatan berorientasi objek?

Pendekatan Terstruktur :

Pendekatan secara terstruktur adalah mengenalkan penggunaan alat-alat dan teknik-teknik untuk mengembangkan sistem yang terstruktur.

Teknik terstruktur, merupakan pendekatan formal untuk memecahkan masalah-masalah dalam aktivitas bisnis menjadi bagian-bagian kecil yang dapat diatur dan berhubungan untuk kemudian dapat disatukan kembali menjadi satu kesatuan yang dapat dipergunakan untuk memecahkan masalah.

Tujuan pendekatan terstruktur adalah agar pada akhir pengembangan perangkat lunak dapat memenuhi kebutuhan user, dilakukan tepat waktu, tidak melampaui anggaran biaya, dan mudah.

Pendekatan Berorientasi Objek :

Pendekatan secara object oriented Pemrograman berorientasi objek merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek.

Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya, Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. 

Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

5. Jelaskan apa yang dimaksud dengan Agile Process models, Extreme Programming (XP)  sebutkan misal Scrum model dan jelaskan masing-masing.

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.

Extreme Programming adalah suatu model yang termasuk dalam pendekatan agile yang diperkenalkan oleh Kent Back. Menurut penjelasannya, definisi XP adalah sebagai berikut: “Extreme Programming (XP) adalah metode pengembangan software yang cepat, efisien, beresiko rendah, fleksibel, terprediksi, scientific, dan menyenangkan“. Model ini cenderung menggunakan pendekatan Object-Oriented. Tahapan-tahapan yang harus dilalui antara lain: Planning, Design, Coding, dan Testing. Sasaran Extreme Programming adalah tim yang dibentuk berukuran antara kecil sampai medium saja, tidak perlu menggunakan sebuah tim yang besar.

Adaptive Software Development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem yang kompleks. Filosofi yang mendasari Adaptive Software Development (ASD) adalah kolaborasi manusia dan tim yang mengatur diri sendiri. Sistem kerja adaptive software development adalah Collaboration dan Learning. Adaptive cycle planning yaitu menggunakan informasi awal seperti misi dari klien, batasan proyek dan kebutuhan dasar untuk definisikan rangkaian software increment (produk software yang secara berkala diserahkan). Dynamic Systems Development Method (DSDM) menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan. Metode ini akan membangun software dengan cepat: 80% dari proyek diserahkan dalam 20% dari waktu total untuk menyerahkan proyek secara utuh. Dynamic System Development Method dapat dikombinasikan dengan Extreme Programmning menghasilkan kombinasi model proses yang mengikuti Dynamic System Development Method dan praktek yang sejalan dengan Extreme Programmning.

Scrum Methodology menguraikan proses untuk mengidentifikasi dan katalogisasi pekerjaan yang perlu dilakukan, memprioritaskan yang bekerja dengan berkomunikasi dengan pelanggan atau wakil pelanggan, dan pelaksanaan yang bekerja menggunakan rilis iterative dan memiliki tujuan utama untuk mendapatkan perkiraan berapa lama akan pembangunan. XP lebih lanjut tentang pengembang membantu menyelesaikan pekerjaan secepat dan maintainably mungkin.

Crystal memiliki karakteristik secara aktual sebuah model proses keluarga yang memungkinkan manuver berdasar karakteristik permasalahan, menyarankan penggunaan workshop refleksi untuk review kebiasaan kerja tim, selalu murah dan cepat berkomunikasi secara langsung, dan proyek berkembang sesuai ukuran team menjadi lebih atau luas dan metologi akan menjadi lebih tinggi.

Feature Driven Development merupakan model proses praktis untuk keahlian proses software engineering, Feature merupakan sebuah fungsi  yang berharga dimana dapat dilaksanakan. Keuntungannya yaitu user dapat menggambarkan dengan mudah bentuk system, dapat di organisasikan atau diatur ke dallamkelompok bisnis yang hirarki, desain dank ode lebih mudah diperiksa secara efektif, dan merancang proyek, penjadwalan dan jalur diarahkan oleh feature.

Agile Modeling adalah suatu metodologi yang praktis untuk dokumentasi dan pemodelan system software. Agile Modeling adalah kumpulan nilai-nilai, prinsip dan praktek-praktek untuk memodelkan software agar dapat diaplikasian pada software development proyek secara efektif.

Rational Unified Process adalah suatu kerangka kerja proses pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM sejak 2003. RUP bukanlah suatu proses tunggal dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh organisasi pengembang dan tim proyek perangkat lunak yang akan memilih elemen proses sesuai dengan kebutuhan mereka.

6. Berikan penjelasan tentang model design , kegunaan suatu model design

Model Design adalah suatu strategi yang penting untuk membangun produk atau software yang berkualitas sehingga dapat diminati oleh banyak orang. Desain model yang baik dapat memberikan performa yang baik bagi produk atau software kita.

Selain itu juga kegunaan model desain juga dapat menarik perhatian para peminat untuk mencoba produk atau software kita (first impression). Selain dalam hal seni, model desain juga merupakan tahap-tahap atau strategi yang dipikirkan secara matang tentang segala konsep dalam membangun produk atau software.

7. Bagaimana langkah-langkah proses design atau prinsip membuat design

Tahap dimana kita akan merancang seperti apa program yang akan buat nantinya. Biasanya design menggunakan flowchart, flowmap dan lain sebagainya guna untuk sebagai gambaran awal mengenai sistem software yang akan kita buat dan dimengerti oleh banyak orang atau pengguna. Proses desain ini juga dapat menggambarkan secara jelas mengenai produk atau software kita.

8. Berikan contoh design sistem aplikasi tertentu yang anda lagi kerjakan pada saat internship di perusahaan.

Berhubung saya masih belum internship di perusahaan, saya akan memberikan contoh design sistem berupa flowchart yang merupakan tugas dari mata kuliah ISYS6169 - Database Systems. Berikut adalah contoh dari design sistem online shop yang pernah saya buat dimana terdapat database item, delivery, menu, customer detail, dan payment.


flowchart



9. Apa yang dimaksud User Requirement? Bagaimana cara seorang analis dalam melakukan analisa kebutuhan user terhadap sistem (URS) supaya dihasilkan Requirement yang sesuai dengan yang diinginkan ?

User Requirement, atau biasa diterjemahkan dalam bahasa Indonesia menjadi Kebutuhan User, menjelaskan mengenai kemampuan software yang hendak dibangun dari sudut pandang user, misalnya dalam bentuk Functional Requirement.

Analisis kebutuhan yang dilakukan terhadap perangkat lunak akan menghasilkan spesifikasi perangkat lunak tersebut. Analisa kebutuhan ini terdiri dari lima langkah pokok:
  1. Identifikasi Masalah
  2. Evaluasi dan sintesis
  3. Pemodelan
  4. Spesifikasi
  5. Review
Pada dasarnya, aktivitas analisis dibutuhkan dalam setiap proses dalam daur hidup pengembangan perangkat lunak. Didalam proses rekayasa kebutuhan, analisis pun dilakukan dalam setiap aktivitas-aktivitasnya. Penjelasan dari masing-masing aktivitas tersebut.

Domain Understanding, dalam tahap ini perekayasa kebutuhan perangkat lunak harus mengetahui bagaimana organisasi perusahaan beroperasi dan apa yang menjadi permasalahan pada sistem yg sedang  berjalan pada saat ini. Perekayasaan perlu memfokuskan kepada ‘Apa’ yg menjadi permasalahan. Perekaysaan hendaknya tidak berhenti pada menemukan “gejala” dari  permasalahn itu terjadi untuk menemukan akar dari pemasalahan dari sistem yg berjalan tersebut.

Requirements Collection, Tahapan ini merupakan tahapan pengumpulan kebutuhan akan sistem yang akan dibangun.Pada tahapan ini diperlukan adanya intekasi intensif dengan pemangku kepentingan terutama dengan pengguna akhir.

Classification, Pada tahapan sebelumnya kumpulan kebutuhan masih tidak terstruktur.Untuk itu kebutuhan yang saling berkaitan dikelompokan,baik menurut kelas penggunaanya maupun jenis kebutuhananya. Kebutuhan kebutuhan tersebut diorganisasi ke dalam kelompk-kelompok yang koheren.Perekayasaan perlu memisahkan antara kebutuhan dan keinginan dari pengguna.

Conflict resolution, Pada tahapan ini adalah menemukan dan menyelesaikan  kebutuhan yang di dalamnya terdapat konflik.

Prioritisation, Pada tahapan dilakukan interaksi dengan pemangku kepentingan untuk mengidentifikasikan kebutuhan-kebutuhan priopritas dari masing-masing kebutuhan agar sumber daya yang tersedia pada organisasi dialokasikan untuk mengimplementasikan kebutuhan yg terutama dari pemangku kepentingan.

Requirements Checking, Menganalisa sekumpulan kebutuhan dari hasil tahapan sebelumnya untuk memverifikasi dan memvalidasi berdasarkan aspek kelengkapan,konsistensi,dan kebutuhan nyata.

10. Coba buat user requirement untuk suatu program aplikasi (bidang aplikasi dapat dipilih sendiri) Berikan penjelasan tentang User Requirement masing-masing?

USER REQUIREMENT SPECIFICATION

Project Name : UI Builder Application (Android and IOS)
Department : Mobile Application Engineer

1. Introduction

Scope of The Application : UI Builder Application V1.0 yang dikembangkan dengan bahasa pemrograman Java, Swift, C, Python, dan penggunaan XML untuk tata letak.

Key Objectives : Membangun aplikasi UI Builder pada smartphone Android dan IOS yang mudah digunakan untuk persiapan dan merancang UI aplikasi yang ingin kita buat sendiri dengan cara drag & drop. Dengan mempunyai tujuan penggunaan yang efektif, efisien, mudah digunakan, dan aman.

2. Program Requirements

  • Import and Export Files
  • Transform Objects
  • Cut Objects
  • Duplicate Objects
  • Filter Objects
  • View Project Result
  • Drag and Drop Objects
  • Login or SignUp to Save and Load Projects
  • Admin Control The Database of Application and Security Management
  • Built in UI Application code editor and compiler

3. Data Requirements

  • Text
  • Image
  • Sound
  • Video
  • Animation
  • User Data (Email to Login)

4. Life Cycles

  • Mengecek dan memperbaiki bug pada aplikasi setiap minggunya
  • Melakukan minor update setiap bulan (memperbaiki bug dan memperbagus UI)
  • Melakukan mayor update setiap season atau berganti versi (menambahkan fitur dan merombak UI menjadi baru sesuai perkembangan zaman)
  • Pemeliharan dan pengembangan aplikasi menggunakan metode scrum agile dalam SDLC

Berikut diatas adalah tugas-tugas yang pernah saya dapatkan selama perkuliahan pada mata kuliah Software Engineering. Semoga informasi diatas dapat bermanfaat bagi kalian semua. Jangan lupa lagi di Like, Comment, Share, and Subscribe ya :D

Sampai Jumpa Kembali :D

Komentar