Pengenalan Software Engineering

oleh : Arna Fariza | Politeknik Elektronika Negeri Surabaya

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

Programmer VS RPL

Gambar 1 Programmer vs RPL

Model Proses Waterfall

Gambar 2 Model Proses Waterfall

Software Lifecycle dari Model Waterfall

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

Gambar 3 ADT Stack

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

Gambar 4 Contoh Class Employee

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)

Gambar 5 Contoh Inheritance

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)

    Gambar 6 Contoh Komponen

Komponen vs Object

Gambar 7 Komponen vs Object

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

dapat digambarkan seperti di bawah ini :

Gambar 8 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,
    Gambar 9 Aplikasi Terdistribusi

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
Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: