Pertanyaan besar seorang software engineer saat hendak membangun perangkat lunak adalah apa yang dimaksud dengan arsitektur desain perangkat lunak.
Pressman summary menuliskan bahwa ...
Architectural
design represents the structure of the data and program components
required to build a computer-based system. A number of architectural
"styles" exist. Architectural design begins with data
design and proceeds to the derivation of one or more representations
of the architectural structure of the system. The resulting
architectural model encompasses both the data architecture and the
program structure. Alternative architectural patterns are analyzed to
determine the structure that is best suited to the customer’s
requirements. The architectural model is subjected to software
quality review like all other design work products.
Mari kita lihat pengertian yang dikemukan oleh Software Engineering Institute (SEI Carnegie Mellon) yang saya kutip disini (http://blog.sei.cmu.edu/post.cfm/reflection-on-20-years-of-software-architecture-a-presentation-by-linda-northrop) ...
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Architecture is concerned with the public side of interfaces; private details of elements—details having to do solely with internal implementation—are not architectural. This work constituted the beginning of a cohesive body of SEI research and transition efforts focused on software architecture.
Dari pengertian diatas, maka kita dapat menyimpulkan bahwa arsitektur sistem aplikasi itu adalah terkait dengan "struktur" (atau bagian dalam, bisa disebut sebagai unsur pembangun/pembentuk) dari sistem perangkat lunak yang akan dikembangkan. Pengertian yang lebih praktis dari arsitektur desain perangkat lunak dapat dipahami dengan menganalogikan perangkat lunak dengan bangunan rumah atau gedung bertingkat. Seperti biasanya seorang insinyur, sebelum membangun rumah atau gedung bertingkat, maka insinyur akan membangun rumah atau bangunan tersebut diatas kertas, lengkap dengan semua perhitungan yang terkait proses penyelesaian rumah atau bangunan tersebut. Inilah yang dimaksud dengan arsitektur desain perangkat lunak.
Dibawah ini, saya berikan sebuah gambar arsitektur SOA (service oriented architecture)
Melakukan architectural design bermanfaat dalam berkomunikasi dengan stakeholder terkait hal-hal teknis yang terkait aplikasi yang akan dikembangkan. Selain itu, architectural design akan memandu tim pengembang untuk mulai membangun aplikasi.
Dokumentasi kegiatan Architectural Design biasanya disebut SAD (atau Software Architecture Document). Template dokumen SAD biasanya mengikuti standar format dokumentasi yang dikeluarkan IEEE.