Tuesday, September 24, 2024

Unified Process

 


Unified Process (UP) adalah kerangka kerja proses pengembangan perangkat lunak yang iterative dan incremental. Penyempurnaan Unified Process yang paling terkenal dan banyak didokumentasikan adalah Rational Unified Process (RUP). Contoh lain adalah OpenUP dan Agile Unified Process. Dalam buku seminal tentang Unified Process, Ivar Jacobson, Grady Booch, dan James Rumbaugh[1] membahas perlunya proses perangkat lunak yang "use case driven, arsitechture-centric, iterative, dan incremental". Dalam beberapa hal, unified process adalah upaya untuk memanfaatkan fitur dan karakteristik terbaik dari model proses perangkat lunak tradisional, namun mengkategorikannya dengan cara mengimplementasikan banyak prinsip terbaik dari agile software development. Unified process mengakui pentingnya komunikasi kepada pelanggan dan metode yang sederhana untuk menggambarkan pandangan pelanggan tentang suatu sistem (use case). Ini menekankan peran penting arsitektur perangkat lunak dan membantu arsitek fokus pada tujuan yang tepat, seperti understandability, bergantung pada perubahan di masa depan, dan penggunaan kembali [Jac99]. Model ini menganjurkan aliran proses yang iterative dan incremental, memberikan nuansa evolusi yang penting dalam pengembangan perangkat lunak modern.[2]

Sejarah
Selama awal 1990-an James Rumbaugh,[3] Grady Booch,[4] dan Ivar Jacobson [5] mulai bekerja pada "unified method" yang akan menggabungkan fitur terbaik dari analisis berorientasi objek dan metode desain setiap model dan mengadopsi fitur tambahan yang diusulkan oleh para ahli lain (misalnya,[6]) dalam pemodelan berorientasi objek. Hasilnya adalah UML — unified modelling language yang berisi notasi yang kuat untuk pemodelan dan pengembangan sistem berorientasi objek. Pada 1997, UML menjadi standar industri de facto untuk pengembangan perangkat lunak berorientasi objek. UML menyediakan teknologi yang diperlukan untuk mendukung praktik rekayasa perangkat lunak berorientasi objek, tetapi tidak memberikan kerangka kerja proses untuk memandu tim proyek dalam penerapan teknologi mereka. Selama beberapa tahun ke depan, Jacobson, Rumbaugh, dan Booch mengembangkan unified process, kerangka kerja untuk rekayasa perangkat lunak berorientasi objek menggunakan UML. Saat ini, Unified Process (UP) dan UML banyak digunakan pada proyek berorientasi objek dari semua jenis. Model iteratif, tambahan yang diusulkan oleh UP dapat dan harus disesuaikan untuk memenuhi kebutuhan proyek tertentu.[2]

Fase dalam Unified Process
Profil proyek tipikal yang menunjukkan ukuran relatif dari empat fase dalam Unified Process
Terdapat lima kegiatan dalam kerangka kerja umum dan dapat digunakan untuk menggambarkan model proses perangkat lunak apapun. Unified process tidak terkecuali.[2]

Fase awal (inception) UP mencakup komunikasi (comminication) pelanggan dan aktivitas perencanaan (planning). Dengan berkolaborasi dengan pemangku kepentingan, kebutuhan bisnis untuk perangkat lunak diidentifikasi; arsitektur kasar untuk sistem diusulkan; dan sebuah rencana untuk sifat iterative, sifat incremental dari proyek berikutnya dikembangkan. Kebutuhan bisnis mendasar dijelaskan melalui serangkaian use case awal yang menggambarkan fitur dan fungsi mana yang diinginkan oleh setiap kelas utama pengguna. Arsitektur pada titik ini tidak lebih dari garis besar tentatif dari subsistem utama dan fungsi dan fitur yang mengisi mereka. Nantinya, arsitektur akan disempurnakan dan diperluas menjadi seperangkat model yang akan mewakili pandangan berbeda dari sistem. Proses perencanaan mengidentifikasi sumber daya, menilai risiko utama, menentukan jadwal, dan menetapkan dasar untuk fase-fase yang akan diterapkan ketika peningkatan (increment) perangkat lunak dikembangkan.[2]

Tahap elaborasi (elaboration) meliputi kegiatan komunikasi dan pemodelan model proses generik. Pada tahap elaborasi, use case awal yang dikembangkan sebagai bagian dari fase awal (inception) dan memperluas representasi arsitektur untuk memasukkan lima pandangan yang berbeda dari perangkat lunak - use case model, model kebutuhan (requirement), model desain (design), model implementasi (implementation), dan model penyebaran (deployment) akan diperbaiki dan diperluas. Dalam beberapa kasus, elaborasi menciptakan "garis dasar arsitektur yang dapat dieksekusi" [7] yang mewakili "first cut" sistem yang dapat dieksekusi. Garis dasar arsitektur menunjukkan kelayakan arsitektur tetapi tidak menyediakan semua fitur dan fungsi yang diperlukan untuk menggunakan sistem. Selain itu, rencana tersebut ditinjau dengan saksama pada puncak fase elaborasi untuk memastikan bahwa ruang lingkup, risiko, dan tanggal pengiriman tetap masuk akal. Modifikasi rencana sering dilakukan pada saat ini.[2]

Fase konstruksi (construction) UP identik dengan aktivitas konstruksi yang ditentukan untuk proses perangkat lunak generik. Menggunakan model arsitektur sebagai input, fase konstruksi mengembangkan atau memperoleh komponen perangkat lunak yang akan membuat setiap use case operasional untuk pengguna akhir. Untuk mencapai hal ini, kebutuhan dan model desain yang dimulai selama fase elaborasi diselesaikan untuk mencerminkan versi akhir dari software increment. Semua fitur dan fungsi yang diperlukan untuk software increment (mis. Rilis) kemudian diimplementasikan dalam kode (source code). Ketika komponen sedang diimplementasi, unit test dirancang dan dieksekusi untuk masing-masing komponen. Selain itu, kegiatan integrasi (perakitan komponen dan pengujian integrasi) dilakukan. Use case digunakan untuk memperoleh serangkaian acceptance test yang dieksekusi sebelum dimulainya fase UP berikutnya.[2]

Fase transisi (transition) UP mencakup tahap selanjutnya dari aktivitas konstruksi generik (construction) dan bagian pertama dari aktivitas penyebaran (deployment) generik. Perangkat lunak diberikan kepada pengguna akhir untuk pengujian beta dan laporan umpan balik pengguna baik cacat maupun perubahan yang diperlukan. Selain itu, tim perangkat lunak membuat informasi dukungan yang diperlukan (mis., Buku petunjuk, panduan pemecahan masalah, prosedur pemasangan) yang diperlukan untuk rilis. Pada akhir fase transisi, software increment menjadi xperangkat lunak yang dapat digunakan.[2]

Fase produksi (production) UP bertepatan dengan aktivitas penyebaran (deployment) proses generik. Selama fase ini, penggunaan perangkat lunak yang sedang berlangsung dimonitor, dukungan untuk lingkungan operasi (infrastruktur) disediakan, dan laporan cacat serta permintaan untuk perubahan diajukan dan dievaluasi.[2]

Sangat mungkin bahwa pada saat yang tahap konstruksi, transisi, dan produksi sedang dilakukan, pekerjaan mungkin sudah dimulai pada software increment berikutnya. Ini berarti bahwa lima fase UP tidak terjadi secara berurutan, melainkan lebih cenderung bersamaan. Alur kerja rekayasa perangkat lunak didistribusikan di semua fase UP. Dalam konteks UP, alur kerja analog dengan set tugas Artinya, alur kerja mengidentifikasi tugas yang diperlukan untuk menyelesaikan tindakan rekayasa perangkat lunak yang penting dan produk kerja yang dihasilkan sebagai konsekuensi dari berhasil menyelesaikan tugas. Perlu dicatat bahwa tidak setiap tugas yang diidentifikasi untuk alur kerja UP dilakukan untuk setiap proyek perangkat lunak. Tim mengadaptasi proses (tindakan, tugas, subtugas, dan produk kerja) untuk memenuhi kebutuhannya.[2]

Referensi


Latihan

Tuliskan Requirement dan Model Desain untuk Aplikasi Technical Support System


Referensi

Pressman, Roger.S. "Software Engineering : A Practioner's Approach." 



Absensi


Tuesday, September 17, 2024

Process Model

 

Metode Waterfall

Sebagai salah satu metode software development, Waterfall juga dikenal sebagai Software Development Life Cycle (SDLC) di mana merupakan salah satu metode pengembangan perangkat lunak yang mengikuti pola aliran, seperti air terjun. Dalam metode ini, setiap tahapan pengembangan dilakukan secara berurutan, mengalir dari atas ke bawah.

 

Metode Waterfall adalah pendekatan awal dalam SDLC yang digunakan dalam pengembangan perangkat lunak. Adapun metode ini pertama kali diperkenalkan di Symposium on Advanced Programming Method for Digital Computers pada tanggal 29 Juni 1956 oleh Herbert D. Benington. Perkenalan ini ia sampaikan saat mempresentasikan mengenai pengembangan software Semi Automatic Ground Envinronment (SAGE).

 

Kemudian, Benington kembali mempresentasikan metode Waterfall pada 1983. Pada kala itu, Benington menjelaskan tentang fase dalam proses pengembangan Waterfall. Dua tahun setelahnya, Departemen Pertahanan Amerika Serikat juga mulai menggunakan metode Waterfall dengan menerapkan enam fase Waterfall, yaitu Preliminary Design, Detailed Design, Coding and Unit Testing, Integration, dan Testing.

 

Bagaimana Proses Metode Waterfall?

Dinamakan “Waterfall” karena model pengembangannya menyerupai aliran air terjun, di mana setiap tahapan harus diselesaikan sebelum melanjutkan ke tahapan berikutnya.

 

Dalam metode Waterfall, proses pengembangan perangkat lunak dibagi menjadi beberapa tahap, di antaranya adalah analisis kebutuhan, perancangan, implementasi, pengujian, dan pemeliharaan.

 

Setiap tahapan memiliki target dan deliverables yang harus dicapai sebelum melanjutkan ke tahapan selanjutnya. Pemisahan tahapan ini bertujuan untuk mencapai kejelasan dan keteraturan dalam proses pengembangan dengan asumsi bahwa setiap tahap telah selesai dengan baik sebelum memasuki tahap berikutnya.

 

Pada metode Waterfall, umumnya tidak ada kemungkinan untuk kembali ke tahapan sebelumnya setelah tahapan tersebut selesai. Artinya, jika ada perubahan atau kekurangan yang ditemukan di tahap selanjutnya, perbaikan akan dilakukan di tahap pemeliharaan setelah tahap pengujian selesai.

 


Metode Waterfall telah menjadi salah satu pendekatan yang paling awal dan populer dalam pengembangan perangkat lunak. Meskipun sekarang ada banyak metode pengembangan yang lebih fleksibel dan adaptif, Waterfall masih digunakan dalam proyek-proyek dengan kebutuhan yang jelas, terbatasnya perubahan, dan ketegasan dalam rencana dan jadwal.


Tahapan metode Waterfall

Beberapa tahapan dalam proses metode Waterfall antara lain requirements analysis (analisis kebutuhan), design (perancangan), implementation (implementasi), testing (pengujian), dan deployment & maintenance (deploy dan pemeliharaan).

  1. Requirements analysis

    Tahap awal ini melibatkan identifikasi dan pemahaman yang mendalam terhadap kebutuhan pengguna dan pemangku kepentingan. Tujuan utamanya adalah mengumpulkan persyaratan fungsional dan non-fungsional yang akan menjadi dasar dari pengembangan software.

     

  2. Design

    Pada tahap ini, persyaratan yang telah dikumpulkan diterjemahkan menjadi desain perangkat lunak yang spesifik. Perancangan mencakup desain arsitektur sistem, desain user interface atau antarmuka pengguna, desain basis data, dan desain modul perangkat lunak. Tujuannya adalah menciptakan panduan yang jelas bagi tim pengembang dalam mengimplementasikan software.
     

  3. Implementation

    Tahap ini melibatkan proses pengkodean atau implementasi aktual dari software berdasarkan desain yang telah ditentukan sebelumnya. Tim developer menggunakan bahasa pemrograman dan alat pengembangan untuk menghasilkan software yang sesuai dengan spesifikasi desain.

     

  4. Testing

    Setelah implementasi selesai, software akan diuji untuk memastikan bahwa itu berfungsi sesuai dengan persyaratan yang ditentukan sebelumnya. Pengujian meliputi pengujian fungsionalitas, pengujian kesalahan (bug), pengujian integrasi, dan pengujian kinerja. Tujuannya adalah untuk menemukan dan memperbaiki kesalahan yang mungkin ada sebelum perangkat lunak diperkenalkan kepada pengguna akhir.

     

  5. Deployment and Maintenance

    Tahap pemeliharaan terjadi setelah software diluncurkan dan digunakan oleh pengguna. Ini melibatkan pemeliharaan rutin, pembaruan, dan perbaikan yang diperlukan untuk memastikan kinerja yang optimal dan kepatuhan dengan perubahan kebutuhan atau lingkungan yang terjadi seiring waktu.

 

Adapun tahapan-tahapan tersebut dijalankan secara berurutan, di mana setiap tahap harus selesai sebelum melanjutkan ke tahap berikutnya. Pendekatan linear inilah yang membedakan metode Waterfall dari metode pengembangan software yang lebih iteratif dan adaptif.

Kelebihan dan kekurangan metode Waterfall

Adapun beberapa kelebihan dari metode Waterfall di antaranya adalah memberikan kemampuan untuk departementalisasi dan kontrol yang efektif. Pengembangan perangkat lunak dilakukan melalui serangkaian fase yang berurutan sehingga membantu mengurangi kemungkinan terjadinya kesalahan.

 

Metode Waterfall juga memiliki sistem rangkaian (alur) dan akhir yang jelas. Proses pengembangan dimulai dari konseptualisasi, melalui tahap desain, implementasi, pengujian, instalasi, penyelesaian masalah, dan berakhir pada tahap operasi dan pemeliharaan.

 

Walau demikian, layaknya beberapa metode pengembangan software pada umumnya, Waterfall juga memiliki beberapa kekurangan, antara lain tidak fleksibel dan membutuhkan waktu yang lebih lama. Misalnya saja, jika terjadi perubahan di tengah jalan maka akan sulit bagi developer untuk mengubahnya. Sebab, alur linear seperti Waterfall memaksa developer untuk sesuai dari awal hingga akhir. 


Metode Waterfall menjadi pendekatan yang telah membentuk dasar dalam pengembangan software selama beberapa dekade. Meskipun metode ini memiliki kelebihan, seperti kejelasan struktur, manajemen project yang terprediksi, dan dokumentasi yang komprehensif, juga terdapat beberapa kekurangan, seperti kurangnya fleksibilitas dan keterbatasan dalam menangani perubahan yang mungkin terjadi.

 

Pilihan menggunakan metode Waterfall dalam pengembangan software harus didasarkan pada kebutuhan dan karakteristik spesifik dari project tersebut. Jika persyaratan stabil, jadwal dan anggaran yang jelas, serta kebutuhan untuk dokumentasi yang detail, metode Waterfall dapat menjadi pendekatan yang efektif.

 

Namun, dalam lingkungan yang berubah dengan persyaratan yang tidak pasti atau di mana responsibilitas tim dan kolaborasi yang tinggi diperlukan, metode pengembangan software yang lebih adaptif dan iteratif mungkin lebih cocok. 


Referensi

Pressman, Roger.S. "Software Engineering : A Practioner's Approach." 


Latihan

Cari paper/ atau TA yang berhubungan dengan Technical Support System, kemudian buatlah resumenya


Absensi





Tuesday, September 10, 2024

Struktur Proses PL

 


Struktur proses perangkat lunak atau software process structure adalah serangkaian aktivitas yang dilakukan untuk menentukan, merancang, mengimplementasikan, dan menguji sistem perangkat lunak. 

Model proses perangkat lunak adalah representasi abstrak dari proses tersebut, yang menggambarkan proses dari berbagai perspektif. Model ini juga dikenal sebagai siklus hidup pengembangan perangkat lunak. 

 Model proses perangkat lunak bertujuan untuk meningkatkan desain, manajemen produk, dan manajemen proyek. 

Proses Perangkat Lunak adalah serangkaian aktivitas yang koheren untuk menentukan, merancang, mengimplementasikan, dan menguji sistem perangkat lunak. Model proses perangkat lunak adalah representasi abstrak dari suatu proses yang menyajikan deskripsi suatu proses dari beberapa perspektif tertentu. 

Process Activities  memiliki empat dasar diantaranya :
  1. Software specification atau requirements engineering  adalah sebuah proses untuk memahami dan mendefinisikan layanan apa saja yang diperlukan oleh sistem dan mengidentifikasi kendala pada sistem operasi dan pengembangan.
  2. Software design and implementation adalah sebuah tahap dimana Software specification di implementasikan kedalam sebuah sistem yang dapat di eksekusi. Proses ini selalu melibatkan desain dan programming tetapi jika pendekatan pengembangan secara bertahap digunakan maka dapat dilakukan penyempurnaan spesifikasi perangkat lunak.
  3. Software validation  atau yang lebih umum dikenal sebagai validasi dan verifikasi dimaksudkan untuk menunjukkan bahwa sistem sesuai dengan spesifikasi dan juga memenuhi ekspektasi pelanggan.
  4. Software evolution adalah sebuah tahapan dimana perangkat lunak dapat dikembangkan lagi dikemudian hari apabila ada permintaan dari pelanggan.


Jenis-jenis Model Proses Perangkat Lunak

Salah satu konsep dasar proses pengembangan perangkat lunak adalah model SDLC yang merupakan singkatan dari Software Development Life Cycle models. Ada banyak model siklus hidup pengembangan yang telah dikembangkan untuk mencapai berbagai tujuan yang dibutuhkan. Model-model tersebut menentukan berbagai tahap proses dan urutan pelaksanaannya. Model SDLC yang paling banyak digunakan, populer, dan penting diberikan di bawah ini:

  1. Model Waterfall air terjun
  2. Model V
  3. Model Inkremental
  4. Model RAD
  5. Model Agile - Tangkas
  6. Model iteratif
  7. Model spiral
  8. Model prototipe

Referensi

Pressman, Roger.S. "Software Engineering : A Pract ioner's Approach." 




Tuesday, September 3, 2024

Software Engineering

 


Software engineering terdiri dari dua kata, yaitu software dan engineering. Software adalah kumpulan program yang terintegrasi. Sementara engineering merupakan penerapan ilmu berbasis ilmiah untuk merancang, membangun, memelihara, dan meningkatkan proses maupun framework dalam membuat sesuatu.

Software engineering adalah proses merancang, mengembangkan, menguji, dan memelihara perangkat lunak. Ini adalah pendekatan sistematis yang bertujuan untuk menciptakan perangkat lunak berkualitas, reliable, dan bisa di-maintenance.

Dalam software engineering ada berbagai teknik, tool, dan metodologi. Bidang ini juga menerapkan pendekatan terstruktur untuk mengembangkan perangkat lunak yang bisa meningkatkan efisiensi waktu dan anggaran.

Software engineering merupakan disiplin ilmu yang terus berkembang. Ilmu ini menggabungkan ilmu komputer dan pemecahan masalah strategis menggunakan prinsip-prinsip engineering, kemajuan teknologi, dan bahasa pemrograman.



Quality


  • Maintainability – software harus dapat dikembangkan untuk memenuhi kebutuhan yang terus berubah.
  • Efficiency – software tidak boleh menggunakan perangkat komputasi yang boros, seperti memori dan processor cycle.
  • Correctness – produk software harus memenuhi persyaratan yang sudah ditentukan di dokumen software requirements specification (SRS) dan diimplementasikan dengan benar.
  • Reusability – software memiliki reusability yang baik jika modul produk bisa digunakan kembali untuk mengembangkan produk baru.
  • Testability – software bisa digunakan untuk menetapkan kriteria pengujian dan mengevaluasi perangkat lunak sesuai dengan kriteria yang sudah ditetapkan.
  • Reliability – berkaitan dengan sejauh mana suatu program bisa melakukan fungsi sesuai keinginan dalam periode waktu yang berubah-ubah.
  • Portability – software dapat ditransfer dari satu sistem komputer ke lainnya.
  • Adaptability – software memungkinkan untuk menjalankan sistem sesuai kebutuhan pengguna.
  • Interoperability – kemampuan dua atau lebih functional unit untuk memproses data secara bersamaan.

Proses


Umbrella Activity






Referensi

  1. Pressman, Roger.S. "Software Engineering : A Pract ioner's Approach." 
  2. https://www.geeksforgeeks.org/umbrella-activities-in-software-engineering/
  3. https://revou.co/panduan-karir/software-engineering-adalah
  4. https://www.youtube.com/watch?v=qxv6vPlx2Cs&list=PLmAmHQ-_5ySyCjVtHdSjJ64QU2x5TH8Dy
  5. https://www.knowledgehut.com/blog/web-development/software-engineering-framework#frequently-asked-questions
  6. https://www.geeksforgeeks.org/software-engineering-software-process-framework/#what-is-a-software-process-framework
  7. https://edscl.in/pluginfile.php/1659/mod_resource/content/1/Software%20process%20structure%20and%20model-doc.pdf


Absensi