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

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

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

مساله دیگر اینکه، UML یک زبان برنامه نویسی بصری (visual) نیست، اما مدلهای آن را می‌توان مستقیماً به انواع زبانهای مختلف ارتباط داد. یعنی امکان نگاشت از مدلهای UML به کد زبانهای برنامه نویسی مثل Java و ++C وجود دارد که به این عمل “مهندسی رو به جلو” می گویند.

عکس این عمل نیز ممکن است؛ یعنی این امکان وجود دارد که شما بتوانید از کد یک برنامه زبانی شی گرا، مدلهای UML معادل آن را به دست آورید. به این عمل “مهندسی معکوس” می گویند. مهندسی رو به جلو و معکوس از مهمترین قابلیت های UML به شمار می روند، البته نیاز به ابزار Case مناسبی دارید که از این مفاهیم پشتیبانی کنند.

اگر با زبانهای مدلسازی دیگر کار کرده باشید، برای کار با UML مشکل چندانی نخواهید داشت. اما برای شروع کار با UML به عنوان اولین زبان مدلسازی، بهتر است فقط با نمودارهای خاصی کار کنید. برای این کار بهتر است ابتدا با نمودارهای مورد کاربرد و تعامل کار کنید و پس از مدتی کار و آشنا شدن با ویژگیهای اولیه آن، به یادگیری و استفاده از نمودارها و اجزای دیگر بپردازید. در مقایسه با زبانهای مدلسازی دیگر مثل ER و زبان فلوچارتی DR، زبان UML نمودارهای قوی تر و قابل فهم تری را ارائه می دهد که شامل تمامی مراحل چرخه حیات تولید نرم افزار (تحلیل، طراحی، پیاده سازی و تست) می‌شود.

یکی دیگر از ویژگی های مهم UML این است که مستقل از متدولوژی یا فرایند تولید نرم افزار می باشد و این بدان معنی است که شما برای استفاده از UML، نیاز به استفاده از یک متدولوژی خاص ندارید و می توانید طبق متدولوژی های قبلی خود عمل کنید با این تفاوت که مدلهایتان را با UML نمایش می دهید. البته مستقل بودن از متدولوژی و فرایند تولید، یک مزیت برای UML می‌باشد؛ زیرا بسیاری از انواع پروژه ها و سیستمها نیاز به متدولوژی خاص خود دارند. اگر UML در پی پیاده کردن همه اینها بر می آمد، یا بسیار پیچیده می شد و یا استفاده خود را محدود می کرد. البته متدولوژیهایی براساس UML در حال شکل گیری می باشند.

از دیگر ویژگیهای UML می توان به پشتیبانی از مفاهیم سطح بالای شی گرایی مثل Collaboration، Framework، Pattern و Component اشاره کرد. همچنین UML با استفاده از یک سری مکانیزم های گسترش پذیر امکان می دهد که بتوان زبانهای مدلسازی جدیدتری (با گسترش مفاهیم پایه ای موجود) ایجاد کرد.