سه شنبه, ۹ بهمن, ۱۴۰۳ / 28 January, 2025
مدلسازی Modeling
امروزه یک سازمان نرمافزاری موفق سازمانی است که بتواند بسادگی نرمافزارهایی را تولید کند که نیازهای کاربران در آن دیده شده باشد. چنین سازمانی که بتواند چنین نرمافزاری را با روشها و ابزار مؤثر و در زمان مناسب پیادهسازی کند، میتواند در امر تجارت موفق باشد. محصول اولیه یک تیم تولید نرمافزار، بهینه نمیباشد و شعار نمیدهد بلکه مهم است که نرمافزاری را پیادهسازی کرده باشد که نیازهای کاربران و تجارت را برآورده سازد. بقیه موارد حالت ثانویه به حساب میآیند. نکته مهمی در این شعار وجود دارد. متأسفانه بسیاری از سازمانهای نرمافزاری درگیر حالت ثانویه میباشند. برای پیادهسازی نرمافزاری که اهداف موردنظر را برآورده سازد، شما باید کاربران را ملاقات کنید تا نیازهای واقعی سیستم شما بدست آید. میتوان گفت برای اینکه شما در نهایت بتوانید نرمافزاری با کیفیت بالا به وجود آورید، باید دارای افراد و ابزاری مناسب به همراه هدف مشخص و واضحی باشید.
مدل کردن، قسمت مرکزی تمامی فعالیتهایی است که پیادهسازان نرمافزاری را به سمت تولید یک محصول مناسب راهنمایی میکند. ما سیستمها را مدل میکنیم برای اینکه رفتارها و ساختارهایی را که در سیستم خود میخواهیم بصورت کتبی داشته باشیم، ما مدل میکنیم تا بتوانیم معماری سیستم خود را کنترل کنیم و بتوانیم سیستمی را که در حال ساختن آن میباشیم بهتر درک کنیم، امکان Reuse را در سیستم داشته باشیم و همچنین ریسکهای پروژه را مدیریت کنیم.
بسیاری از سازمانهای نرمافزاری شروع به انجام کارهای بزرگ میکنند، ولی مشکل اصلی این است که آنها همانند ساختن لانه برای پرندهها عمل میکنند (برای ساختن لانه پرنده میتوان با تعدادی تخته و میخ و بدون نیاز به نقشه اقدام به ساخت لانه کرد).
اگر شما واقعاً میخواهید که نرمافزاری را بدون هدف و در کمترین زمان ممکن تولید کنید مشکلات این کار فقط نوشتن خود برنامه میباشد، ولی در واقع هدف اصلی ایجاد یک نرمافزار صحیح میباشد و پیادهسازی یک نرمافزار کارا وابسته است بر ابزار، فعالیتها و معماری که آن نرمافزاری استفاده میکند. بسیاری مواقع پروژهها بصورت کوچک شروع میشوند ولی پس از مدتی به پروژههای بزرگ تبدیل میشوند، بخاطر آنکه آنها موفقیت کاری خودشان را در این راه قربانی میکنند. در پروژههای کوچک (ساختن لانه پرنده) صدمات وارده کم است ولی در پروژههای بزرگ (ساختن خانه مسکونی) نتیجهاش بسیار زیانبار خواهد بود.
عناصر زیادی در موفقیت یک پروژه نقش دارد که یکی از آنها که در همه رعایت میشود، مدلسازی است. ما مدل میکنیم تا کاربران تصویری ازمحصول نهایی را مشاهده کنند، ما حتی مدل میکنیم تا ریسکهایی هایی را که بر سرراه پروژه قرار دارد پیدا کنیم. پس میتوان گفت که مدلسازی در اصل یک کار تکنیکی است.
● مدلسازی چیست؟
یک مدل ساده شده هستی است که وجود دارد. در اصل مدل یک نقشه از سیستم را فراهم میکند. مدلها ممکن است دربرگیرنده جزئیات یک برنامه باشند. پس به طور کلی میتوان گفت که یک مدل خوب، مدلی است که تمام عناصر درگیر در پروژه و روابط بین آنها و نحوه اثرگذاری آنها را مشخص کند. هر سیستمی ممکن است توسط چندین مدل شرح داده شود و در هر مدلی یک نقشه شماتیکی وجود دارد که بر تشریح سیستم میپردازد. پس با این همه چرا ما مدل میکنیم؟
ما مدل میکنیم تا که سیستمی را که میخواهیم پیادهسازی کنیم بهتر درک کنیم
از مدلسازی به چهار نتیجه میرسیم:
▪ مدلها به ما کمک میکنند که سیستمی را که میخواهیم به آن برسیم بهتر تصور کنیم.
▪ مدلها به ما اجازه میدهند تا ساختار و رفتار سیستم را مشخص کنیم.
▪ مدلها ما را در جهت ساخت صحیح سیستم راهنمایی میکنند (برای ما الگوهایی (Pattern) را ایجاد میکنند که میتوانیم در پروژههای بعدی خود از آنها استفاده کنیم. این کار باعث افزایش امکان Reuse در پروژه میشود).
▪ مدلها تصمیماتی را که در جهت کاربردی سیستم باید گرفته شوند مستند میکنند.
ما در اصل مدلها را برای سیستمهای پیچیده ایجاد میکنیم. زیرا نمیتوانیم آنها را یکجا تصور کنیم. انسان توانایی درک چیزهای پیچیده را ندارد و در درک آنها محدودیت دارد. ولی با مدل سازی در هر نسخه روی یک جزء از سیستم کار میشود، باید توجه داشت که مدلسازی میتواند روی تخته، کاغذ، کارتهای CRC و... صورت گیرد. ولی چیزی که مهم است مدل کردن سیستمهای پیچیده میباشد و شکستن آنها به سیستمهای کوچکتر که قابل درک بوده و به راحتی قابل پیادهسازی میباشند.
● اصول مدلسازی:
تجربه چهار اصل را برای مدلسازی پیشنهاد میکند:
۱) انتخاب مدلهایی که برای ساخت دارای تأثیرات کارآمد و عمیقی بر روی اینکه چگونه میتوان به یک مشکل حمله کرد و چگونه میتوان برای آن راهحل پیدا کرد میباشند.
به معنی دیگر مدل خود را خوب انتخاب کنید. یک مدل خوب مشکلات موجود در سرراه پیادهسازی را تصویر میکند و مسیری را که راهی مناسبتر از آن پیدا نمیکنید پیشنهاد میدهد، ولی مدلهای نامناسب شما را به بیراهه راهنمایی خواهند کرد. در تولید نرمافزار مدلهایی را که شما انتخاب میکنید میتوانند تاثیر زیادی بر روی دید شما به مسائل داشته باشند. اگر شما یک سیستمی را بعنوان پیادهساز یک بانک اطلاعاتی درنظر داشته باشید، به احتمال زیاد روی روابط موجودیتی که رفتارشان همانند triggerها و Store Procedureها میباشد تمرکز خواهید کرد. اگر شما سیستمی را بعنوان یک آنالیست مشاهده کنید، مدلها را به احتمال زیاد از دید الگوریتم و جریان دادههایی که بین پروسسها در حال حرکت میباشند بررسی میکنید. پس نتیجه میشود که هر مدل دیدی به سیستم ما میدهد که این دیدها، گوناگون بوده و هزینه و سودهای خاص خود را دارند.
۲) هر مدلی بسته به شرایط باید از لایههای گوناگونی بررسی شود. این مسئله هم در دنیای واقعی و هم در صنعت نرمافزار صادق است. گاهی یک مدل سریع و راحت همانند User Interface مشخص میکند که ما نیازمند چه میباشیم. این مسئله در تعیین Platform، شبکه و مسائلی از این قبیل حائز اهمیت میباشد.
بهترین مدلها آنهایی هستند که اجازه دهند شما جزئیات و وابستگیهای سیستم خود را بشناسید و متوجه شوید که به کدام علت به آنها در سیستم خود نیازمند باشید. در بسیاری از مدلها یک طراح یا کاربر میخواهد بر روی «چه چیز» متمرکز شود و یک پیادهساز میخواهد بر روی «چه طور» تمرکز کند، هر دوی اینها میخواهند یک سیستم را در لایهها و زمانهای مختلف تصویر کنند.
۳) بهترین مدلها آنهایی هستند که به واقعیت نزدیک و در ارتباط با آن باشند. مدل مناسب باید با دنیای واقعی مرتبط باشد و مشخص کند که در کدام قسمتها دارای ضعف میباشد. در اصل تمامی مدلها حالت ساده شدهای از دنیای واقعی هستند، نکته اصلی در مدل این است که جزئیات اصلی و مهم سیستم از قلم انداخته نشده باشد.
در نرمافزار، نقطه ضعف در از بین رفتن ارتباط بین مدل آنالیز شده و مدلی که طراحی میشود میباشد. این شکاف بین مدلها باعث ایجاد شکافهای بیشتری در پروژه در زمانهای مختلف خواهد بود.
۴) هیچ مدلی به تنهایی کارایی کافی ندارد. هر سیستم بزرگی بهتر است که دارای خط مشیی باشد که به سمت یک مجموعه از مدلهای کوچک با کمترین وابستگی حرکت کند. اگر شما سازنده یک ساختمان باشید، هیچ نقشهای وجود ندارد که تمام جزئیات را برای شما مشخص کرده باشد. در حداقل شرایط شما به چندین نقشه مانند برق ساختمان، طبقات، لولهکشی و... نیازمند باشید. شاید جمله سؤال برانگیز، وجود کلمه «با کمترین وابستگی» در اصل چهارم میباشد. این به معنای داشتن مدلهایی است که میتوانند بطوری مستقل و جداگانه ساخته شده و استفاده شوند. اما هنوز هم بر همدیگر وابستگی دارند. مثلاً در نقشه ساختمان، نقشه برق ساختمان یک نقشه جداگانه و کامل میباشد که میتواند پیادهسازی شود، ولی هنوز بر نقشه بنای ساختمان وابستگی دارد زیرا با تغییر در آن ممکن است نقشه برق نیز دچار تغییر شود. این واقعیت در سیستمهای نرمافزاری شیءگرا صادق است. برای درک معماری چنین سیستمهایی شمانیازمند چندین View بهم مرتبط میباشید که شامل موارد زیر میباشد.
- Usecase View (نیازمندیهای سیستم را مشخص کرده و نمایش میدهد).
- Design View (پیداکردن مشکلات سیستم و مشخص کردن راهحلهای مربوط به آنها).
- Process View (پردازش Threadهای موجود در سیستم را در قالب توزیع شده مدل میکند).
- Development View (پیادهسازی و اداره کردن درک فیزیکی سیستم را برعهده دارد).
- Deployment View (بر روی مهندسی و تکنولوژی گسترش برنامه متمرکز میباشد).
هر کدام از دیدها ممکن است دارای ساختار گوناگونی باشند ولی درمجموع همه آنها نقشه یک سیستم نرمافزاری را نشان میدهند. البته باید توجه داشت که در سیستمهای گوناگون هر کدام از این مدلها ممکن است دارای اهمیت بیشتری نسبت به دیگر مدلها باشند. مثلاً در Graphic User interface(GUI) دیدهای Usecase مهم است. در سیستمهای Realtime دید پردازشی مهم است و در برنامههای تست و Web دید پیادهسازی و گسترش برنامه از اهمیت بالایی برخوردار است.
امروزه یک سازمان نرمافزاری موفق سازمانی است که بتواند بسادگی نرمافزارهایی را تولید کند که نیازهای کاربران در آن دیده شده باشد. چنین سازمانی که بتواند چنین نرمافزاری را با روشها و ابزار مؤثر و در زمان مناسب پیادهسازی کند، میتواند در امر تجارت موفق باشد. محصول اولیه یک تیم تولید نرمافزار، بهینه نمیباشد و شعار نمیدهد بلکه مهم است که نرمافزاری را پیادهسازی کرده باشد که نیازهای کاربران و تجارت را برآورده سازد. بقیه موارد حالت ثانویه به حساب میآیند. نکته مهمی در این شعار وجود دارد. متأسفانه بسیاری از سازمانهای نرمافزاری درگیر حالت ثانویه میباشند. برای پیادهسازی نرمافزاری که اهداف موردنظر را برآورده سازد، شما باید کاربران را ملاقات کنید تا نیازهای واقعی سیستم شما بدست آید. میتوان گفت برای اینکه شما در نهایت بتوانید نرمافزاری با کیفیت بالا به وجود آورید، باید دارای افراد و ابزاری مناسب به همراه هدف مشخص و واضحی باشید.
مدل کردن، قسمت مرکزی تمامی فعالیتهایی است که پیادهسازان نرمافزاری را به سمت تولید یک محصول مناسب راهنمایی میکند. ما سیستمها را مدل میکنیم برای اینکه رفتارها و ساختارهایی را که در سیستم خود میخواهیم بصورت کتبی داشته باشیم، ما مدل میکنیم تا بتوانیم معماری سیستم خود را کنترل کنیم و بتوانیم سیستمی را که در حال ساختن آن میباشیم بهتر درک کنیم، امکان Reuse را در سیستم داشته باشیم و همچنین ریسکهای پروژه را مدیریت کنیم.
بسیاری از سازمانهای نرمافزاری شروع به انجام کارهای بزرگ میکنند، ولی مشکل اصلی این است که آنها همانند ساختن لانه برای پرندهها عمل میکنند (برای ساختن لانه پرنده میتوان با تعدادی تخته و میخ و بدون نیاز به نقشه اقدام به ساخت لانه کرد).
اگر شما واقعاً میخواهید که نرمافزاری را بدون هدف و در کمترین زمان ممکن تولید کنید مشکلات این کار فقط نوشتن خود برنامه میباشد، ولی در واقع هدف اصلی ایجاد یک نرمافزار صحیح میباشد و پیادهسازی یک نرمافزار کارا وابسته است بر ابزار، فعالیتها و معماری که آن نرمافزاری استفاده میکند. بسیاری مواقع پروژهها بصورت کوچک شروع میشوند ولی پس از مدتی به پروژههای بزرگ تبدیل میشوند، بخاطر آنکه آنها موفقیت کاری خودشان را در این راه قربانی میکنند.
نوشته : ساسان نیکوکار
ایران مسعود پزشکیان دولت چهاردهم پزشکیان مجلس شورای اسلامی محمدرضا عارف دولت مجلس کابینه دولت چهاردهم اسماعیل هنیه کابینه پزشکیان محمدجواد ظریف
پیاده روی اربعین تهران عراق پلیس تصادف هواشناسی شهرداری تهران سرقت بازنشستگان قتل آموزش و پرورش دستگیری
ایران خودرو خودرو وام قیمت طلا قیمت دلار قیمت خودرو بانک مرکزی برق بازار خودرو بورس بازار سرمایه قیمت سکه
میراث فرهنگی میدان آزادی سینما رهبر انقلاب بیتا فرهی وزارت فرهنگ و ارشاد اسلامی سینمای ایران تلویزیون کتاب تئاتر موسیقی
وزارت علوم تحقیقات و فناوری آزمون
رژیم صهیونیستی غزه روسیه حماس آمریکا فلسطین جنگ غزه اوکراین حزب الله لبنان دونالد ترامپ طوفان الاقصی ترکیه
پرسپولیس فوتبال ذوب آهن لیگ برتر استقلال لیگ برتر ایران المپیک المپیک 2024 پاریس رئال مادرید لیگ برتر فوتبال ایران مهدی تاج باشگاه پرسپولیس
هوش مصنوعی فناوری سامسونگ ایلان ماسک گوگل تلگرام گوشی ستار هاشمی مریخ روزنامه
فشار خون آلزایمر رژیم غذایی مغز دیابت چاقی افسردگی سلامت پوست