نرم افزار اندروید کلوب
مهندسی نرم افزار , narmafzarclub

مهندسی نرم افزار

مهندسی نرم افزار , narmafzarclub

مهندسی نرم افزار

410نــــفــــــر
عضو شده اند
410نفر عضو شده اند
محلی برای تبادل اطلاعات و کسب معلومات بیشتر در خصوص مهندسی نرم افزار به امید توفیق مهندسی نرم افزار در پیش برد جامعه عظیم نرم افزاری ایرانمحلی برای تبادل اطلاعات و کسب معلومات بیشتر در خصوص مهندسی نرم افزار به امید توفیق مهندسی نرم افزار در پیش برد جامعه عظیم نرم افزاری ایرانمشاهده کامل مشخصات
4 آذر 1384

اعضاء

  • فرشته جووون , fereshteha3emoooni
  • غریب   , kori_kord
  • زری  , isomer
  • محمد حسین  , alians1371
  • 410 نفر

    morebox img

کلوبهای مشابه

  • مهندسین سازه ، کامپیوتر , mohandesinesazecomputer
  •  میکروهای  pic_8051_AvR و تابلوهای روان LED , electronicdesign_by_microcontr
  • جاوا و سی شارپ , java_csharp




مهندسی نرم افزار , narmafzarclub
معماری و طراحی نرم افزار
معماری و طراحی
تاکنون ، معماری های متفاوتی بمنطور طراحی و پیاده سازی متناسب با رشد فن آوری در بخش نرم افزار ارائه شده است این معماری ها از یکطرف برخاسته از امکانات و ماهیت معماری سخت افزار ها در زمان خود و از طرف دیگر بسته به نوع و نگرش در تکنولوژی های ساخت نرم افزاری و انتظارات طرح شده توسط کاربران است هر معماری دارای شاخص ها و ویژگی های منحصر بفرد خود بوده و نرم افزارهائی که با اتکاء بر هر یک از معماری های فوق پیاده سازی می گردنند ، خصایص خود را از معماری بکارگرفته شده به ارث خواهند برددر زیر به شرح مختصری از هر یک از معمارها می پردازیم مسلما معماری ها و چارچوب های جدید مبتنی بر برنامه نویسی تحت وب و اینترنت نظیر J2EE , .Net قابلیت و لزوم استفاده از معماریهای چند لایه را توصیه می نمایندعلاوه بر این در این نوع معماری عدم وابستگی بین مولفه ها (Components) و نیز سرویسها ( در غالب معماری Service Oriented ) مورد تاکید قرار گرفته است .

معماریMainFrame
معماریFile Server
معماری سرویس گیرنده / سرویس دهنده
معماریTwo-Tier
معماری چندلایه Three-Tier ,N Tier


معماری MainFrame
ویژگی :
- معماری فوق در دهه های 1970-1960 مورد توجه و استفاده جدی قرار داشت
- کامپیوتر اصلی ( Host) مسئولیت انجام تمامی پردازش ها را برعهده دارد.
- کاربران با استفاده از ترمینال ها ، قادر به ایجاد ارتباط با سیستم اصلی (host) می باشند.
- ترمینال ها هوشمند نبوده و صرفا" به یک صفحه کلید و نمایشگر محدود می باشند.
- فشردن کلیدهای صفحه کلید ، تنها چیزی است که ارتباط بین کاربران(ترمینال ها ) و سیستم اصلی را معنی خواهد کرد.
- داده ها و منطق برنامه بر روی یک سیستم (Host) یکسان ذخیره می گردنند.


مزایا :
امنیت در این نوع معماری بسیار بالا است.
با توجه به تمرکز داده ها و منطق ، مدیریت متمرکز و اعمال آن آسان خواهد بود.


معایب :

هزینه تهیه ، اجاره و پشتیبانی این نوع سیستمها بسیار بالا است .
برنامه ( منطق ) بهمراه داده های مربوطه در یک محل مستقر و از یک محیط پردازش یکسان استفاده می کنند.
اغلب برنامه های نوشته شده بر اساس معماری فوق محیط های رابط کاربر گرافیکی را حمایت نمی نمایند.


معماری File Server
ویژگی :
چرخش180 درجه ای نسبت به معماری MainFrame.
از سرویس دهنده یا سرویس دهند گان متعدد، بصورت متمرکز استفاده می گردد.
منابع متفاوتی نظیر چاپگر و یا فضای ذخیره سازی ( هارد ) به اشتراک گذاشته می شوند.
سرویس دهنده فایل های مورد نیازو ذخیره شده توسط منابع اشتراکی را برای کاربران ارسال خواهد کرد.
کار درخواست شده توسط کاربر ( منطق و داده ) بر روی سیستم کاربر اجراء خواهد شد.
منطق برنامه برروی سیستم کاربر ( سرویس گیرنده ) اجراء خواهد کردید.
داده ها بر روی سرویس گیرنده مستقر خواهند شد.

مزایا :

برای استفاده از معماری فوق نیاز به صرف هزینه های بالا نخواهد بود .
از لحاظ بکارگیری منابع دارای انعطاف پذیری مناسبی است .


معایب :

تمامی منطق برنامه بر روی سرویس گیرنده اجراء خواهد شد .
وجود محدودیت های خاص نظیر میزان حافظه و یا نوع پردازشگر سرویس گیرندگان، بکارگیری برنامه را با مشکل مواجه می سازد.
بهبود عملکرد برنامه و یا اعمال اصلاحات مورد نظر همواره یکی از چالش های جدی است .


معماری Client Server
ویژگی :
در معماری فوق از سرویس دهند گان و سرویس گیرند گان با خصایص متفاوت استفاده می شود.
اصل تقسیم کار دنبال و سرویس دهنده عملیات سنگین با پردازش بالا و سرویس گیرنده عملیات سبک را انجام خواهند داد.
دو بخش متفاوت یک برنامه ، در جهت انجام عملیات با یکدیگر تشریک مساعی می نمایند.
سرویس گیرنده با ارسال درخواست و سرویس دهنده با پاسخ به درخواست جلوه ای از همیاری در پردازش عملیات را بنمایش می گذارند.
پلات فورم و سیستم های عامل سرویس دهنده و سرویس گیرنده می تواند متفاوت باشد.
عملیاتی را که یک برنامه انجام می دهد بین سرویس دهنده و سرویس گیرنده تقسیم می گردد.


مزایا :
بهره گیری مناسب از پتانسیل های سخت افزاری موجود با توجه به اصل تقسیم عملیات ها
بهینه سازی استفاده و بکارگیری منابع اشتراکی .
بهینه سازی توانائی کاربران از بعد انجام فعالیت های متفاوت


معایب :
عدم وجود امکانات لازم برای کپسوله نمودن سیاست های راهبردی نرم افزار
کاهش کارائی برنامه همزمان با افزایش تعداد کاربران همزمان
بهبود عملکرد برنامه و یا اعمال اصلاحات مورد نظر همواره یکی از چالش های جدی است .


تاکنون مدل های متفاوتی از معماری فوق پیاده سازی شده است :

1- پردازش های مبتنی بر میزبان مدل فوق بمنزله یک مدل سرویس دهنده / سرویس گیرنده تلقی نشده و مشابه مدل MainFarme است

2- پردازش های مبتنی بر سرویس دهنده در این مدل سرویس دهنده تمامی پردازش های مربوطه را انجام و سرویس گیرنده مسئولیت ایجاد بخش رابط کاربر را برعهده خواهد د اشت.

3- پردازش های مبتنی بر سرویس گیرنده تمامی عملیات بر روی سرویس گیرنده انجام خواهد شدعملیات مربوط به بررسی صحت داده ها و سایر عملیات مربوط به منطق بانک های اطلاعاتی بر روی سرویس دهنده انجام خواهد شد.

4- پردازش های مبتنی بر همیاری .در این مدل سرویس دهنده و سرویس گیرنده بمنظور انجام یک فعالیت با یکدیگر تشریک مساعی خواهند کرد.



معماری Client Server : Two Tier
ویژگی :
مشابه مدل Client Server در بخش قبل می باشد.
در این مدل از یک سرویس دهنده و یک سرویس گیرنده در شبکه استفاده می گردد.
مدل فوق از سه بخش که در دو لایه سرویس دهنده و سرویس گیرنده قرار خواهند گرفت، تشکیل می گردد.
بخش های رابط کاربر ، مدیریت پردازش ها و مدیریت بانک های اطلاعاتی بخش های سه گانه مدل فوق می باشند.
منطق برنامه بین دو محل فیزیکی توزیع می گردد.

مزایا :
مناسب ترین روش برای پردازش های توزیع شده در یک شبکه با حداکثر یکصد کاربر
سهولت در امر پیاده سازی
نسبت دهی مستقیم رابط کاربر با منابع تامین داده ها


معایب :

عدم وجود امکاناتی برای کپسوله نمودن سیاست های راهبردی نرم افزار
کاهش کارائی برنامه همزمان با افزایش تعداد کاربران همزمان
عدم وچود انعطاف لازم از بعد انتقال یک برنامه از سرویس دهنده ای به سرویس دهنده دیگر بدون انجام تغییرات اساسی


معماری Multi Tier, Three Tier


ویژگی :
مدل فوق در سال 1990 عرضه شده است .
در این مدل از یک Tier میانی دیگر بین سرویس گیرنده ( رابط کاربر) و سرویس دهنده بانک اطلاعاتی استفاده می شود.
لایه میانی شامل مجموعه ای از ابزارها برای دستیابی به منابع سیستم ، صرفنظر از نوع پلات فورم است
لایه میانی مسئولیت مدیریت پردازش ها را برعهده خواهد گرفت
لایه میانی مسئولیت تجزیه و یا ترکیب نتایج حاصله از منابع داده ئی نظیر بانک های اطلاعاتی را برعهده دارد.
بخش های رابط کاربر ، مدیریت پردازش ها و مدیریت بانک های اطلاعاتی بخش های سه گانه مدل فوق می باشند.
لایه میانی خود می تواند به دو و یا بیش از دو بخش با عملکردهای متمایز تقسیم گردد (Multi-Tier) لایه منطق تجاری می تواند برروی سرویس دهنده های متعدد قرار گیرد.
مدل فوق گزینه ای مناسب برای پیاده سازی نرم افزار بر روی اینترنت است .

مزایا :
افزایش کارآئی ، انعطاف پذیری ، قابلیت استفاده مجدد و توان پشتیبانی
ارتقاء کارآئی همزمان با افزایش تعداد کاربران
مخفی نمودن پیچیدگی ها ی موجود با توجه به ماهیت پردازش های توزیع شده از دید کاربران
ارائه امکانات لازم به برنامه نویسان بمنظور طراحی و پیاده سازی نرم افزار ها با یک رویکرد مشابه
ارائه امکانات لازم به برنامه نویسان بمنظور تبعیت از روش های یکسان برای دستیابی به داده ها
استفاده از الگوهای طراحی و برنامه نویسی در پیاده سازی و توسعه سریع تر
ادامه
99
1
    هفت کد ،سون کد، , 7code
    پنجشنبه 31 اردیبهشت ، 17:54
    انجام پروژه های دانشجویی با کمترین هزینه و در کمترین زمان!
    آموزش زیان های برنامه نویسی!
    7code.ir
    ادامه
    مهندسی نرم افزار , narmafzarclub
    منابع درس مهندسی نرم افزار 1
    منابع درس مهندسی نرم افزار 1

    یک دانشجوی گرامی در توضیحات مطلبی که پیشتر با عنوان استاد فول چارت در وبلاگ نوشته بودم از منابع موجود برای درس مهندسی نرم افزار 1 پرسیده بود. برای پاسخگویی، بهتر دیدم در مطلبی مستقل به برخی کتابهای موجود در این زمینه اشاره کنم.
    نکته اول :متاسفانه در هنگام نگارش این مطلب به سیلابس درسی وزارت علوم مشخص شده برای این درس، دسترسی نداشتم و تنها مبنا را بر کتابهایی که می شناسم گذاشتم.
    نکته دوم: کتابهایی که به آنها اشاره می شود ، برخی کتابهایی هستند که من با توجه به سرفصل دروسی که برای تدریس این درس تعیین کرده ام استفاده می کنم. مدرسان دیگری ممکن است با توجه به اولویتهایشان کتب دیگری را استفاده کنند (حتی کسانی را می شناسم که از کتاب پرسمن که مرجعی است برای مهندسی نرم افزار 2 به صورت کامل در تدریس این درس استفاده می کنند و یا دیگرانی که در این درس صرفا یک متدولوژی را آموزش می دهند.) که این صرفا یک تفاوت سلیقه است در تدریس و گرنه محتوی تقریبا برای همه یکی است.



    بنابراین قبل از پرداختن به فهرست کتابها مناسب می دانم در مورد محتوی درس مهندسی نرم افزار 1 از دید خود توضیحاتی ارائه کنم.
    درس مهندسی نرم افزار 1 از چهار بخش تشکیل شده است:


    بخش اول : مبانی مهندسی نرم افزار: شامل مروری بر تعاریف سیستمها و فرآیندهای توسعه نرم افزار و تعاریف تحلیل سیستمها و نیز روشها و منابع جمع آوری اطلاعات در سازمانها (این بخش حدود یک سوم زمان ترم را به خود اختصاص می دهد)
    بخش دوم : روش تحلیل و طراحی ساختیافته : در این بخش مروری بر روش تحلیل و طراحی ساختیافته سیستمها (SSADM:Structured System Analysis & Design) به عنوان یک نمونه از این روشها خواهد شد.
    بحش سوم : بررسی روشهای تحلیل و طراحی شیء گرا : در این بخش پس از مروری بر مفاهیم شیء گرایی و نیز مرور تاریخچه روشها، نگاهی مختصر به روش یکپارچه (RUP:Rational Unified Process) می شود.
    بخش چهارم : با توجه به زمان باقیمانده در صورت امکان به روشهای تهیه پیشنهاد پروژه (Proposal) و نیز درخواست پیشنهاد برای پروژه (RFP) پرداخته می شود.

    اما کتب مورد استفاده فارسی:
    در این زمینه کتابهای زیادی به فارسی منتشر شده است که به برخی از آنها اشاره می شود:

    1- مهندس صادقی، ایرج، "تجزیه و تحلیل و طراحی سیستمها" ، نشر آتیه، 1377
    کتابی که مفاهیم پایه و مبنا را به خوبی پوشش داده است.

    2- مهندس صادقی، ایرج، "مهندسی نرم افزار 1و2" , نشر گسترش علوم پایه، 1381
    آقای مهندس صادقی در این دو جلد کتاب دیگر با محور قراردادن موضوعات درسی این دو درس مطالب متنوعی را پوشش داده اند.

    3- ذاکری، بتول، "روشهای ساختیافته تجزیه و تحلیل و طراحی سیستمهای اطلاعاتی" ، سازمان مدیریت صنعتی، 77
    این کتاب، کتاب محبوب خیلی از استادان در تدریس این درس است که به شکل خوبی مفاهیم پایه و نیز مفاهیم عمومی روشهای ساختیافته را پوشش داده است.

    4- شرکت فرگوسن و سازمان مدیریت صنعتی، "متدولوژی توسعه سیستمهای اطلاعاتی"، سازمان مدیریت صنعتی، 75
    در این کتاب با این وجود که صرفا به روشهای ساختیافته توجه شده است اما به دلیل آوردن فرمها و قالب های استاندارد در تهیه گزارشات می توان به عنوان منبع خوبی مورد استفاده قرار گیرد.

    5-دکتر پارسا، سعید، "تحلیل و طراحی سیستمها (UML-SSADM) در مهندسی نرم افزار" ، جلد اول، دانشگاه علم و صنعت، چاپ ششم 1382
    دراین کتاب دامنه متنوعی از موضوعات درس شامل روشهای ساختیافته و شیء گرا پوشش داده شده است. هر چند ضمن توجه خاص به روشهای ساختیافته، مبانی تحلیل و طراحی به شکل مختصری ارائه شده است.

    6-هوریس کیوویچ، ایگور ترجمه مهندس عین ا... جعفرنژاد قمی، "تحلیل و طراحی سیستمها"، نشر علوم رایانه، ویرایش پنجم ، 1382
    در این ترجمه فارسی از این کتاب معرف ، به مطالب درس به شکل خوبی پرداخته شده است. کتاب اصلی به زبان انگلیسی از پر استفاده ترین کتابها در تدریس دوره های مشابه در دانشگاه های مختلف دنیا می باشد.

    7- ویور، فلیپ ، ترجمه همکاران سیستم، "روش تحلیل و طراحی ساختیافته SSADM" جلد 1و 2 ، نشر ویدا ، 1377
    این کتاب برای تدریس بخش دوم درس بیشتر مورد توجه است. در این کتاب کل روش SSADM به همراه یک مورد کاربری و به شکل ساختیافته ارائه شده است.

    8-روحانی رانکوهی، سید محمد تقی و امیری، یوسف، "ساخت نرم افزار شیء گرا"، انتشارات جلوه ، 1378
    این کتاب هر چند در زمینه دیگری نوشته شده است اما فصول ابتدایی آن برای پرداختن به مفاهیم شیء گرایی (OOC:Object Oriented Concepts) بسیار خوب است.

    و کتب انگلیسی:
    از بین ده ها کتاب منتشر شده در این زمینه می توان به موارد زیر اشاره کرد:

    9-
    Hawryszkiewycz, I. (2001) Introduction to Systems Analysis and Design, 5th Ed., French’s Forest, NSW: Prentice Hall.

    10-
    Kendall, K.E. and Kendall, J.E. (2002) Systems Analysis and Design, 5th. Ed., Upper Saddle River, New Jersey: Prentice-Hall.

    11-
    Shelly,G., Cashman, T., and Rosenblatt, H. (2002) Systems Analysis and Design, 5th Ed., Boston, MA.: Thomson Learning.

    12-
    Whitten, JL, Bentley, LD & Dittman, KC 2001, Systems analysis and design methods, 5th edn, Irwin/McGraw-Hill, Boston, Massachusetts.

    13-
    Jacobson, Ivar, Booch Grady & Rumbaugh James,(1999) The Unified Software Development Process, Addison-wesley

    14-
    PressmaN Roger,(1997) , Software Engineering, Mc Graw Hill

    کتاب اول چنانچه در بخش کتاب های فارسی اشاره شد، کتاب بسیار خوبی است در این زمینه که به همه مطالب به شکل مناسب اشاره شده است.
    کتاب دوم به شیوه ای جالب و خواندنی مفاهیم بسیار زیادی را در این زمینه ارائه نموده است. از نکات جالب این کتاب آوردن کاریکاتور های مرتبط با هر بخش می باشد که خواننده را به خواندن متن کتاب ترغیب می کند.
    کتاب سوم نیز از جمله کتابهای پرطرفدار در زمینه تجزیه و تحلیل سیستمها است.
    نکته جالب توجه در مورد کتاب چهارم ، شیوه ارائه مفاهیم می باشد. در این کتاب کلیه فرآیندها و فعالیتهای مرتبط با تحلیل و طراحی سیستمها، افراد مرتبط و محصولات هر بخش را در یک نمودار عمومی ترسیم کرده است و بخش به بخش آنها را توضیح می دهد.
    در کتاب پنجم از فهرست کتب انگلیسی روش یکپارچه، معروف ترین و کاملترین روش تجزیه و تحلیل شیء گرا ، معرفی و به آن اشاره شده است.
    کتاب آخر با وجودیکه می تواند به عنوان مرجعی برای درس مهندسی نرم افزار 2 تلقی شود اما می توان بخشهایی از آن را به صورت خلاصه و مقدماتی در درس مهندسی نرم افزار 1 (بویژه در بخش های مدیریت پروژه) بکار برد.

    توصیه شخصی من:
    از بین کتب فوق شخصا کتاب آقای هوریس کیوویچ (شماره 6 و یا 9) و نیز کتاب آقایان کندال، کندال (مورد شماره 10) را به عنوان کتابهایی که به صورت عمومی و بدون توجه ویژه به یک متدولوژی خاص اشاره دارد بیشتر می پسندم و برای آشنایی با روش ساختیافته SSADM کتاب آقای ویور (مورد 7) و برای روش شیء گرای RUP کتاب سه تفنگدار شیء گرایی! ( کتاب شماره 13) را توصیه می کنم.

    نکته مهم 1: نگارش کتب و سال انتشار لزوما آخرین نسخه نیست. بلکه آنی است که در اختیارم بود. برخی کتابها (علی الخصوص کتابهای لاتین فهرست) در نگارش های جدیدتر نیز منتشر شده اند.
    نکته مهم 2: این تنها منابعی است که به صورت کتاب های اختصاصی منتشر شده اند و یا ارتباط زیادی با موضوع درس دارند. در مورد بسیاری از مطالب رجوع به مقاله های خوب و نیز کتب دیگر در زمینه های نرم افزار، فنآوری اطلاعات، طراحی پایگاه داده و ... ضروری است.
    نکته مهم 3: برخلاف تصور رایج در برخی دانشگاه ها، درس مهندسی نرم افزار1و 2 را دروس حفظی نمی دانم. بلکه دروسی می دانم که همزمان با بیان مطالب علمی و آکادمیک، بایستی مثال ها و موارد کاربری را از دنیای واقع ذکر نمود و با انجام کار عملی (یک پروژه تحلیل سیستم در یک سازمان دولتی و یا خصوصی ) دانشجویان را عملا با این مفاهیم آشنا نمود.
    نکته مهم 4: اگر نتوانستید با این درس رابطه برقرار کنید و از آن خوشتان نیامد و یا نمره کم گرفتید اصلا نگران نباشید! قرار نیست همه مهندسین نرم افزار تحلیل گر بشوند!

    ادامه
      مهندسی نرم افزار , narmafzarclub
      uml


      UML
      زبان استاندارد جهانی برای مدل‌سازی

      با كمی اغماض می‌توان ادعا كرد كه در میان شاخه‌های مختلف مهندسی در هركدام كه دارای قدمت بیشتری است، همگرایی بیشتری در اتخاذ روش و ابزار برای انجام اعمال نسبتاً مشابه از میان متخصصان و متولیان آن رشته وجود دارد. به طور مثال در حال حاضر برای اجرای یك سازه در هر نقطه از دنیا، مهندسین عمران از یك روند همسان با توالی مشابه شامل: الف)تولید طرح عمرانی ب)پیاده‌سازی نقشه ج)محاسبات سازه‌ای د)اجرا استفاده می‌كنند. ولی در رشته نوپایی چون مهندسی نرم‌افزار، گاه چنان روش‌ها متفاوت است كه از دید یك ناظر خارجی، دو تیم نرم‌افزاری مختلف كه هر دو قصد تولید محصولی مشابه را دارند، دو تیم در رشته‌های متفاوت به نظر بیایند. یكی از علل وجود تمایز در تولید نرم‌افزار میزان تخصص نیرو و زمان به پیاده‌سازی می‌باشد.بدین معنا كه در نزد بسیاری از برنامه‌نویسان تولید نرم‌افزار معادل است با تولید كد. ولی از نظر بعضی دیگر تولید كد تنها بخشی از تولید نرم‌افزار است كه در بسیاری از موارد حتی منابع و زمان. اختصاص داده شده به آن در طول پروسه.تولید نرم‌افزار كمتر از50% می‌باشد.

      از یك دیدگاه كلی، پروسه تولید نرم‌افزار را می‌توان به دو بخش كلی شامل:

      الف)تحلیل و طراحی ب)پیاده‌سازی تقسیم كرد. از دیدگاه دسته اول، برنامه‌سازان، تحلیل و طراحی صرفاً فهم ذهنی مساله می‌باشد كه دقیقا پس از آن بایستی اقدام به پیاده‌سازی كرد. در حالیكه در نظر دسته دوم، فاز تحلیل و طراحی پر اهمیت‌تر از فاز دوم می‌باشد كه بایستی برای انجام آن از متدولوژی‌ها و روش‌های استاندارد استفاده كرد. UML یك زبان مدلسازی می‌باشد كه در فاز تحلیل و طراحی مورد استفاده قرار می‌گیرد.

      مدل‌سازی (Modelling) چیست؟

      مدل‌سازی یكی از تكنیك‌های ذهنی بشر می‌باشد كه نه تنها برای اهداف علمی، بلكه برای انجام امور روزمره بشر به دفعات مورد استفاده قرار می‌گیرد. مدل‌سازی به طور كلی یعنی شبیه‌سازی یك محیط با اندازه‌های متفاوت و از محیط واقعی و احتمالا مواد و مصالحی متمایز از جنس مواد و مصالح محیط مدل شده. در مدل‌سازی ابتدا اجزای محیط واقعی انتخاب شده و متناسب با هدف مورد نظر از مدل‌سازی خصوصیاتی از هریك از اجزای واقعی انتزاع می‌شود، یعنی به ازای هزیك از اجزای محیط واقعی یك موجودیت تجریدی ساخته می‌شود و با برقراری ارتباطی مشابه با ارتباط اجزای واقعی، در میان موجودیت‌های تجریدی، محیط واقعی مدل می‌شود. برای روشن شدن مثالی می‌زنیم:

      فرض كنیم قصد داشته باشیم در فاز طراحی یك اتومبیل میزان موفقیت هوا در مقابل اتومبیل در حال حركت را بسنجیم یكی از راه‌ها برای انجام این آزمایش، ساخت یك اتومبیل واقعی، راندن و سپس اندازه‌گیری مقاومت هوا می‌باشد كه انجام اینكار اگرچه ما را به هدف می‌رساند، ولی دارای هزینه بالاییست چرا كه بایستی ابتدا ماشین ساخته شود، سپس مورد آزمایش قرار گیرد.در این صورت اگر در آزمایش به نتیجه مورد نظر نرسیم، بایستی دوباره طراحی را تغییر داد، و پس از ساخت یك نمونه واقعی دیگر آزمایش را تكرار كنیم و این روند آنقدر ادامه پیدا كند تا طراحی مناسب برای اتومبیلی با خصوصیات مورد نظر شكل گیرد. می‌بینیم كه چنین روشی بسیار پرهزینه است و این هزینه هم شامل هزینه‌های اقتصادی است و هم هزینه‌های زمانی، چون علاوه بر این كه در هر مرحله آزمایش بایستی اتومبیل با صرف هزینه بالا ساخته شود، زمان ساخت آن نیز طول خواهد كشید.

      ولی متخصصان برای انجام چنین آزمایشی به مدل روی می‌آورند. یعنی یك جسم فیزیكی كوچك با خصوصیات آئرودینامیكی لحاظ شده در طراحی اتومبیل، ساخته می‌شود و با قرار دادن آن در یك تونل باد، حركت اتومبیل در فضای واقعی را شبیه سازی می‌كنند و بدین طریق میزان مقاومت هوا را می‌سنجند.

      نكات مورد توجه در این مدل‌سازی، یكی اندازه مدل و دیگری خصوصیات آن می‌باشد. مدل بسیار ساده و كوچك می‌باشد و از طرفی تنها خصوصیت آئرودینامیكی اتومبیل در مدل لحاظ می‌شود. چرا كه هدف ما از مدل‌سازی تنها بررسی خصوصیات آئرودینامیكی اتومبیل است و مدل الزاماً نبایستی از جنبه‌های دیگر، شباهتی به اتومبیل واقعی داشته باشد. مثلا در ساخت چنین مدلی به هیچ‌وجه به استحكام اجزا و یا زیبایی مدل توجه نمی‌شود چون بررسی چنین خصوصیاتی خارج از هدف این مدلسازی خاص است.

      مثال بالاتنها یك جنبه از مدل‌سازی را بیان می‌كند و آن جنبه شناختExploration می‌باشد. یعنی در مدلسازی‌های مشابه مدل‌سازی فوق‌الذكر، هدف از مدل‌سازی تنها شناخت محیط مورد مدل می‌باشد. یك جنبه دیگر از مدل‌سازی تبیین (specitication) می‌باشد. یعنی گاه برای معرفی و ارائه خصوصیات یك موجودیت واقعی یك مدل از آن ارائه می‌شود. نقشه جغرافیایی مثال خوبی است كه این جنبه از مدل‌سازی را مورد نظر دارد.

      پس می‌توان گفت كه هدف از مدل‌سازی دو چیز می‌باشد:

      الف)شناخت(exploration)
      ب)تبیین(specification)

      كه بر اساس تعریف مسئله، مدل‌سازی یكی یا هردو هدف را در نظر می‌گیرد.

      نكته دیگری كه بایستی در مدل‌سازی توجه كرد، روش (methodo logy) ساخت یك مدل می‌باشد. در بعضی موارد مدل چیز بسیار ساده‌ای است و به راحتی ساخته می‌شود. ولی در بعضی از موارد مدل خود بسیار پیچیده می‌باشد هر چند از نظر منطقی غیرممكن می‌نماید ولی می‌توان ادعا كرد كه در بعضی موارد مدل پیچیده‌تر از موجودیت واقعی است. زمینه‌ای كه این ادعا را در آن مصداق فراوان دارد، نرم‌افزار می‌باشد. بنابراین در شاخه‌ای از مهندسی كه مدل‌سازی حائز اهمیت فراوان می‌باشد قطعا روش‌های استانداردی برای ساختن مدل وجود دارد. در نرم‌افزار، روش‌های تولید نرم‌افزار مانند 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 را به عنوان قدرتمندترین زبان مدل‌سازی در دنیای نرم‌افزار مطرح ساخته است.
      ادامه