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 :
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 :
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.
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 :
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.
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
>> 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 :
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
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
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
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