thursday'snotes
this site the web

Software Architecture (introduction)

Apa itu software architecture?
Software application architecture  adalah proses menentukan  sebuah solusi terstuktur yang memenuhi seluruh teknikal dan operasional kebutuhan, ketika mengoptimasi common quality attributes seperti performance, security, dan manageability.  Juga termasuk sekumpulan keputusan berdasarkan  faktor luas,dan setiap keputusannya dapat dipertimbangkan dampaknya pada kualitas, performance, maintainability, dan keseluruhan kesuksesan dari sebuah aplikasi .

Kenapa Architecture itu penting?
Modern tools dan platform dapat membantu menyederhanakan  pembangunan  aplikasi, tetapi tidak akan pernah menggantikan  kebutuhan desain  dari aplikasi, berdasarkan  spesifikasi scenario yang telah ditentukan dan kebutuhan.
Architecture  berfokus pada bagaimana elemen utama  dan komponen dalam sebuah aplikasi digunakan satu sama lain atau saling berinteraksi. Pemilihan struktur data dan algoritma atau  implementasi  detil dari masing-masing component juga bahan pertimbangan .

Pertimbangan –pertimbangan utama dalam software architecture adalah :
  1. ·        Bagaimana user menggunakan aplikasi?
  2. ·        Bagaimana aplikasi di –deploy ke production dan di- manage?
  3. ·        Apa saja quality attribute requirements untuk aplikasi, seperti security, performance, concurrency, internationalization, dan configuration?
  4. ·        Bagaimana aplikasi didesain agar fleksible dan dapat di-maintain sepanjang waktu
  5. ·        Architectural trend apa yang berdampak aplikasi anda sekarang  dan nanti ketika di-deploy?

Tujuan dari Architecture:
  1. ·        Menjelaskan struktur dari system tetapi menyembunyikan details implementasi.
  2. ·        Mewujudkan semua  use cases and scenarios.
  3. ·        Mengalamatkan  requirements dari berbagai stakeholders.
  4. ·        Meng-handle baik functional dan quality requirements.

Software Testing (Part 2: Life Cycles)

* verification : mengecek bahwa produk memenuhi requirement dan didevelop dengan tepat.
* Validation : mengarahkan fokus evaluasi produk ke arah  evaluasi kebutuhan user sehingga dipastikan behavior dari produk memenuhi  kebutuhan customer.

Software development model:
  1. Waterfall model : menunjukan langkah-langkah dalam urutan dimana kebutuhan  customer secara progresif diperbaiki.Setiap aktivitas di selesaikan sebelum pindah ke langkah selanjutnya. Pada model ini, test dilakukan setelah code di di-develop dan setelah selesai dibuatkan keputusan untuk merilisnya.
  2. V model :seperti  waterfall model tetapi disebelah kiri difokuskan dan berelaborasi dengan requirement awal  untuk menyediakan detil teknikal sebagai progress development. 
  • Require specification di tes untuk mendapatkan acceptance test stage
  • Functional specification di tes untuk mendapatkan system testing stage
  • Technical specification di tes untuk mendapatkan integration testing stage 
  • Program specification di tes untuk mendapatkan unit testing stage 
  1. iterative development models : model dimana require tidak perlu dipenuhi secara lengkap untuk memulai coding.

Test levels

*Karakteristik testing yang baik dalam  development live cycle:
  1. Early test design: tes planning dimulai dengan spesifikasi dokumen
  2. Each work product is tested: setiap dokumen yang tersisa di tes dengan sebuah aktivitas (test basis)
  3. Tester  : tester dilibatkan dalam mereview  requirement sebelum dirilis
Level Tes:
  • Unit Test: Dilakukan oleh developer yang menulis koding (sekaligus yang menulis program specification)
  • Integration Test: menemukan defect di interface dan interaksi diantara intergrasi komponen atau sistem.
  •  System Testing: untuk mengkoreksi ketidakseimbangan dengan memfokuskan behavior dari keseluruhan sistem dalam representasi live environment. Berikut adalah non functional requirement yang perlu diperhatikan:
  1. Installability: prosedur instalasi
  2. Interoperability: operasi aplikasi di lingkungan yang berbeda
  3. Maintainbility :  kemampuan untuk perubahan
  4. Performance: behavior normal yang diharapkan
  5. Load handling: behavior sistem ketika overloading
  6. Stress handling : behavior sistem saat kapasitas mencapai batas
  7. Portability : digunakan dalam operating sistem berbeda
  8. Recovery: prosedur recovery  ketika mengalami failure
  9. Reliability : kemampuan software untuk menunjukan performanya ketika 
  • Acceptance Testing: menyediakan kepercayaan bagi user bahwa program akan berjalan dengan baik 
 

Disclaimer

I do not claim any of these images as my own unless otherwise stated

The views and opinions expressed on this blog are 100% mine. If I claim or appear to be an expert on a certain topic or product or service area, I will only endorse products or services that I believe, based on my expertise, are worthy of such endorsement. Any product claim, statistic, quote or other representation about a product or service should be verified with the manufacturer or provide

About Thursday's Notes

This blog is a personal blog written and edited by me, and does not reflect the views of either employers and/or clients. This blog does not accept any form of cash advertising, sponsorship, or paid topic insertions.