
آموزش (UML) و مهندسی نرم افزار
آموزش U-M-L UML ومهندسی نزم افزار یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم.
UML چیست؟
UML سرنام سه کلمه ی Unified Modeling Language (زبان مدل سازی یکپارچه) می باشد. UML یک زبان مدلسازی برای مدل کردن اشیای دنیای واقعی است. این مدل سازی در مراحل اولیه ی تولید و توسعه ی سیستم انجام می شود. کاربرد UML با توسعه بر اساس متدولوژی شی گرا گره خورده است. هدف UML فراهم کردن ابزارهایی برای تجزیه و تحلیل، طراحی و پیاده سازی سیستم های مبتنی بر نرم افزار برای معماران سیستم، مهندسین نرم افزار و توسعه دهندگان نرم افزار است. کاربرد UML فقط به صنعت نرم افزار محدود نمی شود. با استفاده از UML می توان هر فرآیند تجاری را مدل کرد.
UML یک ترکیب و یکپارچگی از سه متدولوژی طراحی و تجزیه و تحلیل شی گرا است:- متدلوژی آقای Grady Booch برای تعریف یک گروه از اشیا و رابطه ی بین آنها
- تکنیک های مدلسازی اشیای آقای James Rumbaugh که به OMT نیز معروف اند.
- متدلوژی آقای Ivar Jacobson که بر اساس use case ها بنا شده است.
یادگیری UML و استفاده ی درست از نمودارهای آن و فهمیدن آن نمودارها، برای همه ی کسانی که قصد دارند به طور جدی در صنعت نرم افزار (بویژه بر اساس معماری شی گرا) فعالیت کنند بسیار حیاتی ست. ابزارهای زیادی برای مدل کردن سیستم بر اساس نمودارهای UML وجود دارند. بعضی از این ابزارها عبارت اند از: IBM Rational Rose و یا Visual Paradigm for UML.
مهندسی نرم افزار چیست؟
مهندسی نرم افزار به عنوان فرایندی که نیازهای کاربر را تجزیه و تحلیل می کند، تعریف می شود و این یعنی نیازهایی مانند طراحی، ساخت و تست کردن نرم افزار ها را برآورده می کند. بیایید تعریف های مختلف مهندسی نرم افزار را بررسی کنیم:
- در استاندارد 1990-610.12 مهندسی نرم افزار، به عنوان یک اپلیکیشن سیستماتیک و منظم، که یک روش قابل اندازه گیری برای development و operation و نگهداری نرم افزار است، تعریف می شود.
- آقای فریتز بائر هم آن را به عنوان "ایجاد و استفاده از اصول استاندارد های مهندسی" تعریف کرده است. این موضوع به شما کمک می کند تا از نظر اقتصادی نرم افزاری را بدست بیاورید که قابل اعتماد باشد و به طور موثرتری روی ماشین های واقعی کار کند.
- آقای بوهم مهندسی نرم افزار را " کاربرد واقعی دانش علمی در طراحی خلاقانه و ساخت برنامه های رایانه ای تعریف می کند، که شامل مستندات مرتبطی است که برای develop کردن و operate کردن و نگهداری آنها لازم است."
UML چیست و چه کاربردی در مهندسی نرمافزار دارد؟
UML مخفف Unified Modeling Language و زبانی استاندارد برای مدلسازی و نمایش ساختار یا رفتار سیستمهای نرمافزاری است. با استفاده از نمودارهای UML میتوان بخشهای مختلف یک سیستم را پیش از پیادهسازی بررسی کرد و ارتباط میان اجزای آن را به شکل بصری نمایش داد. برای مثال، پیش از توسعه یک سامانه فروشگاهی میتوان نقش کاربران، ساختار کلاسها و نحوه تعامل اجزای سیستم را مدلسازی کرد تا درک مشترکتری از طراحی به وجود آید.

UML در تحلیل، طراحی و مستندسازی نرمافزار کاربرد دارد و میتواند ارتباط میان اعضای یک تیم توسعه را سادهتر کند. نمودارها به برنامهنویسان، تحلیلگران و طراحان کمک میکنند درباره ساختار موردنظر سیستم گفتوگو کنند، بدون آنکه لازم باشد تمام جزئیات را تنها از روی کد بررسی کنند. البته UML جایگزین کدنویسی یا تصمیمگیری معماری نیست؛ بلکه ابزاری برای نمایش و بررسی مدل سیستم است که میزان استفاده از آن باید متناسب با نیاز پروژه انتخاب شود.
انواع نمودار UML و کاربرد آنها در طراحی سیستم
هر نمودار UML برای نمایش جنبه مشخصی از یک سیستم طراحی شده است. برای مثال، Class Diagram ساختار کلاسها و ارتباط میان آنها را نشان میدهد، در حالی که Sequence Diagram ترتیب تعامل میان اجزای سیستم را در یک سناریوی مشخص نمایش میدهد. این تفاوت به طراح کمک میکند هر مسئله را از زاویه مناسب بررسی کند. انتخاب نمودار مناسب به این بستگی دارد که هدف، شناخت ساختار ثابت سیستم باشد یا بررسی رفتار آن در جریان اجرای یک فرایند.
نمودارهای دیگری مانند Use Case، Activity و State Machine نیز برای نمایش جنبههای متفاوت سیستم استفاده میشوند. Use Case تعامل کاربران با قابلیتهای سیستم را توصیف میکند، Activity Diagram جریان فعالیتها را نمایش میدهد و State Machine Diagram تغییر وضعیت یک موجودیت را مدلسازی میکند. همچنین نمودارهای Component و Deployment میتوانند در نمایش اجزای نرمافزار و نحوه استقرار آنها مفید باشند. شناخت این نمودارها به توسعهدهندگان کمک میکند اطلاعات طراحی را به شکلی مناسبتر ثبت و منتقل کنند.
استفاده از UML برای تحلیل نیازمندیها و ارتباط اجزای نرمافزار
پیش از پیادهسازی یک سیستم، لازم است نیازمندیها و تعاملهای اصلی آن بهدرستی درک شوند. نمودارهای UML میتوانند به نمایش نقش کاربران و ارتباط آنها با قابلیتهای نرمافزار کمک کنند. برای مثال، در یک سامانه مدیریت سفارش، میتوان مشخص کرد مشتری چه عملیاتی انجام میدهد و سیستم در پاسخ به هر درخواست چه رفتاری دارد. این مدلسازی باعث میشود اعضای تیم بتوانند درباره محدوده قابلیتها و رفتار موردانتظار سیستم شفافتر گفتوگو کنند.

در مرحله طراحی، نمودارهای ساختاری و رفتاری به بررسی ارتباط میان کلاسها، اجزای نرمافزار و توالی عملیات کمک میکنند. این کار میتواند پیش از شروع پیادهسازی، برخی ابهامها یا وابستگیهای مهم را آشکار کند. برای نمونه، بررسی Class Diagram ممکن است نشان دهد مسئولیتهای یک کلاس بیش از حد گسترده شدهاند یا ارتباط میان چند موجودیت به توضیح بیشتری نیاز دارد. استفاده هدفمند از UML میتواند درک طراحی را سادهتر کند و مستنداتی قابلاستفاده برای توسعه و نگهداری سیستم فراهم آورد.
این آموزش UML برای چه کسانی مناسب است؟
این دوره برای برنامهنویسان، تحلیلگران و افرادی مناسب است که میخواهند روشهای مدلسازی نرمافزار را بهصورت ساختارمند یاد بگیرند. سطح متوسط آموزش برای کسانی مفید است که با مفاهیم اولیه توسعه نرمافزار آشنایی دارند و قصد دارند درک بهتری از نحوه نمایش ساختار و رفتار سیستمها پیدا کنند. آشنایی با UML میتواند هنگام طراحی سیستمهای شیگرا و گفتوگو درباره تصمیمهای فنی در تیمهای توسعه کاربرد داشته باشد.
در این آموزش با انواع مختلف نمودارهای UML آشنا میشوید و یاد میگیرید هر نمودار برای نمایش چه جنبهای از سیستم مناسب است. موضوعاتی مانند Class Diagram، Sequence Diagram، Package Diagram و Deployment Diagram به درک ساختار سیستم کمک میکنند؛ در حالی که نمودارهای رفتاری برای بررسی تعاملها و جریان فعالیتها کاربرد دارند. این دانش میتواند به شما کمک کند پیش از پیادهسازی، ساختار نرمافزار را روشنتر بررسی کنید و مستندات فنی قابلفهمتری برای پروژههای خود تهیه کنید.
سرفصل مطالب آموزش ویدئویی UML
فصل اول: مقدمه
- مقدمه
- UML چیست؟
- روش های استفاده از UML
- استفاده از UML به عنوان یک نمودار
- استفاده از UML به عنوان یک نقشه
- استفاده از UML به عنوان یک زبان برنامهنویسی
- بررسی معماری Model Driven Architecture
- معرفی نمودارهای UML
- بررسی UML قانونی
- استفاده از UML کافی نیست
- جمع بندی
فصل دوم: بررسی فرآیندهای توسعه نرمافزار
- مقدمه
- معرفی فرآیند آبشاری
- معرفی فرآیند Iterative قسمت اول
- معرفی فرآیند Iterative قسمت دوم
- معرفی فرآیند Iterative قسمت سوم
- معرفی روش Predictive Planning و Adaptive Planning قسمت اول
- معرفی روش Predictive Planning و Adaptive Planning قسمت دوم
- معرفی فرآیندهای چابک
- معرفی Rational Unified Process
- استفاده از یک فرآیند در یک پروژه
- معرفی Pattern ها
- معرفی Requirements Analysis
- معرفی Design
- معرفی Documentation
- درک هرچه بهتر Legacy Code ها
- جمع بندی
فصل سوم: معرفی و بررسی Class Diagram
- مقدمه
- معرفی Attribute ها
- معرفی Association
- معرفی Multiplicity
- معرفی Bidirectional Association
- معرفی Operation
- معرفی Generalization
- معرفی Note ها و Comment ها
- معرفی Dependency
- معرفی Constraint Rule ها
- جمع بندی
فصل چهارم: بررسی و معرفی Sequence Diagram
- مقدمه
- بررسی نمودار Centralized Sequence Diagram
- بررسی نمودار Distributed Sequence Diagram
- ایجاد کردن و حذف کردن Participant ها
- بررسی Loop ها و Conditional ها و سایر موارد قسمت اول
- بررسی Loop ها و Conditional ها و سایر موارد قسمت دوم
- بررسی Synchronous Call ها و Asynchronous Call ها
- چه زمانی باید از Sequence Diagram ها استفاده کنیم؟
- استفاده از Sequence Diagram ها در ویژوال استودیو
- جمع بندی
فصل پنجم: مباحث پیشرفته مربوط به Class Diagram ها
- مقدمه
- کلید واژه ها
- معرفی Responsibility ها
- معرفی Static Operation ها و Attribute ها
- معرفی Aggregation و Composition
- معرفی Derived Property ها
- معرفی Interface ها و Abstract Class ها قسمت اول
- معرفی Interface ها و Abstract Class ها قسمت دوم
- معرفی Read-Only و Frozen
- معرفی Reference Object ها و Value Object ها
- معرفی Qualified Association ها
- معرفی Classification و Generalization
- معرفی Association Class
- معرفی Template (Parameterized) Class قسمت اول
- معرفی Template (Parameterized) Class قسمت دوم
- معرفی Enumeration ها
- معرفی Active Class
- معرفی Visibility
- بررسی Class Diagram در ویژوال استودیو
- جمع بندی
فصل ششم: بررسی Object Diagram ها
- مقدمه چه زمانی از Object Diagram ها استفاده کنیم؟ جمعبندی
فصل هفتم: معرفی Package Diagram ها
- مقدمه
- روشهای مختلف نشان دادن Package ها قسمت اول
- روشهای مختلف نشان دادن Package ها قسمت دوم
- بررسی Package ها و Dependency ها
- بررسی Package Aspect ها
- پیاده سازی Package ها
- چه زمانی از Package Diagram استفاده کنیم؟
- استفاده از Package Diagram در ویژوال استودیو
- جمه بندی
فصل هشتم: بررسی Deployment Diagram ها
- مقدمه نشان دادن Deployment Diagram ها چه زمانی از Deployment ها استفاده کنیم؟ جمع بندی
فصل نهم: بررسی Use Case ها
- مقدمه
- بررسی Use Case Diagram
- بررسی محتوای یک Use Case قسمت اول
- بررسی محتوای یک Use Case قسمت دوم
- بررسی Use Case Diagram
- بررسی Use Case ها و Feature ها
- چه زمانی از Use Case ها استفاده کنیم؟
- بررسی Use Case Diagram ها در ویژوال استودیو
- جمعبندی
فصل دهم: بررسی State Machine Diagram ها
- مقدمه
- یک مثال از State Machine Diagram
- بررسی Internal Activity ها
- بررسی Activity State ها
- بررسی Superstate ها
- بررسی Concurrent State ها
- بررسی Nested Switch
- بررسی State Pattern
- بررسی State Table
- چه زمانی از State Diagram ها استفاده کنیم؟
- جمع بندی
فصل یازدهم: بررسی Activity Diagram
- مقدمه
- یک مثال از Activity Diagram
- بررسی روش Decompose کردن یک Action
- بررسی Activity Diagram تغییر یافته
- بررسی Partition ها
- بررسی Signal ها قسمت اول
- بررسی Signal ها قسمت دوم
- بررسی Token ها
- بررسی Flow ها و Edge ها
- بررسی Pin ها و Transformation ها
- بررسی Expansion Region ها
- بررسی Flow Final
- بررسی Join Specification ها
- چه زمانی از Activity Diagram استفاده کنیم؟
- جمعبندی
فصل دوازدهم: بررسی Communication Diagram
- مقدمه
- بررسی Centralized Communication Diagram
- بررسی Nested Decimal Communication Diagram
- چه زمانی از Communication Diagram استفاده کنیم؟
- جمع بندی
فصل سیزدهم: بررسی Composite Structur ها
- مقدمه
- بررسی Composite Interface
- بررسی View داخلی مربوط به یک Component
- چه زمانی از Composite Structure ها استفاده کنیم؟
- جمعبندی
فصل چهاردهم: بررسی Component Diagram
- مقدمه
- بررسی Notation مربوط به Component ها
- یک مثال از Component Diagram
- چه زمانی از Component Diagram استفاده کنیم؟
- جمع بندی
فصل پانزدهم: بررسی Collaboration ها
- مقدمه
- یک مثال از یک Collaboration
- یک رخداد Collaboration
- چه زمانی از Collaboration ها استفاده کنیم؟
- جمع بندی
فصل شانزدهم: بررسی Interaction Overview Diagram
- مقدمه معرفی Interaction Summary Diagram چه زمانی از Interaction Overview Diagram استفاده کنیم؟ جمع بندی
فصل هفدهم: بررسی Timing Diagram
- مقدمه
- استفاده از Timing Diagram برای نشان دادن State ها به عنوان خطوط
- چه زمانی از Timing Diagram استفاده کنیم؟
- جمعبندی
فصل هجدهم: جمعبندی
- جمعبندی







