برخی از چالش های معماران نرم افزار و سازمانی عبارتند از:
مواجهه با سیستمهای قدیمی
اکنون، بسیاری از سازمانها سیستمهای قدیمی را بهعنوان بخشی از عملکرد روزانهی خود استفاده میکنند. این سیستمها اغلب برای سالها و حتی دههها در حال استفاده هستند و ممکن است قابلیت انعطافپذیری و توسعهپذیری کمی داشته باشند.
در این شرایط، معماران باید بتوانند با سیستمهای قدیمی کنار بیایند و به روزرسانی و توسعه آنها را با حفظ پایداری و عملکرد درست آنها، برنامهریزی کنند. برای این منظور، میتوانند از رویکردهای مختلفی مانند مدیریت ریسکها، ایجاد طرح توسعه پایدار و اصلاحپذیری سیستم، استفاده کنند.
در هر صورت، معماران باید بتوانند با چالشهایی که با سیستمهای قدیمی همراه هستند مثل قابلیت انعطافپذیری و سازگاری با فناوریهای جدید و نیازمندیهای کاربران، مقابله کنند.
در واقع نمی توانیم به پروژهای فکر کنیم که شامل موارد زیر نبوده باشد:
– یک سیستم که توسعهدهندهی اصلی آن دیگر موجود نیست و هیچ کس به طور کامل سیستم را نمیفهمد.
– یک سیستم که به هر دلیلی، هیچ کس نمیخواهد حتی اگر ممکن باشد آن را لمس کند(تا وقتی کار میکنه دست نزنید).
– یک سیستم که چندین سال است “برای جایگزینی آماده است”، اما برنامه زمانبندی واضحی برای جایگزینی آن وجود ندارد.
– یک سیستم که توسعهدهندهی اصلی آن حتی پشتیبانی از آن را نمیکند
تبیین ارزش معماری برای غیر معماران
به شدت سوالی که در فضای معماری برای مدت طولانی به ذهن مردم میآید، این است که «معماری» چیست؟ معماران دقیقاً چه کاری انجام میدهند؟
نکتهای که باید به یاد داشته باشید این است که هر سیستمی دارای یک معماری است. بدون توجه به این که آیا یک معمار در آن دخالت داشته یا نه، یک یا چند نفر تصمیماتی در زمینهی طراحی سیستمها گرفتهاند که بهطور کلی با هم متحد شدهاند و به معماری سیستم منجر شدهاند. اما آیا شما ترجیح میدهید که چیزی را با اندیشیدن کافی طراحی کنید یا چیزی را بدون هیچ پیشبینی قبلی با هم ترکیب کنید؟
برخورد با برنامه ها و امنیت داده ها
در سال 2023، امنیت مسئلهای بزرگی است که هر فردی در صنعت فناوری باید با آن دست و پنجه نرم کند. این که برای محافظت از اطلاعات مشتریان خود در برابر افشای آن بهترین سیاست تجاری است فقط نیست، بلکه در بسیاری از مکانها قانونا باید این اطلاعات با مسئولیت محافظت شوند. به عنوان یک معمار، ما باید استانداردهای امنیتی را مدیریت کنیم و اطمینان حاصل کنیم که طرحهای خود را پیش از نوشتن کدها یا راهاندازی سیستمها در نظر گرفتهایم.
البته این انجامش آسان نیست.
برخورد با ادغام(integration) با سیستم های دیگر
سیستمهای قدیمی مشکلات بزرگی دارند، اما ارتباط با سیستمهای جدید نیز ممکن است پیچیدگیهایی را به همراه داشته باشد. چگونه میتوانید دادههای حساسی به حجم گیگابایت را از یک سرور به سرور دیگری ارسال کنید؟ مخصوصا زمانی که سیستم مقصد فقط فایلهای XML را در یک پوشه خاص برای ورودی خود قبول میکند؟ در برخی موارد، شما به سیستمهای واسط متصل میشوید که فقط فایلها را منتقل میکنند، و گاهی نیاز است به استفاده از راهکارهای شخص ثالث مانند Microsoft SQL Server Integration Services (SSIS) یا Microsoft BizTalk برای گذراندن و مدیریت دادهها بپردازید.
راه حل ایدهآل این است که دو سیستم به گونهای طراحی شوند که بتوانند با integrate شوند و یا از یک پروتکل استاندارد استفاده کنند به گونهای که سیستمهای مرتبط بتوانند به سادگی با استفاده از یک استاندارد پیادهسازی شوند، بدون اینکه نگران ادغام مستقیم با سیستمهای مختلف باشند. اما این استانداردها اغلب بسیار پیچیده هستند (به دلیل تعداد سناریوهای نا مربوط به شما که باید با آنها سروکار داشته باشند) یا برای نیاز خاص شما وجود ندارند.
وابستگی به یک Vendor
یکی از چالشهای عمده معماری نرمافزار، حس محدودیت در استفاده از یک تنها تامینکننده (وندور لاکین) است بهطوری که بخشهایی از معماری قابل تغییر نیستند.
ممکن است شما مجبور باشید که از یک نرمافزار خاص به عنوان پلتفرم اصلی برای کسب و کار خود استفاده کنید، اما زمانی که بخشهایی از نرمافزار بهطور شدیدی متکی به نرمافزار اصلی شما هستند، میتواند یک مشکل عمیق و فشار آور باشد. این مسئله میتواند برای شما منجر به افزایش هزینهها، ناپایداری سیستم، و از دست دادن انعطافپذیری و قابلیت تغییر شود.