Kamis, 18 Agustus 2016

Software Project Management and Software Metrics

Cara koordinasi dan berkomunikasi dalam tim

  • Formal, pendekatan impersonal termasuk dokumentasi software dan produk kerja (termasuk kode sumber), teknikal memo, tonggak proyek, jadwal, dan tools pengendalian proyek , permintaan perubahan dan dokumentasi terkait, laporan pelacakan kesalahan, dan data repositori.
  • Formal, prosedur interpersonal fokus pada kegiatan Quality Assurance diterapkan untuk produk kerja software. Hal ini menyangkut pertemuan status dan desain dan kode inspeksi.
  • Informal, prosedur interpersonal termasuk pertemuan kelompok untuk penyebaran informasi dan pemecahan masalah dan "alokasi kebutuhan dan pengembangan staf."
  • Electronic Communication meliputi surat elektronik, papan buletin elektronik, dan tidak ekstensi, sistem konferensi berbasis video.
  • Jaringan interpersonal termasuk diskusi informal dengan anggota tim dan orang-orang di luar proyek yang mungkin memiliki pengalaman atau wawasan yang dapat membantu anggota tim.

Problem Decomposition
  • pertimbangkan karakteristik proyek
  • menentukan tingkat ketelitian yang dibutuhkan
  • mendefinisikan tugas untuk setiap kegiatan software engineering
Ada 3 faktor yang mempengaruhi Kualitas Perangkat Lunak menurut McCall yang dikenal dengan “McCall’s Triangle of Quality”. 
  • Product Operation
  1. Correctness: sejauh mana suatu software memenuhi spesifikasi dan mission objective dari users
  2. Reliability:  sejauh mana suatu software dapat diharapkan untuk melaksanakan fungsinya dengan ketelitian yang diperlukan
  3. Integrity: sejauh mana akses ke software dan data oleh pihak yang tidak berhak dapat dikendalikan
  4. Efisiensi: banyaknya sumber daya komputasi dan kode program yang dibutuhkan suatu software untuk melakukan fungsinya
  5. Usability: usaha yang diperlukan untuk mempelajari, mengoperasikan, menyiapkan input, dan mengartikan output dari software
  • Product Revision
  1. Maintainability: usaha yang diperlukan untuk menemukan dan memperbaiki kesalahan (error) dalam software
  2. Flexibility: usaha yang diperlukan untuk melakukan modifikasi terhadap software yang operasional
  3. Testability: usaha yang diperlukan untuk menguji suatu software untuk memastikan apakah melakukan fungsi yang dikehendaki atau tidak
  • Product Transition
  1. Portability: kemampuan program yang dibuat untuk berjalan diberbagai landasan, seperti dapat berjalan di Sistem Operasi yg berbeda (windows, linux, Mac)
  2. Reuseability: sejauh mana suatu software (atau bagian software) dapat digunakan ulang pada aplikasi lainnya
  3. Interoperatebility: kemampuan aplikasi untuk dapat berkomunikasi dengan program lainnya seperti dapat berkomunikasi dengan database atau program lain yang bersangkutan

Function Point: adalah sebuah perhitungan yang digunakan untuk menentukan harga suatu program, semakin banyak fungsi yang dibutuhkan oleh program maka akan semakin mahal harganya dan fungsi2 tersebut memiliki nilainya sendiri. Fungsi yang sulit dibuat akan memiliki harga lebih mahal dari fungsi yang mudah. Berbeda dengan LOC (Line of Code) yang nilai programnya ditentukan dari berapa baris code yang ada dalam program tersebut
F
Contoh function point


Software Maturity Index (SMI)
yang memberikan indikasi stabilitas produk software (berdasarkan perubahan yang terjadi untuk setiap rilis produk)

SMI=  (MT - (Fa - Fc - Fd))/MT

MT= jumlah seluruh modul
Fa  = jumlah modul yang ditambahkan
Fc  = jumlah modul yang diganti
Fd  = jumlah modul yang dihapus

Measuring Quality
  • Correctness: sejauh mana program beroperasi sesuai dengan spesifikasi / permintaan user
  • Maintainability: sejauh mana program ini bisa menerima perubahan
  • Integrity: sejauh mana program tahan terhadap serangan dari luar
  • Usability: sejauh mana program mudah dipahami cara penggunaannya oleh user
Defect Removal Efisiensi
DRE = E / (E+D)

E = jumlah error yang ada sebelum diperbaiki
D = jumlah cacad yang muncul setelah perbaikan error



Sabtu, 13 Agustus 2016

Formal Modeling and Software Configuration Management

Cleanroom Software Engineering
  • Increment Planning: menyusun rencana tambahan
  • Requirment Gathering: mendefinisikan deskripsi dari level customer requirment
  • Box Structure Spesification: menjelaskan spesifikasi fungsional
  • Design Formal: Spesifikasi (BlackBox) yang iteratif halus untuk menjadi analog dengan desain arsitektur dan prosedural.
  • Verifikasi Kebenaran Software
  • Code Generation: spesifikasi struktur kotak, diwakili dalam bahasa khusus, ditransmisikan ke dalam bahasa pemrograman yang sesuai.
  • Statistical Test Planning: statistik dari test case
  • Statistical Usage Planning: mengeksekusi serangkaian tes yang berasal dari sampel statistik 
  • Sertifikasi

Cleanroom Testing
  • statistical use testing: menguji penggunaan aktual dari program
  • menentukan “usage probability distribution”
  • menganalisis spesifikasi untuk mengidentifikasi sebuah pergerakan
  • pergerakan menyebabkan perangkat lunak untuk mengubah perilaku
  • buat skenario pengunaan
  • menetapkan probabilitas penggunaan untuk setiap pergerakan
  • uji kasus dihasilkan untuk setiap pergerakan sesuai dengan distribusi penggunaan probabilitas 

Certification

  1. Harus ada skenario pengunaan
  2. Spesifikasikan profile pemakaian
  3. Test case dihasilkan dari profile
  4. Tes dieksekusi dan data kegagalan dicatat dan dianalisis
  5. Reliability dihitung dan bersertifikat 

Certification Model
  • Sampling model
  • Component model
  • Certification model

Formal Method
Formal Method yang digunakan dalam mengembangkan sistem komputer secara matematis untuk menggambarkan sifat sistem properties. Formal metode seperti menyediakan kerangka kerja di mana orang dapat menentukan, mengembangkan, dan memverifikasi sistem secara sistematis, bukan secara ad hoc.

Formal Spesification
  • Desired Properties: konsistensi, kelengkapan, dan kurangnya ambiguitas adalah tujuan dari semua metode spesifikasi.
  • Formal syntax: spesifikasi bahasa memungkinkan persyaratan atau desain untuk ditafsirkan hanya dengan satu cara, menghilangkan ambiguitas yang sering terjadi pada bahasa normal (misalnya, bahasa Inggris) atau notasi grafis harus ditafsirkan
  • Fasilitas deskriptif set teori dan notasi logika memungkinkan pernyataan yang jelas dari fakta-fakta
  • Konsistensi dipastikan dengan matematis membuktikan bahwa fakta-fakta awal dapat secara resmi dipetakan (menggunakan aturan inferensi) ke dalam laporan kemudian dalam spesifikasi.

Formal Methode Concept
  • data invariant: suatu kondisi yang benar di seluruh pelaksanaan sistem yang berisi kumpulan data
  • state
  • operation: suatu tindakan yang terjadi dalam suatu sistem dan membaca atau menulis data ke state

Object Constraint Language (OCL)

  • notasi formal dikembangkan sehingga pengguna dari UML dapat menambahkan lebih presisi dengan spesifikasi mereka
  • Semua kekuatan logika dan diskrit matematika tersedia dalam bahasa tersebut
  • Namun para perancang OCL memutuskan bahwa hanya karakter ASCII (bukan notasi matematika konvensional) harus digunakan dalam laporan OCL

OCL Overview
  • Seperti bahasa pemrograman berorientasi objek, ekspresi OCL melibatkan operator yang beroperasi pada objek.
  • Namun, hasil dari ekspresi lengkap harus selalu menjadi Boolean, yaitu benar atau salah.
  • Object dapat contoh dari OCL Collection class, Set dan Squence adalah dua subclass.

Baseline merupakan tonggak dalam pengembangan perangkat lunak yang ditandai dengan pengiriman item konfigurasi satu atau lebih perangkat lunak dan persetujuan SCIs ini yang diperoleh melalui review teknis formal

Repository Features
  • Versioning: memberikan versi pada program dan melakukan perubahan versi saat ada perubahan
  • Dependency tracking and change management: repositori mengelola berbagai hubungan antara elemen data yang tersimpan di dalamnya.
  • Requirment Tracing: menyediakan kemampuan untuk melacak semua desain dan konstruksi komponen dan kiriman yang dihasilkan dari spesifikasi kebutuhan spesifik
  • Configuration Management: Melacak serangkaian konfigurasi yang mewakili tonggak proyek atau rilis produksi tertentu. manajemen versi menyediakan versi yang diperlukan, dan manajemen link melacak saling ketergantungan.
  • Audit Trails: menetapkan informasi tambahan tentang kapan, mengapa, dan oleh siapa perubahan yang dibuat.

SCM Elements
  • Component elements: seperangkat alat digabungkan dalam sistem manajemen file (misalnya, database) yang memungkinkan akses dan pengelolaan setiap item konfigurasi perangkat lunak.
  • Process elements: koleksi prosedur dan tugas-tugas yang menentukan pendekatan yang efektif untuk mengubah manajemen (dan kegiatan terkait) untuk semua konstituen yang terlibat dalam manajemen, teknik dan penggunaan perangkat lunak komputer.
  • Construction elements: suatu tools yang mengotomatiskan pembangunan software dengan memastikan bahwa set dari komponen divalidasi (yaitu, versi yang benar) telah dirakit.
  • Human elements: untuk menerapkan SCM yang efektif, tim pembuaat software menggunakan suatu tools dan fitur proses (meliputi elemen CM lainnya).

Version Control ada 4hal yang harus diperhatikan dalam version control
  • Project Database (repository) yang menyimpan semua konfigurasi objek yang relevan
  • kemampuan manajemen versi yang menyimpan semua versi dari objek konfigurasi (atau memungkinkan versi yang akan dibangun menggunakan perbedaan dari versi terakhir);
  • membuat fasilitas yang memungkinkan insinyur perangkat lunak untuk mengumpulkan semua konfigurasi object yang relevan dan membangun versi tertentu dari perangkat lunak.
  • masalah pelacakan (juga disebut bug tracking) kemampuan yang memungkinkan tim untuk merekam dan melacak status dari semua isu yang beredar terkait dengan setiap konfigurasi object.

Kamis, 11 Agustus 2016

Prototyping Product or Service

Prototyping adalah sebuah model dari suatu produk yang digunakan untuk mempermudah user dalam mengenali produk, prototype juga mempermudah developer mengubah design pada suatu produk.

Design Attitude adalah sebuah ilmu yang digunakan untuk memecahkan suatu masalah atau menciptakan sesuatu yang baru untuk melihat peluang yang lebih dan kemungkinan untuk mengembangkan produk.

Untuk menguasai design attitude manger harus menguasai

  • Kemampuan menanyakan asumsi dasar
  • Mengetahui kapan balik modal dan dapat keuntungan
  • Leading the Unknown
  • Membuat produk jadi nyata

Cara membuat Prototype
  • Membuat Sketch
  • Masukan ke Model Canvas
  • Dari model kanvas diubah jadi ke bisnis case (ada hitung2 keuangan)
  • Melakukan Test di lapangan

Selasa, 09 Agustus 2016

Testing Convetional and OO Application

Software Testing Fudamental

Testability

  • Operability: dapat dioperasikan dengan rapih
  • Observebility: setiap hasil dari test case langsung dapat diamati
  • Controllability: sejauh mana pengujian dapat dioptimalkan
  • Decomposability: pengujian dapat ditargetkan
  • Simplicity: mengurangi arsitektur kompleks dan logika untuk menyederhanakan tes
  • Stability: beberapa perubahan yang diminta selama pengujian
  • Understandability: design dapat dipahami

What is a "Good Test"?
  • Sebuah tes yang baik memiliki probabilitas tinggi untuk menemukan kesalahan
  • Sebuah tes yang baik adalah tidak berlebihan.
  • Sebuah tes yang baik harus "dapat terus dikembangkan"
  • Sebuah tes yang baik harus tidak terlalu sederhana atau terlalu rumit

Internal dan External Testing

Test Case Design adalah test yang dilakukan untuk mencari bug yang ada pada program. Biasanya bug terdapat pada sudut - sudut program, jadi kita harus melakukan pengetesan hingga bagian - bagian kecil program juga. Contoh simple saat bermain game terdapat bug hingga player dapat menembus tembok itu terjadi karena ada bug di sudut program.

Contoh Bug pada sudut program


Exhaustive Testing adalah tehnik pengetesan yang cukup melakukan pengetesan sekali jalan saja untuk menghemat waktu testing dan cepatnya penyelsaian produk. Pada contoh dibawah ada looping sebanyak 20 kali nah kita tidak perlu melakukan 20x cukup 3x saja juga sudah bagus tujuannya untuk menghemat waktu
Contoh Exhausting Loop


Selective Testing adalah testing yang dilakukan untuk setiap jalur selection yang ada pada program
Contoh Selective Testing


Software Testing terbagi menjadi 2 yaitu
  • Blackbox testing: test yang biasa dilakukan dengan memanggil end user atau seorang tester, dalam blackbox testing pengguna tidak mengetahui apa isi code program yang ada di dalamnya pengguna hanya perlu tahu fungsi - fungsi dari program. Contoh: ada program melakukan sorting, pengguna tidak perlu tahu tehnik sorting apa yang digunakan dia hanya perlu tahu hasil dari sorting tersebut benar atau salah.
  • Whitebox testing: test yang biasa dilakukan oleh sang developer, perbedaannya dengan blackbox adalah orang yang melakukan test mengetahui apa saja code yang digunakan untuk melakukan fungsi - fungsi tersebut. Contoh: ada program melakukan sorting, ketika menguji dia perlu mengetahui tehnik apa yang digunakan dan apa hasilnya akan lebih cepat.


Basis Path Testing

Sebenernya gua bingung jelasinnya gimana yang pasti pertama kita cari path tertutup buat cari V(G) gatau apa itu artinya
Path tertutup biasanya selection atau looping jadi tinggal liat aja dari gambar ada berapa jumlah while atau if nya kira - kira gitu. Digambar ada 3 symbol condition maka P=3

V(G) = P + 1 = 3+1=4
P = jumlah path tertutup

terus tentuin jalur yang dilalui karena V(G) ada 4 maka jalurnya ada 4
Path 1: 1,2,4,7,8
Path 2: 1,2,3,5,7,8
Path 3: 1,2,3,6,7,8
Path 4: 1,2,4,7,1,2,3,5,7,8
yang terpenting setiap path pernah dilalui minimal sekali

Control Structure Testing
  • Condition Testing: kasus uji yang menguji semua logic condition yang ada pada modul program
  • Data Flow Testing: menguji semua data yang ada apakah fungsi - fungsinya sudah sesuai dengan yang ada pada data flow diagram dan juga variabelnya

Loop Testing
  • Simple Loop: loopingnya simple kaya for sekali aja
  • Nested Loop: ada looping didalam looping. Contoh: ada "do while" dalam "do while"
  • Concatenated Loops: setelah looping yang satu selesai baru masuk ke kondisi looping lainnya
  • Unstructured Loops: Don't try this at home. yang ini mungki dia kebanyakan pake jump to pas looping jadi loncat - loncat loopnya
Contoh Loop Testing


Object Oriented Testing
  • definisi pengujian harus diperluas untuk mencakup teknik penemuan error diterapkan berorientasi obyek analisis dan desain model
  • strategi untuk unit dan pengujian integrasi harus berubah secara signifikan
  • desain kasus uji harus memperhitungkan karakteristik unik dari perangkat lunak OO

Menentukan Kebenaran OO model
  • Selama analisis dan desain, kebenaran semantik dapat dinilai berdasarkan kesesuaian model untuk masalah dunia nyata.
  • Jika model akurat mencerminkan seperti di dunia nyata maka itu adalah semantik benar.
  • Untuk menentukan apakah model tersebut sesuai pada kenyataannya, mencerminkan persyaratan dunia nyata, itu harus disampaikan kepada ahli yang akan memeriksa definisi kelas dan hirarki untuk kelalaian dan ambiguitas.
  • hubungan antar kelas dievaluasi untuk menentukan apakah mereka secara akurat mencerminkan koneksi objek dunia nyata.

Testing Methode
  • Fault Based Testing: tester mencari kesalahan masuk akal (yaitu, aspek pelaksanaan sistem yang dapat mengakibatkan cacat). Untuk menentukan apakah kesalahan ini ada, test case dirancang untuk menguji desain atau kode.
  • Class Testing dan Class Hirarki: Melakukan pengujian dengan melihat kecocokan hubungan antara class dan apakah attribute dalam class sudah benar. Lalu baru melakukan integration testing.
  • Scenario Based Test Design: pengujian berbasis skenario berkonsentrasi pada apa yang pengguna lakukan, bukan apa produk lakukan. Ini berarti menangkap tugas (melalui use-case) bahwa apa yang pengguna harus lakukan, kemudian menerapkan mereka dan varian mereka sebagai tes.

Senin, 08 Agustus 2016

Product or Service Development

Pada sesi ini kita akan membahas tentang New Product Development lagi - lagi kewirausahaan :D

Apa itu New Product Development? adalah sebuah istilah yang digunakan untuk menggambarkan proses lengkap membawa produk baru ke pasar.

Tantangan dalam mengembangkan produk baru

  • Mendefinisikan spesifikasi produk
  • Masalah waktu dan sumber daya
  • Interaksi dari kelompok Pengembangan Produk dengan perusahaan yang ada

Cara mengatasi tantangan ini adalah
  • Menaksir nilai financial project sebelum memulai pembangunan.
  • Memprioritaskan proyek sesuai dengan kriteria yang jelas.
  • Biarkan seorang marketing profesional yang memasarkan.
  • Menentukan pasar dan spesifikasi upfront produk.
  • Melibatkan semua fungsi dari perusahaan pada tahap pemilihan produk.
  • Menyelaraskan target dan sumber daya proyek.

Penyebab kegagalan produk
  • Tidak memenuhi kebutuhan atau keinginan konsumen
  • Terlalu tinggi dari ukuran pasar
  • Masalah bentuk produk
  • Adanya kesalahan posisi pemasaran, harga, promosi, atau produknya
  • Tetap memaksa memulai usaha walau market researchnya tidak baik
  • Biaya pengembangan melebihi budget
  • Tanggapan competitive

Dari mana ide  membuat produk datang?
  • Customer
  • Competitor
  • Distributor
  • Supplier
  • Teman kerja

Hal yang perlu diperhatikan dalam menemukan ide baru
  • Ukuran pasar
  • Harga
  • Waktu pengembangan dan biaya
  • Biaya manufaktur
  • Hasil balik modal

Product Development
  • Mengembangkan produk menjadi prototype
  • Perlu bantuan loncatan besar dari investasi
  • Menguji dan menyempurnakan prototipe sampai produk melewati konsumen dan pengawasan hukum.

Comersialisasi
  • Peluncuran luas produk dari hasil tes pasar yang positif.
  • Menentukan waktu peluncuran harus tepat.
  • Memiliki rencana peluncuran yang potensial.

Software Quality Assurance and Software Testing Strategies

Comment on Quality

  • Menyiapkan rencana SQA untuk sebuah proyek.
  • Berpartisipasi dalam pengembangan deskripsi proses software proyek.
  • Review kegiatan software engineering untuk memverifikasi sesuai dengan proses perangkat lunak didefinisikan.
  • Audit produk perangkat lunak untuk memverifikasi apakah sudah sesuai dengan yang didefinisikan sebagai bagian dari proses perangkat lunak.
  • Memastikan bahwa penyimpangan dalam pekerjaan perangkat lunak dan kerja produk didokumentasikan dan ditangani sesuai dengan prosedur terdokumentasi.
  • Mencatat setiap ketidak penyesuaian dan laporan kepada manajemen senior.
SQA Goals
  • Persyaratan kualitas. Kebenaran, kelengkapan, dan konsistensi dari model persyaratan akan memiliki pengaruh yang kuat pada kualitas semua produk.
  • Kualitas desain. Setiap elemen dari model desain harus dinilai oleh tim Software Engineer untuk memastikan bahwa hal itu menunjukkan kualitas tinggi dan desain itu sesuai dengan persyaratan.
  • Kualitas koding. Source code dan produk kerja terkait (misalnya, informasi deskriptif lainnya) harus sesuai dengan standar lokal dan karakteristik pameran yang akan memfasilitasi pemeliharaan.
  • Efektivitas kualitas kontrol. Sebuah tim perangkat lunak harus menerapkan sumber daya yang terbatas dengan cara yang memiliki kemungkinan tertinggi mencapai hasil berkualitas tinggi.

Six Sigma
  • Definisikan requirment customer (tujuan proyek)
  • Menentukan perhitungan kinerja saat ini
  • Analisa kecacatan dan penyebab utamanya
  • Perbaiki masalah dari akarnya
  • Memastikan tidak ada cacat yang sama seperti sebelumnya

Software Realibility adalah ukuran sederhana reabilitas Mean Time Between Failure atau rata - rata kegagalan yang terjadi dalam hitungan waktu (bulan / tahun juga bisa), berikut adalah cara menghitungnya

MTBF = MTTF + MTTR

Software Availability adalah ketersediaan yang harus diberikan oleh software dalam jangka waktu yang ditentukan. Contoh server harus menyala 99,99% selama setahun yang artinya hanya boleh non aktif selama 0,01% dalam waktu setahun karena jika server mati melebihi ketersediaan yang ditentukan perusahaan dapat mengalami kerugian.

Availability = (MTTF/MTBF) * 100%

Software safety adalah kegiatan jaminan kualitas perangkat lunak yang berfokus pada identifikasi dan penilaian potensi bahaya yang dapat mempengaruhi software negatif dan menyebabkan seluruh sistem gagal.

Software Testing adalah proses pengujian program dengan maksud tertentu untuk menemukan kesalahan sebelum diberikan ke end user.

Orang yang melakukan pengetesan awal biasanya developer dan tester yang handal, biasanya developer melakukan test dengan santai karena sudah tau isi program tersebut atau sudah malas karena sudah menyelsaikan programnya. Tester biasanya lebih giat mencari bug yang ada dalam program karena mereka memang dibayar hanya untuk melakukan itu.

Verifikasi adalah melihat apakah cara pembuatan program sudah benar
Validasi adalah melihat apakah hasil dari produk sudah benar

Testing Strategy
  • memulai dengan testing bagian - bagian modul yang kecil kemudian menjadi test keseluruhan (dipakai untuk prosedural)
  • memulai dengan melakukan pengetesan pada class - class yang ada (untuk object oriented)

Strategic Issues
  1. Tentukan requirment produk
  2. Nyatakan tujuan pengujian
  3. Pahami keinginan user
  4. Buat planning
  5. Pakai error handling
  6. Review kembali produk
  7. Buat kasus uji
  8. Kembangkan perbaikan

Macam - macam testing
  • Unit testing biasanya menguji semua modul - modul penting yang ada dalam program
  • Regresion testing melakukan pengujian ulang hal yang telah di tes
  • Smoke testing menguji program atau modul yang telah dibuat pada hari itu juga (bisa juga dilakukan seminggu sekali atau 3hari sekali tidak nunggu program jadi)
  • Integration testing melakukan pengujian antara modul yang saling berhubungan

High Order Testing
  • Validation testing: melakukan test untuk mengetahui apa produk sesuai keinginan customer
  • System testing: melakukan test system keseluruhan
  • Alpha/Beta testing: test alpha dilakukan oleh orang - orang developer, tester atua orang sekitarnya. Test beta telah dilakukan peluncuran program dan end user dapat mencoba program dan memberi komentar jika terjadi kesalahan terhadap program yang digunakan
  • Recovery testing: dilakukan dengan memaksa software untuk gagal
  • Stress testing: test seberapa kuat program menahan user yang banyak
  • Performance testing: test seberapa cepat kinerja program

Cara melakukan Debug

  • Pikirkan - sebelum Anda bertindak untuk memperbaiki
  • Gunakan tools untuk mendapat wawasan baru
  • Jika Anda berada di jalan buntu, dapatkan bantuan dari orang lain
  • Setelah memperbaiki bug, gunakan pengujian regresi untuk mengungkap efeknya

Sabtu, 06 Agustus 2016

Quality Concept and Review Techniques

Quality Concept

Software Quality

  • Quality Design: meliputi persyaratan, spesifikasi, dan desain sistem.
  • Quality of Conformance: adalah masalah utama yang difokuskan pada implementasi.
  • Kepuasan pelanggan: kepuasan pelanggan menandakan kualitas software anda.

Macam - macam pandangan tentang kualitas
  • Transcendental view:  kualitas itu adalah sesuatu yang kita kenali, tetapi tidak dapat secara eksplisit ditentukan.
  • User view: melihat kualitas dari segi tujuan tertentu end user. Jika sebuah produk memenuhi tujuan tersebut, hal itu menunjukkan kualitas.
  • Manufacturer view: mendefinisikan kualitas dalam hal spesifikasi asli dari produk. Jika produk sesuai dengan spec, hal itu menunjukkan kualitas.
  • Product view: menyarankan kualitas yang dapat dikaitkan dengan karakteristik yang melekat (misalnya, fungsi dan fitur) dari produk.
  • Value based view: kualitas ditentukan dari seberapa banyak orang yang membeli product tersebut.

Software Quality Dilemma
  • Jika Anda menghasilkan sistem perangkat lunak yang memiliki kualitas mengerikan, anda kalah saing karena tidak ada yang akan mau membelinya.
  • Jika di sisi lain Anda menghabiskan waktu yang tak terbatas, usaha yang sangat besar, dan uang dalam jumlah besar untuk membangun software yang benar-benar sempurna, maka itu akan begitu lama untuk diselesaikan dan harganya akan sangat mahal hal itu dapat membuat Anda keluar dari bisnis juga.
  • Anda tidak tahu entah Anda melewatkan jendela pasar, atau Anda hanya habis semua sumber daya Anda.

Good Enough Software: memberikan fungsi berkualitas tinggi dan fitur yang sesuai keinginan pengguna, tetapi pada saat yang sama memberikan fungsi dan fitur yang mengandung bug dikenal lebih jelas atau khusus lainnya.

Cost of Quality
  • Prevention cost: kualitas perencanaan, ulasan teknis formal, alat uji, dan pelatihan
  • Internal failure cost: pengerjakan ulang, perbaikan, kesalahan model analisis
  • External failure cost: penyelesaian keluhan, pengembalian produk, help-line support, garansi

Quality and Risk: Orang mempertaruhkan pekerjaan mereka, kenyamanan mereka, keselamatan mereka, hiburan mereka, keputusan mereka, dan sangat hidup mereka pada perangkat lunak komputer. Itu lebih baik menjadi benar.

Quality and Security: keamanan software sangat penting dan benar-benar menentukan kualitas software anda. Anda harus berpikir tentang keamanan, keandalan, ketersediaan, kehandalan-di awal, dalam desain, arsitektur, tes, dan fase coding, sepanjang siklus hidup perangkat lunak [proses]. Karena pelanggan akan merasa lebih nyaman jika dirinya aman.

Review Techniques

Apa itu review?
penilaian teknis dari produk kerja yang diciptakan selama proses Software Engineering.

Apa saja yang kita perhatikan?
  • Error and Defect: error(kesalahan); masalah kualitas yang kita temukan sebelum sampai ke end user dan defect(kecacatan); masalah yang ditemukan pada tahap beta software
  • Perbedaan ini dibuat karena kesalahan dan cacat memiliki ekonomi yang sangat berbeda, bisnis, psikologis, dan dampak manusia.

Informal Review
  • Melakukan pengecekan sederhana dari program yang dikerjakan, bisa dengan rekan kerja atau orang yang mengerti tentang software juga
  • Casual meeting (melibatkan lebih dari 2 orang) untuk tujuan meninjau produk kerja
  • Review orientasi aspek dari pair programming

Formal Technical Review

Tujuan:
  • untuk mengungkap kesalahan dalam fungsi, logika, atau penerapan untuk setiap representasi software
  • untuk memverifikasi bahwa software dikaji memenuhi persyaratan
  • untuk memastikan bahwa software sudah sesuai dengan standar yang telah ditetapkan
  • untuk mencapai perangkat lunak yang dikembangkan secara seragam
  • untuk membuat proyek lebih mudah dikelola
Cara melakukan
  • Review produknya, bukan produsen.
  • Menetapkan agenda dan atur itu.
  • Batasi perdebatan dan bantahan.
  • Mengucapkan area masalah, tapi jangan mencoba untuk memecahkan setiap masalah yang dicatat.
  • Buat catatan tertulis
  • Membatasi jumlah peserta dan menuntut persiapan awal.
  • Checklist setiap produk yang mungkin ditinjau.
  • Mengalokasikan sumber daya dan jadwal waktu untuk pertemuan.
  • Melakukan pelatihan bagi semua pemberi review.
  • Mereview kembali review sebelumnya.

Jumat, 05 Agustus 2016

Design Engineering

Software Architecture
adalah representasi yang memungkinkan seorang software engineer untuk melakukan:

  • menganalisis efektivitas desain dalam memenuhi persyaratan yang dinyatakannya
  • mempertimbangkan alternatif arsitektur pada tahap pembuatan design yang masih relatif mudah untuk diubah
  • mengurangi risiko yang terkait dengan pembangunan perangkat lunak

Tipe - tipe dalam melakukan architecture
  • Data centered: biasa digunakan untuk perbankan, dimana semua data dikelola dalam satu server saja

  • Data Flow Architecture: berbentuk seperti data flow diagram yang menggambarkan jalannya proses data
  • Call and Return Architecture: berbentuk seperti hirarki tree yang posisi teratas adalah root atau akar dari semua proses atau data yang bersangkutan
  • Layered Architecture: penggambaran design architecture dengan menggunakan layer - layer

Architectural Design

  • Software harus ditempatkan dalam konteks: desain harus menentukan entitas eksternal (sistem lain, perangkat, orang) bahwa software berinteraksi dengan semua entitas eksternal
  • Satu set dari archetypes architecture harus diidentifikasi: Archetype merupakan abstraksi (mirip dengan kelas) yang merupakan salah satu unsur perilaku sistem
  • desainer menentukan struktur sistem dengan mendefinisikan dan menghilangkan software komponen yang melaksanakan setiap pola dasar yang tidak perlu

  • Contoh Architectural Context

    Contoh Archetypes


    Component Level Design 
    • OMG Unified Modeling Language Specification [OMG01] mendefinisikan komponen sebagai bagian modular, deployable, dan diganti dari sistem yang melakukan enkapsulasi implementasi dan menampilkan sebuah user interface.
    • OO view: komponen yang berisi gabungan class - class.
    • Conventional view: komponen yang mengandung logika pengolahan, struktur data internal yang diperlukan untuk menerapkan logika pengolahan, dan interface yang memungkinkan komponen yang akan dipanggil dan data yang akan dipanggil melakukan fungsinya.
    Interface Design
    • User model: mengetahui kebiasaan semua end user dalam menggunakan program
    • Design model: merealisasikan design dari user model
    • Mental Design: memperhatikan apakah design akan mempengaruhi mental user
    • Implementation mode: interface yang "dilihat dan dirasakan" ditambah dengan informasi pendukung yang menggambarkan sintaks dan semantik interface


    Design Pattern
    Setiap pola menggambarkan masalah yang terjadi berulang-ulang kali di lingkungan kita dan kemudian menjelaskan inti dari solusi untuk masalah yang sedemikian rupa yang dapat Anda gunakan solusi ini berkali kali tanpa pernah melakukannya dengan cara salah yang sama dua kali.

    Design Process Bisnis

    Pada pertemuan ini akan membahas tetang seputar bisnis lagi baik dari segi trend yang beredar, dari segi bentuk produk dan lainnya. Oke langsung saja contoh.

    Contoh pertama adalah korek cricket bergambar Marilyn Mondroe yang terkenal pada masanya. Cricket saat dulu kebanyakan dipakai oleh kalangan pengusaha dan Marilyn Mondroe adalah salah satu artis cantik yang sangat terkenal pada masanya. Menggunakan gambar artis juga dapat meningkatkan minat pembeli. Sama seperti melakukan endorse jika produk anda dibeli oleh artis yang lagi Top Banget pasti akan banyak juga orang yang meminatinya. Pengalaman wkwkwk...


    Contoh kedua: adalah produk minuman coca cola yang mengganti bentuk botolnya dari masa ke masa. Awalnya botol coca cola cukup besar udah kaya botol sirup namun karena orang lebih suka sesuatu yang simple maka bentuknya diperkecil dengan maksud mudah digenggam dan habis dalam sekali minum. Kebanyakan orang beli coca cola dipinggir jalan juga bukan karena hobi, tapi karena lagi lelah habis jalan jauh enak minum dingin abis udah jalan lagi, atau lagi iseng aja lagi jalan - jalan beli coca cola cepet abis buang sehingga lebih banyak pembeli yang meminatinya. Beda sama anak kosan akir bulan pasti cari yang gede sama promo *pengalaman.

    Bagaimana cara membuat Design yang Bagus?

    • Buat design yang cocok dengan tujuan target anda dan fungsi dari produk
    • Menentukan harga secara efektif
    • Buat produk yang sukses jangan produk gagal dijual
    • Buat produk anda mudah dikenali atau iconic
    • Produk dapat bertahan dalam jangka panjang

    Faktor yang mempengaruhi Performa Design
    • Harga produk
    • Kepuasan pelanggan atau pengguna
    • Designnya dapat dibuat jangan gambaran saja

    Design Process
    1. Brief: mengenali masalah, identifikasi kebutuhan, mengenal situasi
    2. Investigation: research dari topic yang sudah ada, kumpulkan informasi relevan, analisa topicnya, menspesifikan kubutuhan
    3. Ideas: gambarkan ide - ide yang realistis untuk design singkat produk dan persyaratannya
    4. Evaluation: evaluasi ide - ide dari spesifikasi yang ada, identifikasi solusi yang diusulkan
    5. Developing: buat sketsa, pemodelan penyaringan solusi yang diusulkan
    6. Planning: gambar dari mana produk dapat direalisasikan atau diwujudkan, buat daftar bagian, lembar perencanaan untuk realisasi
    7. Manufacture: Buat produknya, evaluasi di lapangan
    8. Revisit the original design: produk selalu bisa berkembang tidak monoton

    Business Model Enviroment

    Pembahasan kali ini tentang bisnis model enviroment jadi anggap aja ini kaya pelajaran kewirausahaan atau ilmu dagang yang baik dan benar, emang ia sih kewirausahaan yaudah kita langsung saja belajar buat bisnisnya.

    Business Model Enviroment



    Berikut saya akan membahas point - point dari bisnis model:
    • Market Forces
    1. Market Issues: Mengidentifikasi kunci dari permasalahan yang ada dan mentrasformasi market dari segi konsumen dan penawaran.
    2. Market Segment: Mengidentifikasi segmen pasar yang besar, yang menggambarkan ketertarikan dan mencari data analisis baru
    3. Needs and Demand: Mengidentifikasi apa yang menjadi kebutuhan target pasar dan apa yang menjadi keinginan target pasar.
    4. Switching Cost: Menentukan harga dengan melihat kompetitor dan lingkungan target pasar
    5. Revenue Attractiveness: Mengidentifikasi hal - hal yang terkait dengan daya tarik pendapatan dan kekuatan harga
    • Industry Forces
    1. Kompetitor: Melihat siapakah yang akan menjadi kompetitor anda, apa keunggulannya dan apa saja kekuatannya
    2. New Entrants: Mengidentifikasi pemain baru di industri yang berusaha memasuki pasar
    3. Subtitute Product and Service: Mencari tahu apakah produk atau jasa yang anda buat dapat digantikan dengan produk lainnya.
    4. Supplier and Other Value Chain Actors: Merupakan salah satu kunci untuk mencari pemain baru yang memasuki industri atau menemukan pesaing
    5. Stakeholder: Kumpulan orang - orang yang harus dikaitkan dalam proses bisnis
    • Key Trends
    1. Technology Trends: Mengidentifikasi teknologi apa yang sedang trend saat ini dan apakah akan menguntungkan atau merugikan bagi produk anda
    2. Regulatory Trends: Menggambarkan aturan yang berlaku didaerah tersebut, apakah aturan tersebut mempengaruhi bisnis anda atau tidak
    3. Societal and Cultural Trends: Melihat dari segi adat dan kebudayaan pada daerah yang akan anda jadikan tempat berbisnis
    4. Socio Economic Trends: Melihat kondisi masyarakat yang akan dijadikan target dari segi ekonomi
    • Macro Economic Forces
    1. Global Market Conditions: Menguraikan kondisi ekonomi saat ini secara keseluruhan
    2. Capital Market: Menggambarkan kondisi pasar modal saat ini karena sangat berpengaruh dengan bisnis yang dijalankan
    3. Comodities and Other Resource: Menandai harga - harga yang ada saat ini dan trend harga untuk kebutuhan sumber daya bisnis model
    4. Economic Infrastructure: Menggambarkan ekonomi infrastruktur di pasar atau market dimana bisnis kita akan beroperasi

    Oke cukup segini aja bahasan tentang Bisnis Modelnya karena sudah mencakup semua materi yang ada digambar tadi dan lebih enak prakteknya dari jualan online kecil - kecilan juga gapapa yang penting dapet duit :D. Thanks...


    Rabu, 03 Agustus 2016

    Requirment Modeling

    Element dari Requirement Analisis

    Scenario based modeling (use case diagram)

    Cara membuatnya adalah
    1. Tentukan judul (yang diatas luar lingkaran) dari Use-case diagram
    2. Tentukan siapa saja yang akan menjadi aktor (yang gambar orang)
    3. Dari scenario yang ada cari kata kerja (dilingkaran) yang berhubungan dengan aktor dan sistem
    4. Kemudia hubungkan aktor dengan kata kerja dengan garis

    Data Flow Diagram

    DFD yang satu ini adalah DFD level 1 yang dipakai untuk menggambarkan aliran data
    Cara membuatnya:
    1. Dari skenario cari aktor external (bukan admin) yang berhubungan dengan sistem
    2. Tentukan kegiatan apa yang akan dilakukan sistem
    3. Tentukan tempat datastore (database)
    4. Lalu buat aliran data (tarik garis) sesuai dengan jalannya skenario
    5. Kemudian tuliskan kegiatan yang dilakukan oleh aktor ke sistem pada garis tersebut

    Data Modeling

    Data Object
    pada umumnya merupakan hasil dari sebuah class

    Contoh Data Object




    Class-based Modeling

    • Object: sesuatu yang akan dimanipulasi oleh sistem
    • Operation: methode yang ada pada object atau fungsi yang akan dijalankan oleh object tersebut
    • Relation: hubungan antara object yang satu dengna object lain
    • Colaboration: kolaborasi yang terjadi antara kelas yang didefinisikan

    Mendifinisakan Atribut: cukup mengetahui apa saja hal yang perlu dimiliki oleh suatu class. Contoh: class mahasiswa membutuhkan NIM, nama, tanggal lahir, dan jurusan sebagai contoh.

    Mendefiniskan Operation: cukup tentukan hal apa saja yang harus dilakukan oleh class tersebut. Operasi ada berbagai macam operasi manipulasi data, perhitungan, control event, dsb.

    CRC: pemodelan [Wir90] menyediakan sarana sederhana untuk mengidentifikasi dan mengorganisir kelas yang relevan dengan sistem atau produk requirment.

    State Diagram


    Squence Diagram


    Understanding Requirment

    Pada materi ini akan menjelaskan detail dari materi sebelumnya

    Engineering Requirment

    • Inception
    1. Identifikasi stakeholder (semua orang yang terkait dalam aplikasi)
    2. Mengenali beberapa sudut pandang pengguna
    3. Bekerja dengan berkolaborasi antara user dan developer
    4. Menentukan pertanyaan - pertanyaan yang berhubungan dengan proyek
    • Eliciting Requirment
    1. Melakukan pertemuan yang dihadiri oleh developer dan client
    2. Aturan untuk melakukan persiapan dan partisipasi ditetapkan
    3. Membuat agenda
    4. Fasilitator (client, pembuat, atau orang luar) mengatur jalannya pertemuan
    5. Definition mechanism (work sheets, flip charts, or wall stickers or an electronic bulletin board, chat room or virtual forum) digunakan
    6. Mendapat tujuan akir (identifikasi masalah, elemen2 pemecahan masalah, negosiasi, spesifikasi awalan - awalan dari solusi yang dibutuhkan)
    • Element Analysis Model
    1. Scenario based elements: biasa digambarkan dengan use case diagram yang difungsikan menggambarkan interaksi antara user dengan sistem
    2. Class based elements: digambarkan dengan class diagram yang berfungsi menunjukan class - class yang ada pada program beserta attribute dan methodenya
    3. Behavioral elements: digambarkan dengan state diagram, yang digunakan untuk menunjukan status atau kondisi dari program setelah melakukan aksi, saat melakukan proses, atau sebelum melakukan aksi
    4. Flow oriented elements: digambarkan dengan data flow diagram, menggambarkan alur jalannya sistem
    Contoh Class Diagram


    Contoh State Diagram

    Contoh Use Case Diagram


    Negotiation Requirment
    • Indentifikasi kunci permasalahan dari stakeholder
    • Menentukan masing - masing penanggung jawab yang berkepentingan
    • Pastikan mendapat Win Win Solution agar client dan developer sesama senang

    Design Concept and Engineering

    Design Concept

    Good Software Design

    • Firmness: sebuah program tidak boleh memiliki bug yang terlalu banyak dan fatal, serta semua fugnsi harus berjalan sesuai fungsinya.
    • Commodity: sebuah program harus memiliki fungsi sesuai tujuan yang dimaksudkan
    • Delight: pengalaman menggunakan program harus menyenangkan usernya

    Design and Quality
    • Design harus bisa mengimplementasikan semua requirment yang explisit
    • Design harus dapat dimengerti baik oleh orang yang akan melakukan pemrograman atau testing
    • Design harus memberi gambaran lengkap tentang softwarenya

    Software Architecture
    • Analisa kefektifan dari design yang dibuat
    • Mempertimbangkan arsitektur alternativ
    • Mengurangi resiko kegagalan software

    Interface Design (8 golden rules)
    1. Design harus konsisten, seperti font pada content tidak boleh beda jenis dan ukuran pada kalimatnya
    2. Memberikan respon yang informatif untuk user
    3. Memungkinkan user untuk memakai shortcut
    4. Memberi dialog untuk penutupan
    5. Memberikan error handling saat terjadi kesalahan
    6. Dapat kembali ke halaman sebelumnya dengan mudah
    7. User memiliki kontrol penuh atas program
    8. Tidak memakan banyak memory

    MVC Architecture
    • Model ini berisi semua spesifik aplikasi dan pengolahan logika, termasuk

    1. semua benda konten
    2. akses ke sumber data / informasi eksternal,
    3. semua fungsi pemrosesan aplikasi yang spesifik
    • Tampilan berisi semua spesifik fungsi dan kemungkinan dari interface
    1. penyajian konten dan pengolahan logika
    2. akses ke sumber data / informasi eksternal,
    3. semua fungsi proses yang dibutuhkan oleh pengguna akhir.
    • Kontroler mengatur akses ke model dan tampilan dan mengkoordinasikan aliran data antar model dan tampilan.

    Contoh MVC Architecture


    Navigation Semantic Unit (NSU)
    • Ways of Navigation (WoN) : menampilkan cara terbaik untuk melakukan navigasi or  jalan untuk pengguna dengan profil tertentu untuk mencapai tujuan yang diinginkan atau tujuan kedua mereka. Node Navigation (NN) dihubungkan dengan Link Navigation


    Contoh gambar NSU


    Navigation Syntax
    • Individual Navigation Link: berbentuk text link, gambar dengan link dan tombol.
    • Horizontal Navigation Bar: sebuah navigasi bar yang bisa berisi konten dengan link atau seperti menu dalam website.
    • Vertical Navigation Coloumn: sama seperti horizontal navigation bar hanya saja berbentuk vertical.
    • Tabs: memiliki fungsi yang tidak lebih dari variasi navigasi bar, yang mewakili kategori konten atau fungsi dalam bentuk tab.
    • Site Maps: menggambarkan semua tab termasuk isi untuk navigasi, isi semua objek dan fungsi yang terdapat dalam Web App.

    Selasa, 02 Agustus 2016

    Requirment Engineering and Modeling

    Requirment Engineering meliputi hal - hal berikut

    • Inception: memberi pertanyaan - pertanyaan kepada client
    1. Program apa yang akan dibuat
    2. Apa saja fitur yang diperlukan
    3. Kolaborasi antara customer dan developer dalam pembuatan program
    • Elicitation: kumpulkan orang yang bersangkutan dalam memenuhi requirment
    • Elaboration: analisis modelnya, identifikasi data, fungsi dan behavior
    • Negosiasi: melakukan negosiasi requirment dan harga
    • Spesifikasi membuat dokumentasi, membuat gambar atau demo, rumus matematik formal, prototype, use case
    • Validasi: mencegah terjadinya salah paham, mencari informasi yang belum lengkap, mengurangi kemungkinan kesalahan
    • Memanajemen requirment yang ada

    Elemen dari analisis model
    • Scenario based elements: use case diagram dan membuat fungsi dari narative software
    • Class based elements: class diagram
    • Behavioral elements: state diagram
    • Flow-oriented elements: Data flow diagram

    Analisys Pattern
    • Pattern Name: mendeskripsikan inti sari dari pola yang digunakan
    • Intent: menjelaskan pola apa digunakan atau mewakili
    • Motivation: sebuah skenario yang menggambarkan bagaimana pola dapat digunakan untuk mengatasi masalah
    • Force and Context: sebuah deskripsi masalah eksternal yang dapat mempengaruhi bagaimana pola yang digunakan dan juga isu-isu eksternal yang akan diselesaikan ketika pola diterapkan
    • Solution: sebuah deskripsi tentang bagaimana cara memakai pola yang diterapkan untuk memecahkan masalah dengan penekanan pada isu-isu struktural dan kebiasaan yang terjadi
    • Consquences: akitbat apa yang terjadi ketika pola diterapkan 
    • Design: membuat pola design menggunakan atau bisa menggabungkannya dengan yang pola yang sudah ada sebelumnya
    • Known uses: contoh penggunaan dalam sistem yang sebenarnya
    • Related pattern

    Requirment Modeling for WebApps
    • Content Analysis: menentukan layout website
    • Interaction Analysis: melihat cara user berinteraksi dengan web
    • Functional Analysis: fungsi yang dijalankan dalam web harus sesuai aksinya
    • Configuration Analysis: berjalan sesuai dengan device dan web browser yang digunakan


    Customer Insight dan Market Analisys

    Apaitu Riset Pasar?
    Riset pasar mengacu pada penggunaan informasi untuk mengidentifikasi dan menentukan peluang pasar dan masalah.

    Kegunaan Riset Pasar

    • Untuk mendapatkan informasi penting yang berhubungan dengan ide bisnis
    • Dengan adanya riset pasar berfungsi untuk menemukan sesuatu yang baru
    • Dengan adanya riset pasar juga dapat membantu bisnis tetap bertahan dan berkembang

    Hal yang dituju Riset Pasar
    • Market
    1. Mencari informasi customer yang dituju dan customer profile.
    2. Product atau jasa yang cocok dengan target pasar
    3. Harga yang tepat untuk produk tersebut
    4. Mencari distributor yang tepat
    • Industry
    1. Mencari supplier yang tepat
    2. Mencari tahu apakah product yang dibuat dapat digantikan oleh product pesaing
    3. Mengincar pembeli yang penting atau membeli secara besar
    4. Mengenali pendatang baru yang memulai usaha
    • Macro Enviroment
    1. Mengetahui adat istiadat di lingkungan target pasar
    2. Keadaan politik di lingkungan target
    3. Faktor ekonomi di lingkungan target
    4. Kemajuan teknologi di lingkungan target


    Pengenalan Software Engineering (RPL)

    Pertemuan 2

    FAQ Tentang Software Engineering

    Apa itu software?
    Software adalah program komputer yang dibuat dengan bahasa pemrograman, yang memiliki dokumentasi terkait dengan requirment, model design, dan user manual. Software juga dapat dibuat untuk pelanggan tertentu yang biasanya disebut bespoke (custom) dan untuk pengguna umum (generic). Software baru dapat dibuat dengan mengembangkan program-program baru, konfigurasi sistem perangkat lunak generik atau menggunakan kembali perangkat lunak yang ada.

    Apa itu software engineering?
    Sonftware Engineering adalah semua aspek yang berhubungan dengan pembuatan suatu software, dalam kata lain adalah proses pembuatan software baik itu tahap planning, design, coding atau kegiatan lainnya yang berhubungan dengan pembuatan software.
    Pekerjaan ini biasa dilakukan oleh Software Engineer orang yang melakukan pendekatan sistematis dan melakukan organisir kegiatan, serta menentukan tools dan proses model seperti apa yang akan dipakai untuk mengerjakan software.

    Perbedaan antara Software Engineering dan Computer Science
    Computer Science adalah ilmu yang lebih berfokus pada pembuatan program, yang lebih mendalami tentang algoritma baik dalam pembuatan software atau dalam pembuatan hardware.
    Software Engineering adalah ilmu yang berfokus dalam melakukan proses pembuatan model, tahap pengembangan dan melakukan analisa sistem seperti yang dijelaskan diatas. Pekerjaan ini bisa dibilang juga project manager atau sistem analis sedangkan computer science adalah programmer.

    Apa itu System Engineering?
    System Engineering berkaitan dengan semua aspek pengembangan sistem berbasis komputer termasuk hardware, software dan prosess engineering. System Engineering merupakan bagian dari proses yang bersangkutan dengan mengembangkan infrastruktur software, kontrol, aplikasi dan database dalam sistem. Pekerjaan ini lebih condong ke arah sistem analis.

    Apa itu Software Process?
    Suatu kegiatan yang tujuannya adalah pengembangan atau evolusi software.

    Apa itu Software Process Model?
    Sebuah process model yang digunakan untuk melakukan pengembangan software, pengembangan dapat dilakukan dengan mengganti process modelnya atau menganalisa kembali process modelnya.
    Contoh generic process model: waterfall model, iterativ development.

    Apa itu Computer Aided Software Engineering (CASE)?
    Sistem Software yang dimaksudkan untuk memberikan dukungan secara otomatis untuk kegiatan proses software.
    Upper CASE: tahap analisa dan design
    Lower CASE: tahap programming dan testing

    Attribute dari Software yang bagus
    Maintainable  : dapat diperbaiki
    Dependability: mengeluarkan output yang konsisten dan tepat
    Efisien            : program melakukan langkah yang tecepat
    Acceptability : program dapat diterima client

    Tantangan yang akan dihadapi oleh Software Engineer
    Heterogencity : program harus dapat berkomunikasi dengan operasi sistem lain
    Delivery         : membuat software dengan cepat
    Trust               : software harus dapat dipercaya oleh user


    Senin, 01 Agustus 2016

    Process Models and Agile Development

    Apa itu Process Model?
    Salah satu tehnik yang digunakan untuk melakukan pembuatan sistem software

    Process Pattern
    adalah pola yang dipakai untuk menyelesaikan suatu masalah dalam pengerjaan pembuatan software

    Jenis - Jenis Process Pattern

    • Stage Patterns : mendefinisikan masalah terkait dengan framework activity untuk prosesnya.
    • Task Patterns  : mendefinisikan masalah terkait dengan tindakan software engineering atau tugas kerja dan relevan dengan hasil software engineering yang sudah sukses.
    • Phase Patterns: menentukan urutan framework activity yang terjadi dengan proses.

    Contoh - Contoh Process Model:
    • Waterfall Model
    • V-Model


    • Incremental Model


    • Prototyping


    • Spiral Model


    • Concurrent Model




    Personal Software Process
    • Planning (Identifikasi masalah yang ada)
    • High-level Design (Prototyping)
    • High-level Design Review (Review design kembali)
    • Development (Code Generationg, Review Product, Testing)
    • Postmortem (Maintaince dan Pembaruan Product)

    Agile Development

    Apa itu "Agility"?
    • Efektif (cepat dan adaptif) menanggapi perubahan
    • Efektif berkomunikasi dengan semua orang yang terkait dalam pembuatan product (stakeholder)
    • Menganggap customer sebagai bagian dari team
    • Mengorganisasikan tim untuk melakukan pekerjaan yang dilakukan
    • Cepat dalam pembuatan software

    EXtreme Programming (XP)
    • XP Planning: menentukan kebutuhan customer, menentukan harga, pengelompokan pengerjaan kebutuhan customer, menentukan tanggal pertemuan selanjutnya dengan customer, menentukan penyelesaian atau pertemuan selanjutnya dengan customer.
    • XP Design  : memakai KIS (keep it simple) principle, membuat CRC card, buat prototype, melakukan perbaikan design program internal.
    • XP Coding : ,erekomendasikan pembangunan tes unit sebelum coding, melakukan pair programming.
    • XP Testing : melakukan pengetesan oleh customer dan oleh pembuat.

    Cara kerja Extreme Programming

    Scrum
    • Develop pekerjaan dibagi dalam beberapa paket
    • Program paket diuji dan dokumentasi dibuat sambil berjalannya pembuatan software
    • Jangka waktu pengerjaan pendek biasanya dibuat dengan "sprint" and "backlog"
    • Jarang bertemu dengan client
    • Harus memiliki demo program untuk customer

    Agile Modeling
    • Model dibuat dengan tujuan tertentu
    • Menggunakan beberapa model
    • Berjalan dengan ringan
    • Isi dari program atau datanya yang terpenting
    • Mengetahui model dan tools yang harus digunakan untuk membuatnya
    • Dapat mudah diadaptasikan di platform


    Pengenalan Software Engineering (RPL)

    Pertemuan I

    Dipertemuan pertama ini adalah pertama kalinya saya mengulang pelajaran demi mengejar skripsi dan lulus tepat waktu. Pertemuan ini akan membahas tentang apa itu Software Engineering yang melatih kita menjadi Project Manager bukan hanya sebagai Programmer saja. berikut teori - teorinya


    Apa itu Software?

    Software memiliki 3 bagian:

    • Instruction: instruksi pada komputer software yang ketika dijalankan menyediakan fitur sesuai keinginan atau sesuai dengan aksinya, fungsi, serta performance dari suatu software tersebut.
    • Data Structures: digunakan program untuk memanipulasi data atau informasi pada suatu program terkait
    • Dokumentasi: catatan yang menjelaskan tentang penggunaan program dan cara operasi program. Dokumentasi sangat penting agar ketika program yang kita buat pindah tangan maka dari dokumentasi tersebut orang lain akan mengerti bagaimana jalannya program kita.

    Karakteristik Software

    • Developed or Engineered yaitu software dikembangkan atau dibuat secara rekayasa tidak seperti produk pabrik yang menjadi benda nyata.
    • Tidak habis: Software merupakan produk yang tidak nyata sehingga tidak akan habis walau berapa orangpun yang menggunakannya, namun tetap software harus dapat berkembang.
    • Custom-built maksudnya software harus bisa menerima custom-built atau dipesan secara khusus untuk suatu perusahaan.

    Software Application

    • System Software: software yang digunakan untuk membantu aplikasi lain. Contoh: Operasi Sistem, tanpa adanya OS aplikasi lain tidak dapat berjalan.
    • Aplication Software: software yang digunakan untuk membantu bisnis. Contoh: Network Management Software dapat membantu dalam bidang bisnis dengan melihat biaya apa saja yang dikeluarkan untuk hardware dan jaringan.
    • Engineering Software: software untuk melakukan proses simulasi. Contoh: simulasi pembuatan mobil.
    • Embeded Software: software yang sudah ditanamkan pada hardware. Contoh: program pada mesin cuci.
    • Product Line: sotfware yang biasa kita gunakan sehari - hari. Contoh: Microsoft Office.
    • WebApps: software yang berbasis web dan berjalan pada web browser.
    • AI Software: software yang memiliki kecerdasan buatan, biasa game sekarang sudah banyak yang memakai AI seperti catur atau game RPG dota.

    Karakteristik WebApps

    • Network Intensiveness: sebuah website harus berada pada jaringan dapat diakses dari mana saja, OS apa saja, dan web browser apa saja oleh clientnya.
    • Concurrency: dapat diakses banyak user secara bersamaan.
    • Unpredictable load: traffic website bisa saja ramai sewaktu - waktu dan hal ini harus dapat ditangani
    • Performance: memiliki kinerja yang bagus.
    • Availability: selalu tersedia untuk para penggunanya.
    • Data driven: dapat menyajikan data atau informasi kepada para penggunanya.
    • Content Sensitive: kualitas dan estetika sifat konten merupakan penentu penting dari kualitas WebApp.
    • Continuous Evolution: dapat berevolusi atau terupdate secara terus menerus.
    • Immediacy: WebApps merupakan bentuk pemasaran yang sangat cepat karena terhubung ke banyak orang.
    • Security: WebApps harus memiliki security yang kuat karena diakses oleh banyak orang. Jika perlu diadakannya pembatasan jumlah user yang masuk agar server tidak down.
    • Aesthetic: isi dan respon yang diberikan oleh WebApps haruslah menarik, bagus, sopan dan tidak menjatuhkan usernya.

    Software Process

    Framework Activity
    • Communication: membicarakan program yang akan dibuat
    • Planning: membuat perencanaan dalam membuatnya
    • Modeling:
    1. Analisys Requirment: menganalisa kebutuhan program
    2. Modeling: tahap pembuatan proses model.

    • Construction:
    1. Code Generation: melakukan coding.
    2. Testing: tahap testing alpha test dan beta test.

    • Deployment: memasarkan produk atau memberikan produk pada pihak yang bersangkutan 

    Umbrella Activities
    • Software Project Menagement
    • Formal Technical Review (Review hasil analisa) 
    • Software Quality Assurance (memberi jaminan atau asuransi)
    • Software Configuration Management (tempat menyimpan semua kebutuhan software)
    • Work Product Preparation and Production (melakukan persiapan dan produksi software)
    • Reuseability Management (dapat dipakai ulang)
    • Measurement (adanya pengukuran)
    • Risk Management (dapat mengatasi resiko dalam software)

    Hooker's General Principle
    1. 1. The Reason It All Exists
    2. 2. KISS (Keep It Simple, Stupid!)
    3. 3. Maintain the Vision
    4. 4. What You Produce, Others Will Consume 
    5. 5. Be Open to the Future  
    6. 6. Plan Ahead for Reuse
    7. 7. Think!