Anda di halaman 1dari 9

Catatan Learning Outcomes:

• Komponen dalam suatu sistem atau software terdiri dari database, interface, API, dan
lainnya
• Struktur merupakan relasi antar komponen dalam suatu sistem
• Behavior/sifat merupakan perilaku bagaimana sistem itu nanti memberikan
feedback/respon ketika terjadi suatu input/stimulus yang diberikan oleh user
• suatu software dapat dikatakan kuat jika memiliki sifat reliable, atau seberapa mampu
suatu software dapat mengatasi atau menghindari kegagalan
• Reliability → maksimum failure yang dapat ditoleransi. Makin tinggi relilability →
makin minim failure yang terjadi

The big goal → menjadi software engineers

• bekerja dalam sebuah tim melalui seluruh project life cycle dengan semua fase mulai
dari requirements engineering sampai delivery
• mengembangkan software yang berfungsi dengan baik dan berguna yang setidaknya
berfungsi sebagai prototype
o software harus didokumentasikan dengan baik dan maintainable (dapat
dijaga/dipelihara)

What is software?
Software - IEEE definition Software adalah Program komputer, prosedur, dan dokumentasi
atau data yang berkaitan dengan operasi sistem komputer

→ Program komputer, struktur data dan dokumentasi terkait. Produk perangkat lunak dapat
dikembangkan untuk pelanggan tertentu atau dapat dikembangkan untuk pasar umum.

Menurut definisi IEEE yang hampir identik dengan definisi ISO, Software merupakan
produk yang memiliki 4 komponen sebagai berikut:

• Program komputer (code)


• Prosedur
• Dokumentasi
• Data yang diperlukan untuk mengoperasikan sistem perangkat lunak Keempat
komponen tersebut dibutuhkan untuk menjamin kualitas suatu software.

Software yang baik selalu memiliki:

• Quality of code: bisa dibaca, dimaintain, reusable, clean, ada dokumentasi,


formatting, layouting code
• Quality of procedures: valid, efisien, tidak boros resource
• Quality of documentation
• Quality of data: data update dan lengkap
Atribut software yang baik:

• Memberikan fungsionalitas dan performa yang diperlukan kepada pengguna dengan


baik (tidak useless)
• Dapat dipelihara (maintainable)
• Dependable → dapat diandalkan
• Usable → dapat digunakan

Software vs Hardware

• Software lebih logical daripada physical.


o Berbeda dengan artefak yang dihasilkan dalam disiplin ilmu teknik lainnya,
Software dikembangkan bukan diproduksi secara fisik.
▪ dikelola/pemeliharaannya berbeda dari proyek manufaktur
▪ membangun software product lebih seperti membangun prototipe
desain, kemudian… → melakukan replikasi massal atau replikasi
berdasarkan kebutuhan pengguna
• Software tidak akan habis, tetapi akan memburuk/menurun kualitasnya (karena
perubahan dan seiring waktu pemakaian)
o untuk mengurangi kerusakan perangkat lunak, desain dengan lebih bagus
o metode SE berusaha untuk mengurangi tingkat kegagalan (failure rate) s/w

Failure rate graph dari sebuah software lifecycle, dimana changenya karena update
atau penyesuaian kebutuhan lingkungan

• Di dunia hardware, penggunaan kembali komponen merupakan hal yg wajar terjadi,


namun di dunia software hal itu baru mulai tercapai dan ditingkatkan
o Industri adalah konstruksi berbasis komponen (misalnya sekrup standar dan
sirkuit terpadu yang siap pakai(off-the-shelf integrated circuits)),
o sebagian besar software terus dibuat khusus (custom-built)
▪ Komponen modern yang dapat digunakan kembali untuk merangkum
data dan mengolah menjadi bagian-bagian software untuk digunakan
kembali oleh program yang berbeda.
▪ Contohnya graphical UI, window, menu pull-down pada library, dll.
• 4 hal yang membedakan software dan hardware
o Proses pengembangan software harus dikelola secara berbeda
o Desain yg dihasilkan lebih baik untuk mengurangi kerusakan
o Terapkan software engineering discipline untuk mengurangi kegagalan
o Promote component reuse

Hal yang perlu dipertimbangkan dalam mengembangkan software sebagai


sebuah produk engineering yang berbeda

• Proses pengembangan software harus dikelola secara berbeda → setiap komponen


harus dikelola dengan pendekatan yang berbeda
• Desain harus lebih bagus untuk mengurangi kerusakan
• Menarapkan disiplin software engineering untuk mengurangi kegagalan
• Promosikan penggunaan kembali komponen yg sudah ada
• Model structure : merancang database, interface
• Model behavior : merespons adanya stimulus, contoh salah password
• Reliable, dalam seminggu terjadi fail selama 1 jam
• Bug free

Software Products

• Generic products,
o dikembangkan dengan target pasar yang luas dengan target konsumer yang
berbeda-beda
o Contoh - software PC, software CAD, android untuk keperluan sehari-hari,
dan software dengan pasar yang spesifik seperti sistem janji temu untuk dokter
gigi
• Customized products,
o dikembangkan untuk pelanggan tertentu berdasarkan permintaan atau
keperluan spesifik pelanggan
o Contoh - embedded control systems, software untuk mengontrol lalu lintas
udara, sistem untuk memantau lalu lintas

Kategori Sotware

1. System software: seperti compilers, editors, file management utilities


2. Application software: program yang berdiri sendiri untuk kebutuhan tertentu
3. Engineering/scientific software: Ditandai dengan algoritma “number crunching”.
seperti analisis tegangan otomotif, biologi molekuler, dinamika orbital, dll
4. Embedded software: berada dalam suatu produk atau sistem → software yang
terintegrasi dengan perangkat keras atau suatu alat dan dikembangkan khusus untuk
perangkat tersebut (key pad control pada oven microwave, fungsi digital pada
tampilan dasbor di dalam mobil)
5. Product-line software: fokus pada suatu pasar terbatas untuk mengatasi pasar
konsumen massal. (pengolah kata, grafik, manajemen basis data)
6. WebApps (Web applications) software yang berpusat pada jaringan. Karena web 2.0
muncul, semakin banyak lingkungan komputasi canggih yang didukung terintegrasi
dengan database jarak jauh (remote) dan aplikasi bisnis.
7. AI (Artificial Intelligence) software yang menggunakan algoritma non-numerik untuk
memecahkan masalah kompleks. Robotika, expert system, permainan pengenalan
pola

Software - New Categories

1. Open world computing — komputasi terdistribusi, tersebar di mana-mana, karena


jaringan nirkabel (wireless). Memungkinkan perangkat seluler, komputer pribadi,
sistem perusahaan untuk berkomunikasi dalam jaringan yang luas.
2. Netsourcing — web sebagai mesin komputasi. Bagaimana merancang aplikasi
sederhana dan canggih untuk menargetkan end-users worldwide.
3. Dan juga… • Data mining • Grid computing • Cognitive machines • Software for
nanotechnologies

Kategori Software Lainnya - Berdasarkan Tipe


• System software
o Contohnya: operation system
▪ Low level OS → Console (text)
▪ High level OS → GUI, multitasking, multiuser
▪ Managed OS → OS on top of other OS (Contohnya shell, virtual
machine)
• Application software
o Productivity
o Utility
o Multimedia
o Internet
o Specific purpose, seperti
▪ Business
▪ Scientific/engineering
▪ Finance
▪ IDE
▪ CAD

Kategori Software Lainnya - Berdasarkan Lisensi

• Commercial software
o Contohnya: Low level OS → Console (text)
• Shareware/trial software
• Rentalware (software as a service)
• Freeware
• Abandonware
• Counterfeit/pirated software

Kategori Software Lainnya - Berdasarkan Source Code

• Closed source (proprietary software)


o Contohnya: operation system
▪ Low level OS → Console (text)
▪ High level OS → GUI, multitasking, multiuser
▪ Managed OS → OS on top of other OS (Contohnya shell, virtual
machine)
• Open source
• Shared source

Software Crisis

• Pada akhir 1960an


o Banyak project software gagal
o Banyak project software telat, over budget, menyediakan software yang tidak
bisa diandalkan yang mahal perawatannya
o Banyak projects software yang memproduksi software yang tidak memenuhi
kebutuhan pelanggan
o Kompleksitas projek software projects meningkat seiring dengan peningkatan
kemampuan hardware
o Sistem software yang lebih besar akan lebih sulit dan mahal pemeliharaannya
o Permintaan perangkat lunak baru meningkat lebih cepat daripada kemampuan
untuk menghasilkan perangkat lunak baru.
o Istilah ‘Software Engineering’ pertama kali diperkenalkan pada sebuah
konferensi untuk membahas krisis perangkat lunak.
• Akhir 1970an
o Evolusi yang tersebar luas tentang prinsip software engineering
• 1980an
o muncul automation dari software engineering dan pengembangan
CASE(Computer Aided Software Engineering)
• 1990an
o penekanan pada aspek 'manajemen' proyek, penggunaan kualitas standar dan
model 'proses' seperti: • ISO 9001 dan • Software Engineering Institute’s
Software Capability Maturity Model (CMM).

Software Engineering Definition


Definisi seminal: [Software engineering adalah] penetapan dan penggunaan prinsip rekayasa
suara untuk mendapatkan software yang ekonomis yang dapat diandalkan dan bekerja secara
efisien pada mesin yang nyata.

Definisi IEEE: Software Engineering: (1) Penerapan pendekatan sistematis, disiplin, terukur
untuk pengembangan, pengoperasian, dan pemeliharaan software; yaitu, penerapan
engineering ke software. (2) Studi tentang pendekatan seperti pada (1).

Harus punya quantifiable approach biar punya produk software yg useful untuk user (user
friendly)

Importance of Software Engineering

• Individu dan masyarakat bergantung pada sistem perangkat lunak canggih. Kita harus
bisa menghasilkan sistem yang dapat diandalkan dan dipercaya secara ekonomis dan
cepat.
• Modern software dikembangkan oleh tim spesialis software, bukan lagi dilakukan
oleh programmer tunggal. Namun, kekhawatiran pengembang software tetap sama
yaitu
o Mengapa software membutuhkan waktu lama untuk diselesaikan?
o Mengapa biaya produksinya begitu mahal?
o Mengapa semua kesalahan tidak dapat ditemukan dan dihapus sebelum
software dikirimkan ke pelanggan?
• Biasanya lebih murah, dalam jangka panjang, dengan menggunakan metode dan
teknik software engineering untuk sistem software.
o Karena sebagian besar biaya adalah biaya untuk mengubah software setelah
mulai digunakan
• Software engineering concerned dengan pengembangan software yang cost-effective

Perbedaan Software Engineering dan Computer Science

Computer science fokus ke teori dan fundamental, sedangkan software engineering fokus
pada kepraktisan mengembangkan dan memberikan software yang berguna.
Perbedaan Software Engineering dan System Engineering

System engineering fokus pasa semua aspek pada computer-based system development
termasuk hardware, software, dan proses engineering. Sedangkan, software engineering
merupakan bagian dari proses general

Essential Attributes of Good Software (Quality Attributes)

• Maintainability: Bisa dipelihara, software harus dibuat agar dapat beradaptasi dengan
perubahan yg dibutuhkan pelanggan. Dapat berkembang untuk memenuhi perubahan
kebutuhan pelanggan. Hal ini adalah atribut penting karena perubahan software
merupakan persyaratan yang tak terelakkan dari lingkungan bisnis yang berubah.
• Dependability and Security: Mencakup berbagai karakteristik termasuk keandalan,
keamanan, dan keselamatan. Dimana jika terjadi kegagalan sistem tidak akan
menyebabkan kerusakan fisik atau ekonomi. Pengguna malicious (jahat) seharusnya
tidak bisa mengakses atau merusak sistem, aman dari unauthorized access (hanya user
tertentu yg dapat mengakses sistem).
• Effiiciency: Tidak boleh menggunakan resource sistem secara boros, seperti siklus
memori dan prosesor. Efisiensi mencakup daya tanggap (responsiveness), waktu
pemrosesan, pemanfaatan memori, dll.
• Acceptability: Dapat diterima oleh tipe pengguna yang dirancang, fungsi2 yg
diharapkan user tersedia. Dapat dimengerti, dapat digunakan dan kompatibel dengan
sistem lain yang pengguna gunakan.

Software Engineering Layered Technology

• A “quality” focus: setiap pendekatan engineering harus bertumpu pada komitmen


organisasi terhadap kualitas yang mendorong budaya perbaikan proses yang
berkelanjutan.
• Process model: lapisan yang berperan sebagai fondasi yang mendefinisikan sebuah
framework dengan kegiatan untuk pengiriman teknologi software engineering yang
efektif. Menetapkan konteks di mana produk (model, data, laporan, dan formulir)
diproduksi, pencapaian ditetapkan, kualitas dipastikan dan perubahan dikelola
• Method: memberikan petunjuk teknis untuk membangun software termasuk
komunikasi, analisis kebutuhan, pemodelan desain, konstruksi program, pengujian
dan dukungan.
• Tools: menyediakan dukungan otomatis atau semi-otomatis untuk proses dan metode

Software Process
• Proses adalah kumpulan aktivitas, termasuk tindakan dan tugas yang dilakukan untuk
membuat produk kerja.
• Bukan rekomendasi/prescription yang kaku tentang bagaimana membangun computer
software
• Pendekatannya adaptable atau dapat disesuaikan dengan kebutuhan. Sehingga
memungkinkan orang melakukan pekerjaan, serta memilah dan memilih kumpulan
tindakan dan tugas yang sesuai.
• Bertujuan untuk menghasilkan software dengan tepat waktu dan berkualitas untuk
memuaskan sponsor dalam pembuatannya dan orang yang akan menggunakannya

Five Activities of a Generic Process

• Communication Berkomunikasi dengan pelanggan untuk memahami tujuan dan


mengumpulkan kebutuhan
• Planning Membuat sebuah roadmap yang mendefinisikan pekerjaan dengan
menggambarkan tugas, risiko dan resources, produk kerja, dan jadwal kerja.
• Modeling Membuat gambaran seperti apa arsitekturnya, bagaimana bagian-bagian
penyusunnya cocok, dan karakteristik lainnya yang dibutuhkan Modeling terdiri dari:
struktur dan behavior (tindakan)
• Construction Pembuatan program/kode dan pengujian
• Deployment Diserahkan ke pelanggan yang mengevaluasi produk dan memberikan
umpan balik/feedback/masukan berdasarkan evaluasi.

Umbrella Activities

Melengkapi five activities of a generic process dan membantu tim mengelola dan
mengendalikan perkembangan, kualitas, perubahan, dan risiko.

• Software project tracking control → menilai kemajuan terhadap rencana dan


mengambil tindakan untuk mempertahankan jadwal
• Risk management → menilai risiko yang dapat mempengaruhi hasil dan kualitas.
• Software quality assurance → mendefinisikan dan melakukan kegiatan untuk
memastikan kualitas.
• Technical reviews → menilai produk kerja untuk mengungkap dan menghilangkan
kesalahan sebelum melanjutkan ke aktivitas berikutnya
• Measurement → mendefinisikan dan mengumpulkan proses, proyek, dan ukuran
produk untuk memastikan kebutuhan stakeholder terpenuhi
• Software configuration management → mengelola efek perubahan selama software
process.
• Reuse ability management → mendefinisikan kriteria untuk penggunaan kembali
produk kerja dan menetapkan mekanisme untuk mencapai komponen yang dapat
digunakan kembali
• Work product preparation and production → buat produk kerja seperti model,
dokumen, log, formulir, dan daftar

Prescriptive and Agile Process Models

• Prescriptive process models


o Menekankan definisi yang rinci, identifikasi, dan penerapan aktivasi proses
dan tugas.
o Tujuannya adalah untuk meningkatkan kualitas sistem, membuat proyek lebih
mudah dikelola, membuat tanggal pengiriman dan biaya lebih dapat
diprediksi, dan memandu tim software engineers saat mereka melakukan
pekerjaan yang diperlukan untuk membangun sistem.
o Sayangnya, ada kalanya tujuan tersebut tidak tercapai. Jika model preskriptif
diterapkan secara dogmatis dan tanpa adaptasi, dapat meningkatkan tingkat
birokrasi.
• Agile process models
o menekankan "kelincahan" proyek dan mengikuti seperangkat prinsip yang
mengarah pada pendekatan yang lebih informal untuk software process.
o Ini menekankan kemampuan manuver dan kemampuan beradaptasi. Hal ini
sangat berguna ketika aplikasi Web direkayasa.

The Essence of Practice


Pada intinya, praktik yang baik adalah pemecahan masalah yang masuk akal

The Essence of Problem Solving

George Polya outlines:

• Memahami masalah (komunikasi dan analisi)


o Siapa yang memiliki kepentingan dalam pemecahan masalah? Artinya, siapa
pemangku kepentingannya/stakeholders?
o Apa yang tidak diketahui? Data, fungsi, dan fitur apa yang diperlukan untuk
menyelesaikan masalah dengan benar?
o Dapatkah masalah dikotak-kotakkan? Apakah mungkin untuk mewakili
masalah yang lebih kecil yang mungkin lebih mudah dipahami?
o Dapatkah masalah direpresentasikan secara grafis? Bisakah model analisis
dibuat?
• Merancang solusi (pemodelan dan desain software)
o Pernahkah Anda melihat masalah serupa sebelumnya? Apakah ada pola yang
dapat dikenali dalam solusi potensial? Apakah sudah ada perangkat lunak
yang mengimplementasikan data, fungsi, dan fitur yang diperlukan?
o Apakah masalah serupa sudah terpecahkan? Jika demikian, apakah elemen
solusi dapat digunakan kembali?
o Bisakah sub-masalah didefinisikan? Jika demikian, apakah solusi mudah
terlihat untuk sub-masalah?
o Bisakah Anda mewakili solusi dengan langkah yang mengarah pada
implementasi yang efektif? Bisakah model desain dibuat?
• Menjalankan rencana (pembuatan kode)
o Apakah solusi sesuai dengan rencana? Apakah source code dapat dilacak ke
model desain?
o Apakah setiap komponen bagian dari solusi terbukti benar? Apakah desain dan
kode telah ditinjau, atau lebih baik, apakah bukti kebenaran telah diterapkan
pada algoritma?
• Memeriksa hasil untuk akurasi (pengujian dan jaminan kualitas).
o Apakah mungkin untuk menguji setiap komponen bagian dari solusi? Apakah
strategi pengujian yang masuk akal telah diterapkan?
o Apakah solusi menghasilkan hasil yang sesuai dengan data, fungsi, dan fitur
yang dibutuhkan? Apakah software telah divalidasi terhadap semua
persyaratan stakeholder?
How It all Starts

• Setiap proyek software dipicu oleh beberapa kebutuhan bisnis—


o kebutuhan untuk memperbaiki cacat pada aplikasi yang ada;
o kebutuhan untuk mengadaptasi 'peninggalan sistem' dengan lingkungan bisnis
yang berubah
o kebutuhan untuk memperluas fungsi dan fitur dari aplikasi yang ada, atau
o kebutuhan untuk menciptakan produk, layanan, atau sistem baru.

Anda mungkin juga menyukai