مدلسازی یكی از تكنیكهای ذهنی بشر میباشد كه نه تنها برای اهداف علمی، بلكه برای انجام امور روزمره بشر به دفعات مورد استفاده قرار میگیرد. مدلسازی به طور كلی یعنی شبیهسازی یك محیط با اندازههای متفاوت و از محیط واقعی و احتمالا مواد و مصالحی متمایز از جنس مواد و مصالح محیط مدل شده. در مدلسازی ابتدا اجزای محیط واقعی انتخاب شده و متناسب با هدف مورد نظر از مدلسازی خصوصیاتی از هریك از اجزای واقعی انتزاع میشود، یعنی به ازای هر یك از اجزای محیط واقعی یك موجودیت تجریدی ساخته میشود و با برقراری ارتباطی مشابه با ارتباط اجزای واقعی، در میان موجودیتهای تجریدی، محیط واقعی مدل میشود. برای روشن شدن مثالی میزنیم:
فرض كنیم قصد داشته باشیم در فاز طراحی یك اتومبیل میزان موفقیت هوا در مقابل اتومبیل در حال حركت را بسنجیم یكی از راهها برای انجام این آزمایش، ساخت یك اتومبیل واقعی، راندن و سپس اندازهگیری مقاومت هوا میباشد كه انجام اینكار اگرچه ما را به هدف میرساند، ولی دارای هزینه بالاییست چرا كه بایستی ابتدا ماشین ساخته شود، سپس مورد آزمایش قرار گیرد.در این صورت اگر در آزمایش به نتیجه مورد نظر نرسیم، بایستی دوباره طراحی را تغییر داد، و پس از ساخت یك نمونه واقعی دیگر آزمایش را تكرار كنیم و این روند آنقدر ادامه پیدا كند تا طراحی مناسب برای اتومبیلی با خصوصیات مورد نظر شكل گیرد. میبینیم كه چنین روشی بسیار پرهزینه است و این هزینه هم شامل هزینههای اقتصادی است و هم هزینههای زمانی، چون علاوه بر این كه در هر مرحله آزمایش بایستی اتومبیل با صرف هزینه بالا ساخته شود، زمان ساخت آن نیز طول خواهد كشید.
ولی متخصصان برای انجام چنین آزمایشی به مدل روی میآورند. یعنی یك جسم فیزیكی كوچك با خصوصیات آئرودینامیكی لحاظ شده در طراحی اتومبیل، ساخته میشود و با قرار دادن آن در یك تونل باد، حركت اتومبیل در فضای واقعی را شبیه سازی میكنند و بدین طریق میزان مقاومت هوا را میسنجند.
نكات مورد توجه در این مدلسازی، یكی اندازه مدل و دیگری خصوصیات آن میباشد. مدل بسیار ساده و كوچك میباشد و از طرفی تنها خصوصیت آئرودینامیكی اتومبیل در مدل لحاظ میشود. چرا كه هدف ما از مدلسازی تنها بررسی خصوصیات آئرودینامیكی اتومبیل است و مدل الزاماً نبایستی از جنبههای دیگر، شباهتی به اتومبیل واقعی داشته باشد. مثلا در ساخت چنین مدلی به هیچوجه به استحكام اجزا و یا زیبایی مدل توجه نمیشود چون بررسی چنین خصوصیاتی خارج از هدف این مدلسازی خاص است
جنبه دیگر از مدل سازی که تبیین می
مثال بالا تنها یك جنبه از مدلسازی را بیان میكند و آن جنبه شناختExploration میباشد. یعنی در مدلسازیهای مشابه مدلسازی فوقالذكر، هدف از مدلسازی تنها شناخت محیط مورد مدل میباشد. یك جنبه دیگر از مدلسازی تبیین (specitication) میباشد. یعنی گاه برای معرفی و ارائه خصوصیات یك موجودیت واقعی یك مدل از آن ارائه میشود. نقشه جغرافیایی مثال خوبی است كه این جنبه از مدلسازی را مورد نظر دارد.
پس میتوان گفت كه هدف از مدلسازی دو چیز میباشد:
الف)شناخت(exploration)
ب)تبیین(specification)
كه بر اساس تعریف مسئله، مدلسازی یكی یا هردو هدف را در نظر میگیرد.
نكته دیگری كه بایستی در مدلسازی توجه كرد، روش (methodology) ساخت یك مدل میباشد. در بعضی موارد مدل چیز بسیار سادهای است و به راحتی ساخته میشود. ولی در بعضی از موارد مدل خود بسیار پیچیده میباشد هر چند از نظر منطقی غیرممكن مینماید ولی میتوان ادعا كرد كه در بعضی موارد مدل پیچیدهتر از موجودیت واقعی است. زمینهای كه این ادعا را در آن مصداق فراوان دارد، نرمافزار میباشد. بنابراین در شاخهای از مهندسی كه مدلسازی حائز اهمیت فراوان میباشد قطعا روشهای استانداردی برای ساختن مدل وجود دارد. در نرمافزار، روشهای تولید نرمافزار مانند SSAPM ,RUP,USDP, در واقع روشهای مدلسازی میباشند. هر روش مدلسازی طبیعتا نیازمند مصالحی برای ساخت مدل میباشد كه در روشهای مدلسازی نرمافزاری مصالح لازم برای تولید مدل، زبانهای مدلسازی می
UML چیست؟
Unified Modelling Language یك زبان مدلسازی است كه درسال 1995 به وسیله شركت Rational معرفی شد. UML یك زبان شیگراست یعنی اجزا این زبان متناسب با مفاهیم به كاررفته و پارادایم شیگرائی طراحی شدهاند.
پس از ارائه مفاهیم شیگرائی در ابتدای دهه 80 میلادی به تدریج روشهای شیگرائی تولید نرمافزار به وسیله افراد و سازمانهای مختلف ارائه گردید. این روشها در برگیرنده یك مجموعه علائم برای بیان مفاهیم و ایدهها از یك سو و یك طرح كاری برای تولید نرمافزار از سوی دیگر بود كه از مهمترین این روشها میتوان به OMT,BOOCH,OOSE…. اشاره كرد.
اگرچه داشتن یك روش استاندارد امری مطلوب است ولی تفاوت روشها امریست طبیعی و با توجه به تفاوت فراوان در نوع مسائل میتوان گفت كه حتی وجود روشهای مختلف الزامی است چرا كه مثلا در یك پروژه بسیار بزرگ نمیتوان همان روشی را به كار برد كه در یك پروژه كوچك. ولی زبان و مجموعه علائم از چنین قاعدهای پیروی نمیكند و داشتن یك زبان استاندارد امری بسیار مطلوب و از بعضی دیدگاهها حتی الزامی میباشد. یكی از الزامات مهم در داشتن یك زبان استاندارد همگانی ناشی از نقشی است كه زبان در ارتباطات به عهده دارد. البته چندگونه بودن زبان خود مولد مشكلات متعددی است.
با هدف ارائه یك زبان استاندارد فراگیر شركت Rational با گردآوری سه نفر از ارائهكنندگان معتبرترین روشهای شیگرا یعنی Irar jacobson مبدع روش OOSE ,BOOCH مبدع روشی با همین نام، Rambaugh مبدع روش OMT و با اخذ نقاط قدرت سه روش فوقالذكر، یك زبان استاندارد به نامUML ارائه كرد. این زبان پس از ارائه از سوی (Object Mamgement Group) كه یكی از معتبرترین سازمان جهانی در زمینه شیگرائی میباشد بعنوان یك استاندارد پذیرفته شد. پس از ارائه این زبان و پذیرفته شدن آن به عنوان یك استاندارد جهانی در زمینه نرمافزار، علاوه بر پروسه این زبان و ارائه متولوژیهای مبتنی بر آن مانند usop و rup از سوی افراد و سازمانهای مختلف، متخصصین در پی یافتن كاربرد این زبان در زمینههای دیگر فنی بر آمدند. برآیند این تلاشها در حال حاضر uml را به عنوان قدرتمندترین زبان مدلسازی در دنیای نرمافزار مطرح ساخته است.
زبان استاندارد جهانی برای مدل
با كمی اغماض میتوان ادعا كرد كه در میان شاخههای مختلف مهندسی در هركدام كه دارای قدمت بیشتری است، همگرایی بیشتری در اتخاذ روش و ابزار برای انجام اعمال نسبتاً مشابه از میان متخصصان و متولیان آن رشته وجود دارد. به طور مثال در حال حاضر برای اجرای یك سازه در هر نقطه از دنیا، مهندسین عمران از یك روند همسان با توالی مشابه شامل: الف)تولید طرح عمرانی ب)پیادهسازی نقشه ج)محاسبات سازهای د)اجرا استفاده میكنند. ولی در رشته نوپایی چون مهندسی نرمافزار، گاه چنان روشها متفاوت است كه از دید یك ناظر خارجی، دو تیم نرمافزاری مختلف كه هر دو قصد تولید محصولی مشابه را دارند، دو تیم در رشتههای متفاوت به نظر بیایند. یكی از علل وجود تمایز در تولید نرمافزار میزان تخصص نیرو و زمان به پیادهسازی میباشد.بدین معنا كه در نزد بسیاری از برنامهنویسان تولید نرمافزار معادل است با تولید كد. ولی از نظر بعضی دیگر تولید كد تنها بخشی از تولید نرمافزار است كه در بسیاری از موارد حتی منابع و زمان اختصاص داده شده به آن در طول پروسه تولید نرمافزار كمتر از50% میباشد.
از یك دیدگاه كلی، پروسه تولید نرمافزار را میتوان به دو بخش كلی شامل:
الف)تحلیل و طراحی ب)پیادهسازی تقسیم كرد.
از دیدگاه دسته اول، برنامهسازان، تحلیل و طراحی صرفاً فهم ذهنی مساله میباشد كه دقیقا پس از آن بایستی اقدام به پیادهسازی كرد. در حالیكه در نظر دسته دوم، فاز تحلیل و طراحی پر اهمیتتر از فاز دوم میباشد كه بایستی برای انجام آن از متدولوژیها و روشهای استاندارد استفاده كرد. UML یك زبان مدلسازی میباشد كه در فاز تحلیل و طراحی مورد استفاده قرار میگیرد