Jumat, 14 September 2018

Rekayasa perangkat lunak


Apakah Perangkat Lunak Itu ?

Perangkat Lunak adalah definisi dan organisasi dari sekumpulan task dan fungsi yang dienkapsulasi dalam bentuk yang dapat dieksekusi oleh komputer.
Beberapa tipe Perangkat Lunak :
  • Commercial-Off-the-Shelf (COTS)
  • Government-Off-the-Shelf (GOTS)
  • Legacy: ditulils dalam bahasa pemrograman ‘sebelumnya’
    • Cobol, PL/1 (Y2k/SNET), Fortran, etc
    • C and C++!
  • Customized New Software
  • Client vs Server Software
  • Database Management System / Applications
Rekayasa : Aplikasi keilmuan untuk penyelesaian permasalahan praktis.
Rekayasa Perangkat Lunak : Aplikasi ilmu komputer untuk membangun sistem perangkat lunak praktis.
Pemrograman :
  • Individu menulis keseluruhan program
  • Satu orang, satu komputer
  • Well-defined Problem
  • Programming-in-the-Small
Rekayasa Perangkat Lunak :
  • Individu menulis komponen program
  • Tim membangun keseluruhan program
  • Programming-in-the-Large
Aplikasi dari merekayasa Perangkat Lunak.
Wilayah Computer Science Engineering yang berhubungan dengan sistem Perangkat Lunak.
  • Besar dan kompleks
  • Dibangun oleh tim
  • Terdapat beberapa versi
  • Berakhir beberapa tahun
  • Undergo changes
Definisi :
  • Aplikasi yang menggunakan pendekatan sistematis, disiplin, terukur untuk mengembangkan, mengoperasikan, dan memelihara Perangkat Lunak (IEEE 1990)
  • Pembangunan oleh banyak orang (multi-person) dari Perangkat Lunak multi-version (Parnas 1978)


Mengapa Rekayasa Perangkat Lunak ?
Kompleksitas program melebihi programmer individu atau sendiri.
Rekayasa Perangkat Lunak ditarget untuk :
  • Membangun aplikasi Perangkat Lunak besar
  • Mendefinisikan permasalahan dengan jelas dan komplit
  • Perangkat dan teknik untuk mendukung proses
  • Team-Oriented experienced
Rekayasa Perangkat Lunak  harus berkembang menjadi Engineering discipline.
Rekayasa Perangkat Lunak harus memajukan dan mendukung konstruksi multi-person dari Perangkat Lunak multi-version.
Sejarah RPL
“Early Days”
  • Tahun 1950 programmer menulis program
  • Awal 1960 – Pembangunan project software skala sangat besar oleh “Expert”
  • Pertengahan akhir 1960 – Muncul aplikasi software komersial skala besar (sistem besar melibatkan tim dan muncul istilah “Software Engineering”)
Disiplin RPL
  • Individu tidak dapat melihat “Big Picture”
  • Meningkatnya waktu komunikasi
  • Perubahan personal berakibat pada produktifitas
RPL : Manajemen, organisasi, perangkat, teori, metodologi, teknik, dll.
Pengaruh RPL
Harga software terus meningkat, membutuhkan produksi software yang lebih efisien
  • Software acquisition vs outsourcing
  • Software reuse vs build-from-scratch
Kompleksitas Perangkat Lunak Besar berubah dalam bentuk perspektif pengembangan : Konsep – Desain – Pengembangan – Integrasi – Distribusi – Dokumentasi – Pemeliharaan – Evolusi – Perluasan.
Pertumbuhan RPL / Computer Science :
  • 350.000 pekerjaan teknologi informasi terbuka
  • 100.000 pekerjaan baru setiap tahun selama 10 tahun
A. Analisa dan spesifikasi kebutuhan :
  • Permasalahan apa yang dipecahkan ?
  • Apa yang dibutuhkan / diinginkan pelanggan ?
  • Interaksi antara SE dan pelanggan ?
  • Identifikasi dan dokumentasi kebutuhan sistem
  • Membangkitkan user manual dan tes plan
B. Desain dan spesifikasi
  • Bagaimana permasalahan dipecahkan
  • Desain High-Level
  • Menentukan komponen / modul
  • Transisi ke desain secara detil
  • Fungsional detil dari komponen / modul
C. Coding dan Testing Modul
  • Menulis kode sesuai spesifikasi desain komponen / modul
  • Memisahkan testing modul individu
  • Simulasi prilaku sistem dengan driver dan stub
D. Integrasi dan System Maintenance
  • Integrasi komponen / modul ke dalam sub sistem
  • Integrasi sub sistem ke dalam program akhir
E. Delivery dan Maintenance
  • Memberikan sistem ke Konsumen / Market
  • Memperbaiki buk dan version release sepanjang waktu
Sejarah Perangkat Lunak
>> Abstract Data Types (ADTs) – 1970-an
>> Object-Oriented Paradigm – 1980-an
>> Component-Based D&D – 1990-an
>> Web-Based / Distributed Computing – 2000-an
Abstract Data Types (ADTs) – 1970-an
Diusulkan oleh B. Liskov (MIT)  tahun 1975
ADTs mempromosikan pengembangan aplikasi dari pandangan informasi dan penggunaannya.
Proses desain ADT :
  • Identifikasi “jenis” atau “tipe” informasi
  • Membungkus informasi dan menyediakan public interface dari metode
  • Menyembunyikan informasi dan kode metode dalam private implementation
ADT berhubungan dengan User-Defined Data Types
Analogi dengan Integer Data Type dan +,-,*, dll


Object-Oriented Paradigm – 1980-an
Object-Oriented Decomposition :
  • Dekomposisi permasalahan ke dalam agen yang membentuk operasi
  • Penekanan agen yang menyebabkan aksi
Agen terdiri dari 12 bagian :
  • Hidden Implementation: data dan operasi hanya tersedia pada agen
  • Public Interface: operasi tersedia untuk client dari agen
Agen hanya dapat dimodifikasi dengan operasi yang ditentukan dengan Hidden Implementation atau Public Interface


Konsep Object-Oriented
Class
  • Tipe agen
  • Menggambarkan perilaku
Object
  • Instance dari class
  • Mempresentasikan data aktual yang dimanipulasi oleh agen
  • Memelihara state dari object
Method
  • Operasi yang didefinisikan dalam class
  • Operasi terhadap SEMUA instance dari class
Message
  • Mengindikasi bahwa method dari object dikerjakan


Modul vs ADT/Class
Modul
  • Menggambarkan baik state dan perilaku
  • Modul Employee terdiri dari Instance Variable, Operasi, dan Program Variable
  • Single instance di-share oleh semua user
Class
  • Menggambarkan hanya perilaku
  • Class Employee mengabaikan Program Variable
  • Multiple Independent Instance membagi deklarasi class yang sama tetapi membedakan state
Kunci perbedaan: sifat dinamis class memungkinkan instance dibuat sesuai kebutuhan
Konsep Lanjutan Object-Oriented
Inheritance
  • Menggunakan Class bersama-sama dengan Generalisasi dan Spesialisasi
  • Memperlakukan instance dari class yang berbeda dalam bentuk seragam
Polymorphism / Dynamic Binding
  • Pemilihan Run-Time dari Method dijalankan berdasarkan tipe pemanggilan instance
  • Message dilewatkan dalam tipe yang dependent
Generic: A Type Parameterizable Class
      • Stack mempunyai parameter untuk tipe elemen
      • Pembuatan Program Variable mengikat data dan Method stack ke tipe khusus dari elemen
Stack(Real), Stack(Int), Stack(Employee)
Keuntungan Object-Oriented
Mendukung komponen software yang reusable
  • Pembuatan dan testing dalam isolasi
  • Integrasi dari komponen yang bekerja
  • Desainer / developer melihat permasalahan pada level abtraksi lebih tinggi
Mengontrol konsistensi informasi
  • Public Interface membatasi akses ke data
  • Private Implementation tidak tersedia
Mempromosikan / Memfasilitasi Evolusi / Reuse software
  • Inheritance ke desain lebih lanjut / Class Library
  • Multiple instance dari class yang sama
Component-Based D&D – 1990-an
ADT sebagai unit abstraksi / konseptualisasi
Class adala Object-Oriented yang ekuivalen dengan ADT
Tetapi, dalam 10 tahun
  • Kekuatan komputasi meledak
  • Kompleksitas aplikasi meningkat
  • Class adalah bagian dari hirarki inheritance
  • Hirarki inheritance bagian dari Aplikasi Class Library
Dalam 10 tahun
  • Muncul Java (dan sekarang .NET)
  • Muncul Java Beans
  • Component-Based Development Tools
Apakah Komponen itu ?
Bagaimana aplikasi dikonsepkan ?
  • Inheritance Hierarchies Partition Domain
  • Package sebagai kumpulan atau class yang berhubungan
  • Kumpulan class, Package, hirarki inheritance membentuk Application Class Library
Bagaimana Class Library dimanfaatkan ?
  • Menggunakan Class individu
  • Menggunakan Package atau subset dari Package
  • Menggunakan porsi utama dari hirarki inheritance
  • Tool menggunakan beberapa Package dan/atau hirarki terpilih
  • Tool yang menjangkau Application Class merupakan software yang didesain dengan jelek
Konsep Komponen
Komponen terdiri dari satu atau lebih Class (atau komponen lain) dan diperuntukkan untuk mendukung Pembentukan unit fungsionalitas
Peruntukan class dalam multiple component mempertahankan semantic  yang sama dalam semua keadaan
Contoh komponen
  • Graphical User Interface Widget
  • Major “Reused” Functionality (Algoritma untuk Searching/Sorting, Database Connection/Querying)
  • Aplikasi khusus (Komponen Cost Accounting, Komponen Computational Fluid Dynamics)
Contoh Komponen
Two Sample Components:
  • Komponen Tanggal (selalu tanggal valid)
  • Komponen Alamat (konsistensi dalam presentasi)

Web-Based / Distributed Computing – 2000-an
Komputasi / aplikasi terdistribusi adalah :
  • Sistem dari sistem
  • Interoperasi dari aplikasi baru dan yang sudah ada
  • Pewarisan, database, COTS, New Client dll
  • Network Centric Environment
  • Multi-Tier Solutions
Aplikasi komputasi terdistribusi harus :
  • Mengatur, mengontrol, mengakses dan memodifikasi data
  • Memungkinkan manusia berinteraksi dengan data
  • Menyediakan High-Availability dan Performansi
  • dapat berkembang sepanjang waktu
Apakah Aplikasi Terdistribusi
Realitas saat ini :
Alasan : Artifact – kumpulan  (DB, Legacy, COTS, GOTS, Each w/ API)
Alasan : User
  • Baru dan sudah ada
  • Memanfaatkan Artifact API
Aplikasi Terdistribusi
  • Artifacts + User
Isu yang terjadi ?
  • Bagaimana mereka berinteraksi ?
  • Heterogenitas
  • Masalah keamanan
  • Model program  yang berbeda
  • dll,
CASE
CASE (Computer-Aided Software Engineering) adalah berbagai macam program yang digunakan untuk mendukung semua kegiatan Perangkat Lunak seperti analisa persyaratan, permodelan sistem, debugging, dan pengujian
CASE bisa terdiri dari
  • Editor untuk notasi yang digunakan
  • Modul analisis untuk memeriksa model sistem dan membuat dokumentasinya
CASE bisa mencakup generator kode, CASE yang hanya terdiri dari editor dinamakan Lower-Case
Atribut-atribut Perangkat Lunak
Perangkat Lunak harus :
  • Memberikan fungsionalitas dan kinerja yang dibutuhkan user
  • Dapat dipelihara: Perangkat Lunak dapat diubah sesuai perubahan kebutuhan user
  • Dapat diandalkan: Perangkat Lunak harus memiliki keandalan, keamanan dan keselamatan. Perangkat Lunak yang baik tidak menyebabkan kerusakan fisik atau ekonomi bila terjadi kegagalan sistem
  • Dapat digunakan: Perangkat Lunak harus memiliki user interface yang baik dan dokumentasi yang mencukupi
Macam-macam Perangkat Lunak
Perangkat Lunak Berdasarkan Pemakai
  • Generik: Perangkat Lunak yang bisa digunakan secara umum
  • Spesifik: Perangkat Lunak yang dibuat berdasarkan pesanan
Perangkat Lunak Berdasarkan Fungsional
  • Interfacing
  • Operating System
  • Perangkat Lunak Aplikasi
  • CASE Tools
Perangkat Lunak Berdasarkan Pemakai
Generik: Perangkat Lunak yang bisa digunakan secara umum. Sebagai Contoh:
  • Operating System seperti Microsoft Windows
  • Word Processing seperti Microsoft Word, WordPad
  • Spreadsheet seperti Microsoft Excell
  • Beberapa aplikasi khusus bisa dibuat menjadi generik dengan membuatnya general dan mudah digunakan siapa saja seperti aplikasi akuntansi, aplikasi sekolah, dll.
Spesifik: Perangkat Lunak yang dibuat berdasarkan pesanan. Bnayak Software House yang menghasilkan Perangkat Lunak ini berdasarkan proyek/pesanan tertentu. Sebagai contoh aplikasi Rumah Sakit, aplikasi Pendidikan, aplikasi Kesehatan, dll.
Perangkat Lunak Berdasarkan Fungsional
INTERFACING: Perangkat Lunak ini menghubungkan suatu perangkat keras tertentu, seperti Hardware driver, interfaces dengan perangkat keras lain. Contoh:
  • Driver untuk kamera, handphone atau perangkat keras lainnya.
  • Program interface seperti sensor suhu dengan LM555, PPI 8255, Komunikasi Serial RS232
OPERATING SYSTEM: Perangkat lunak yang menjalankan sistem komputer dan merupakan interface dari sistem komputer dan program aplikasi yang berjalan di atasnya.
Beberapa OS yang dikenal secara luas:
  • Windows
  • Linux dan variansnya, seperti Redhat, Suse, Mandrake, Debian
    dll.
  • Unix
  • FreeBSD
  • Machintos (Apple)
PROGRAM APLIKASI, program ini digunakan untuk keperluan tertentu, yang tujuan membantu pekerjaan manusia menjadi lebih mudah. Progranm ini yang banyak dibahas dalam pembuatan perangkat lunak.
Program Aplikasi ini tergantung pada kebutuhan dari program itu sendiri, seperti
  • Program Office
  • Program Graphics Design
  • Program Multimedia
  • Dan Lain-lain
Advertisements


Tidak ada komentar:

Posting Komentar

Pagaralam

Rapid Aplication Development (RAD) adalah sebuah proses perkembangan perangkat lunak sekuensial linier yang menekankan siklus perkembangan ...