مبانی معماری نرمافزار
این دوره چه مباحثی را پوشش میدهد؟
در طول زمان، تعاریف متفاوتی برای «معماری نرمافزار» ارائه شده است. در این بخش از کلاس، به ارائه تعاریف و نگاههای متفاوت در مورد «معماری نرمافزار» میپردازیم، تغییرات آنها را در طول زمان بررسی میکنیم و نهایتاً سعی میکنیم، تعریفی جامع، دقیق و شفاف از معماری نرمافزار ارائه کنیم. سپس به بررسی نقش، کارکرد، ابعاد و حوزههای تاثیر معماری نرمافزار میپردازیم.
- واژه معماری در Context های مختلف
- معماری نرمافزار (Software Architecture) چیست؟
- تعریف ماهیت، نقش و کارکرد «معماری نرمافزار» و تغییرات آن در طول زمان در جامعه
- تفاوت و ارتباط «طراحی» و «معماری» نرمافزار
- نقش، کارکرد و اهمیت معماری نرمافزار
- ابعاد، اجزا و مشخصههای معماری نرمافزار
- بررسی حوزههای تاثیر معماری نرمافزار (فنی، سازمانی/انسانی/تیمی، محصول/کسبوکار/تجارت)
گام اول در یادگیری اصول معماری، درک عمیق نقش، اهمیت و کارکرد معماری است. در این بخش از کلاس، به بررسی نقش و اهمیت معماری نرمافزار، تاثیر آن بر حوزههای دیگر، و عوامل موثر بر آن میپردازیم.
معمار، با در نظر گرفتن تمام فاکتورهای موجود (اعم از تیم، پروژه، تکنولوژی، مارکت و ...) Business Driver ها را درک میکند و آنها را تبدیل به دغدغههای معماری میکند. این کار بدون مجهز بودن به تفکر معماری (Architectural Thinking) و بعد از آن دانستن اصول و مفاهیم Architectural Design، میسر نیست. این بخش از کلاس، به Architectural Design میپردازد. آن را تعریف میکند و ابعاد، اصول و حوزههای مختلف آن را بررسی میکند.
- مفهوم، نقش و جایگاه Architectural Design
- مفهوم Architectural Thinking و ابعاد متفاوت آن
- درک مفهوم Trade-off
- مطالعه اصول طراحی (مانند Modularization، Abstraction و ...)
- آشنایی با متدهای طراحی مختلف در معماری نرمافزار (مانند ADD و ...)
«آیا نرمافزاری که با این تصمیمات معماری توسعه داده شود، به اهداف کسبوکار میرسد؟» این سوال شاید کلیدیترین و اساسیترین سوالی باشد که یک معمار نرمافزار باید از خود بپرسد. در پاسخ به این سوال، معمار باید بتواند تصمیمات معماری را از زوایا و ابعاد مختلف، تحلیل، بررسی، نقد و ارزیابی کند. Trade-Off های تصمیمات را به دقت تحلیل کند و تاثیرات تصمیمات را جمعآوری و مطالعه کند. در این بخش از کلاس، به این موضوع میپردازیم که چطور میتوان معماری را (در تمام ابعاد) تحلیل، نقد و ارزیابی کرد تا بتوان حجم تصمیمات اشتباه را کاهش داد و یا از وقوع مشکلات و یا حادتر شدن مشکلات جلوگیری کرد.
- تحلیل، بررسی و ارزیابی بر اساس مشخصههای کیفی
- تحلیل، بازبینی و ارزیابی مستمر معماری در طول عمر پروژه
معماری نرمافزار، فعالیتی محدود به یک بخش خاصی از پروژه نیست، معماری نرمافزار از شروع تا پایان پروژه ادامه دارد. علیالخصوص در سالهای اخیر و با پررنگتر شدن مباحثی مثل Continuous Architecture، بکارگیری سیستماتیک معماری، جهت افزایش سرعت و کیفیت تولید و انتشار نرمافزار بسیار فراگیرتر از قبل شده است. در این بخش از کلاس، نقش معماری در چرخه تولید نرمافزار را بررسی میکنیم.
- Architectural Design در چرخه توسعه نرمافزار
- نقش، کاربرد و کارکرد تحلیل (Analyze) در معماری نرمافزار
- تکنیکهای تحلیل در معماری نرمافزار
- تعریف، اعمال و بازبینی Constraint ها در سطوح مختلف طراحی
- مستندسازی و انتقال دانش معماری
- فرآیند ارزیابی معماری نرمافزار
- آشنایی با Continuous Architecture و اصول آن
- نگاه Evolutionary Architecture
معماری نرمافزار در ابعاد مختلفی ارزیابی میشود، که یکی از مهمترین این ابعاد، بُعد کیفیت و ویژگیهای معماری نرمافزار است. عوامل زیادی در کیفیت معماری تاثیر دارند و تقریباً هر تصمیم کلانی از سمت معمار، این مشخصهها را تحت تاثیر قرار میدهد. این مشخصههای کیفی همانند Functionality و کارکرد صحیح، در آینده نرمافزار تاثیرگذار هستند و این تاثیر میتواند در ابعاد متفاوت باشد.
- تعریف کیفیت و مشخصههای کیفی
- بررسی اجمالی و طبقهبندی مشخصههای کیفی
- تعریف Fitness Function و ارتباط آن با ویژگیهای کیفی
- ابعاد مختلف Fitness Function ها و تعریف Systemwide Fitness Function
- بررسی برخی نمونههای رایج Fitness Function ها
- مطالعه طبقهبندی انواع Fitness Function
- اصول Fitness Function ها (Identify Early, Review Frequently, ...)
- مسائل اساسی حوزه ویژگیهای کیفی (نحوه تست/اندازهگیری، ارتباط با مشکلات، تاثیر بر یکدیگر، پارادایمهای متفاوت)
- مفهوم Quality Attribute Scenarios و اجزای آن
- راههای رسیدن به مشخصههای کیفی (Patterns, Tactics, ...)
- برای هر مشخصه کیفی: بررسی الگوها، تاکتیکها، سناریوها و Trade-off های مرتبط
معمار نرمافزار نقش کلیدی در تیم ایفا میکند. با تغییر اقتصاد دیجیتال، قوانین کسبوکار و تجارت برای بسیاری از شرکتهای سنتی تغییر کرده و نقش معماران نیز به طور اساسی دستخوش تغییر شده است. در این بخش از کلاس، به نقش، وظایف و حوزههای خلق ارزش معمار میپردازیم.
- تعریف نقش معمار نرمافزار
- تعاریف نگاههای مختلف در طول زمان به نقش معمار
- حوزههای وظایف معمار نرمافزار
- حوزههای خلق ارزش معمار نرمافزار
- مهارتها و دانش مورد نیاز معمار نرمافزار
- Career و آینده شغلی معماران نرمافزار
هنوز سوالی داری؟
پاسخ بیشترِ پرسشهای رایج را در صفحهی سوالات متداول جمع کردهایم. اگر باز هم ابهامی مانده، مستقیم با من در تماس باش.