Software Architecture Attribute Checklist

  • یوسف مهرداد

After using RUP templates for software architecture specification for few years, we at Eurocenter have decided to build our own set of templates for Software Architecture and for Software Design specifications. The new templates needed to provide enough meta-information to the author for better analyze the system as well as not to miss any important design aspect.

we use 4 types of design documentations:
۱-‘Architecture Overview Document’ which presents the very abstract view of our recommended architecture to solve the customer problem as well as several alternative architectures with merits/demerits.

۲-‘Software Architecture Specification’
, describing the meta-structure of all software structures. Our approach in this document is based on 4+1 views described by Philippe Kruchten.
۳-we perform a detail design analysis based on UML notations to bridge the gap between system architecture and implementation. We call this document the ‘Software Design Specification’.

۴-‘Developer Guideline Documentation’ which serves the purpose of documenting miscellaneous guidelines for the developers. This section may include some best practices, version controlling guide lines, project specific knowledge base, etc.

Let’s have a look at the key attributes in developing a software architecture specification. You may use the following as a checklist to verify that you do not miss any important architectural aspect. Basically these are related with the non-functional goals of your architecture. Perfect system architecture may describe the expected level and realization strategy for each of the following attributes:

  • Performance

    • Response time
    • Throughput
    • Scalability (supporting increasing loads – load balancing)
  • Operational
    • Availability
    • Manageability (How to manage executing components like Caches)
    • Upgradeability
    • Reliability
    • Recoverability (Fault Tolerance)
    • Flexibility (Ability to support multiple configurations, workflows, etc)
    • Transparency (Hide the complexities)
    • Distribution, Concurrency and Conflict resolution
    • Integration (Connectivity to other systems)
    • Resources (Constraints and requirements)
    • System configurations
    • Offline Operations
    • Stability, Consistency and Accuracy
  • Maintainability
    • Portability
    • Complexity
    • Understandability
    • Duplication
    • Fragility (possibility of breaking the system due to a change)
    • Extensibility
    • Debugging
  • Security
    • Integrity
    • Authentication
    • Authorization
    • Safety (System may not cause the Monitor to explode)
    • Secrecy
    • Accountability (who did what and when)
    • Verifications and Validations
  • Other
    • Internationalization
    • Configurations
    • Testability (No entity beans, lets use Hibernate)
    • Usability (effective HCI)
  • Reference: Hasith Yaggahavita’s Blog

    در عالم دو چیز از همه زیباتر است: آسمانی پرستاره و وجدانی آسوده. کانت
    یوسف مهرداد

    یوسف مهرداد

    کانال تلگرام

    نظرات (2)

    • شاگرد همیشه در صحنه

      ۴ اسفند ۱۳۸۷ در ۰۰:۰۰

      استاد ما که از این چیزی که گفته بودید چیزی نفهمیدیم ولی خدایی بخش گزیده خیلی حال داد وقتی تصورش کردم

      آسمونش نداریم فعلا ولی شاید بتونیم وجدانش را پیدا کنیم 😛

    • مهرداد

      ۶ اسفند ۱۳۸۷ در ۰۰:۰۰

      شاگرد همیشه در صحنه،‌ آقا مهدی

      وجدان آسوده را که دارید، آسمان پرستاره هم خواهی دید فقط کافی است «گاهی به آسمان نگاه کنی»

      آرزوی پیروزی 😛


    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    برای خروج از جستجو کلید ESC را بفشارید