ضرورت و فایده مدل سازی

تا زمانی که ما ندونیم مدل یعنی چی، نمیتونیم اهمیّت مدل و مدلسازی رو بفهمیم و «یو.ام.ال» برامون دست بالاش دیگه یه چیز بیخود و شیکِ که تنها بدرد «ای.بی.ام» و «سان» میخوره. اما حقیقت اینه که مدل برای همه مهمه حتی برای دانشجوهای ترم های پایین و برای کسانی که میخوان براستی مهندس بشن و نرم افزار بسازن بخشی از ابزار کار بشمار میاد. اما این مدل چی هست؟ خوب باید از کمی پیشتر آغاز کنیم. مثلا از اینجا: یه چیزایی هستن که ساختنشون آسونه و یک نفر به تنهایی و بدون نیاز به اندیشه و نوشتن و کشیدن و … میتونه کار رو انجام بده. برای نمونه نوشتن یک برنامه که بیاد آمار نخود و لوبیای توی آش کشک خاله رو از ورودی بگیره و در خروجی چاپ کنه که نفخ میکنیم یا نه دیگه طراحی نمیخواد! کسی هم قرار نیست فردا بیاد این شاهکار طراحی ما رو بخونه و توی شاتلهای «ناسا» هم نمیخوان ازش استفاده کنن که برنامه غذایی فضا نوردهاشون تو مریخ نفخ آور نباشه. گوگل هم هیچ حرفی نزده مبنی بر اینکه بیاد اسپانسرمون بشه که «گوگل آش» بزنیم ! درسته که اینا ریخت جک و فکاهی رو داره اما یک بار دیگه با دقت بخونید تا منظورم رو درست تر بگیرید. ولی همه نرم افزارهای دنیا اینجوری نیستن که، هستن؟ مثلا فکر کنید «مایکروسافت» بخواد بدون طراحی «ویندوز» بنویسه یا «سان» بیاد همینجوری پلاتفرم جاوا بده بیرون.کاملا واضحه که اینا اینجوری کار نمیکنن.اونا هم فکر میکنن ، کد مینویسن، باگهاشون رو میگیرن و … اما یه تفاوت بزرگ با اون پروژه «آش» ما دارند و اونهم توی پیچیدگی نرم افزار هاشونه.«آش» یه چیز ساده است به این معنی که اجزای زیادی نداره، کارهای زیادی نمیکنه، با سیستمهای دیگه ارتباط نداره، کلاینت و سرور نداره، قرار نیست تا ده سال دیگه روش کار بشه، با جون آدمها سر و کار نداره و قرار نیست ترافیک هوایی رو کنترل کنه.اما« ویندوز» ،«آفیس» ،«گوگل کروم» ،«آی.بی.ام وب اسفیر» یا نرم افزاری که ترافیک هوایی رو مدیریت میکنه اینجوری نیستن. اونها نرم افزاری های پیچیده ای هستند چون قراره کارهای زیادی انجام بدن، قراره کارهای دشواری انجام بدن، با سیستمهای زیادی سر و کار دارن که خودشون کلی پیچیدگی دارن، با جون آدمها سر و کار دارن. بلادرنگ هستند و قرار تا ده سال آینده صد خروار کار روی اونها انجام بشه. راه و رسم ساختن نرم افزارهای ساده با نرم افزارهای پیچیده از ریشه تفاوت داره.طراحی و نمودار بازی و «یو.ام.ال» و متودولوژی و اینجور چیزها توی ساخت نرم افزارهای پیچیده خودشون رو نشون میدن. اینکه می بینید برخی مهندسین نرم افزار ما دو زار از «یو.ام.ال» و دیگر چیزها سر در نمیارند دلیلش اینه که بیشتر اونها حتی از دور هم در جریان کار یک نرم افزار پیچیده نبودند و بنابراین یو.ام.ال هم براشون کاری نمیکنه.اگر دقت کنید میبینید که سادگی و پیچیدگی اینجوری که من گفتم خیلی نسبی هستند. اون نرم افزار «آش» برای من و بامداد خیلی ساده است اما برای خواهر من و بامداد جزو شاهکارهای صنعت نرم افزار بشمار میاد و تردید ندارند که برای ساختنش از «سان» و «گوگل» مدیر پروژه آوردیم! از سوی دیگه برای من ساختن یک بازی دو بعدی کار خیلی پیچیده ای است اما برای «جان کارمک» (برنامه نویش ارشد شرکت «آی.دی») که توی کارنامه اش بازی هاتی سری «دوم» را داره قطعا کار چندان پیچیده ای نیست.منظورم اینه که درسته که یه نرم افزارهایی دیگه به اندازه ای بزرگ هستن که از نظر خدا هم پیچیده هستند اما برای من و شما پیچیدگی نرم افزار به خودمون بستگی داره و هر زمان مجبور شدیم برای یک نرم افزار اندیشه کنیم و طرحی بریزیم، بی تردید جزو نرم افزارهای پیچیده بشمار میاد. نتیجه میگیرم که شما در هر سطحی که باشین براتون خوبه که با روشهای اصولی و درست و درمون ساختن نرم افزار [های پیچیده] آشنا بشین و اونها رو بکار ببنیدن. مگه شما چند ترم میخواین «آش» بنویسین؟ چند وقت میخواین پروژه دانشجویی از این ور و اون کُپ بزنین ؟ در پایان دیر یا زود به جایی میرسید که دیگه با ده دقیقه ور رفتن با «ویژووال سی» نمیشه کار مشتری رو راه انداخت و اون وقت دیگه شما براستی پا گذاشتین توی دنیای نرم افزار که پُره از پیچیدگی هایی که برای مدیریت کردنشون به ابزار و مهارت نیاز دارید. اینجاست که میرسیم به مدل و مدلسازی.نخستین تفاوت «آش» با «ویژووال سی» اینه که «آش» هیچ طرح خاصی لازم نداره که بخوایم براش فکر کنیم یا توضیح دادنش سخت باشه اما «ویژوال سی» صدها بخش داره که خودشون کلی طرح دارن و طرح کلی خود «ویژووال سی» هم برای خودش طرحی بشمار میاد طرحستون! چه جوری طرح و نقشه نرم افزارتون رو بیان میکنید؟ به چه روشی، با چه زبونی و روی چه حسابی نکات کلیدی و مشخصات منطقی نرم افزارتون را برای دیگران که میتونند برنامه نویسهای تیم خودتون باشند یا در آینده برای بازخوانده شدن بدست خودتون شرح میدین ؟ حتی خودتون برای شفاف کردن ایده هاتون و آزمودن اونها و بهبود دادنشون یا نوشتن و رسم کردن طرح برنامه تون چی کار میکنید؟ گرفتاری اینجاست که طرح نرم افزار درون ذهن و اندیشه شماست و تنها شما بهش دسترسی دارین. کسی نمیتونه فکر شما رو بخونه تا بفهمه منظورتون چیه. حتی اگر تنها برنامه نویس پروژه خودتون هستید هم نمیتونید همه طرح رو یکجا در ذهنتون بیارید و تنها با تصاویر ذهنی روی طرح و پروژه کارکنید. دیگه نگهداری و تغییردادن طرح در آینده که بماند. بنابراین طرح (اون ایده ای که در ذهن شماست) باید در جایی بیرون از ذهن شما نوشته یا رسم بشه و دیگران (که ممکنه فردا خودتون باشید) بتونند با خوندن اون نوشته یا دیدن اون ترسیمات طرحی که میخواین بیان کنید رو بفهمند. به این نوشته ها یا ترسیمات میگن مدل. مدل هر چیزیه که طرحی یا ایده رو بیان کنه.مدل میتونه نوشتاری باشه.شما میتونید طرحتون رو بنویسید یا میتونه گرافیکی باشه که در این صورت شما میتونید چندین صفحه نوشته رو یکجا و با چند تا مربع و دایره و خط و لوزی به بیننده منتقل کنید.بنابراین نخستین کار یک مدل نمایش دادن ایده و طرحیه که در ذهن دارید. اگر مدل همین یک کار رو میکرد هم کافی بود که همه مدلسازی کنند اما کار مدل تنها به بیان ایده ها ختم نمیشه. هیچ کس تا زمانی که طرحی رو درست نفهمیده اون رو اجرا نمیکنه …هیچ طرحی پیش از آزموده شدن در مراحل نخستین و پذیرفته شدن در اون آزمون ها وارد فاز پیاده سازی نمیشه و هیچکس هم نمیتونه هیچ طرح و ایده ای رو بدون مدل کردن آزمایش کنه . . . . بدون مدل هیچ کار مهمی نمیشه روی یک طرح انجام داد. ذهن آدم به تنهایی و بدون مدل خیلی ضعیف تر از اونیه که بتونه این کارها رو انجام بده برای همینه که مدل بجز بیان کردن طرح کاربردهای بسیار مهم دیگری هم داره.مدل برای آزمودن طرح ، کار کردن روی طرح (تیمی یا انفرادی) و اجرایی کردنش هم بکار میره. یعنی راستش رو بخواهید اصلا راه دیگه ای نداره … . هیچ طرحی از اول کامل و بی کاستی نیست. روی هیچ طرحی نمیشه هیچ کاری کرد مگر مدلی داشته باشه که اون طرح رو بیان کنه.درسته که ممکنه طرح و ایده شما خیلی خوب باشه ، اما بدون مدلی که اون طرح رو نشون بده و بشه روش کار کرد اون طرح به جایی نمیرسه …. مدل وادارتون میکنه به طرحتون بیشتر اندیشه کنید. یه چیزایی رو ببینید که تابحال نمیدیدید. مدل به شما امکان میده طرحتون رو تغییر بدید و اون رو از یک چیز ذهنی برسونید به یک نرم افزار اجرا شدنی.چیزی که میخوام بگم اینه که مدل تنها یک مشت خط و … نیست که طرح و ایده شما رو برای ملت همیشه در (پشت) صحنه شرح میده.مدل یک بخشی از توانایی های ذهنیتونه که اومده روی کاغذ و شکل و ریخت نوشتاری یا ترسیمی پیدا کرده و همین کار ساده باعث میشه که شما بتونید هزار تا کار دیگه با اون طرح و ایده (که حالا دیگه مدل داره) بکنید (اوه اوه چی گفتم! …) . کارهایی که برای ساختن نرم افزار لازم هستن و هیچ راه دیگری هم برای انجام دادنشون نیست به جز از راه مدل. برخی اصطلاحات :یو.ام.ال. : زبان مدلسازی یکچارچه مدل : Model مدلسازی : Modeling مدلساز : Modeler طرح : Design طراح : Designer نمودار : Chart, Diagram مدل نوشتاری : Textual Model مدل گرافیکی : Graphical Model مدل دیداری : Visual Model پیچیدگی : Complexity سادگی : Simplicity
Www.manesht.ir

اشتراک گذاری پست

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

tst

مهندس احمدی-مشاور برنامه ریزی و سیستم ها-موسسه رزق حلال
این موسسه آمادگی هرگونه همکاری از ایده پردازی تا طراحی و ساخت محصولات صنعتی، شهری، فرهنگی-اجتماعی، سیستمی و … را دارد. بدین منظور می توانید با ما تماس حاصل فرمائید.
تلفن:09331188467 ایمیل: halaltec@live.com

دیدگاه

دیدگاهی ثبت نشده.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.