PDA

View Full Version : سوال: نحوه یادگیری uml و RUP



kavayo
پنج شنبه 10 بهمن 1392, 17:25 عصر
من هم uml رو مطالعه کردم و هم rup حال من نمیدونم چطور میتنونم یک تحلیل گر و آنالیزر خوب بشم مثلا برای یادگیری برنامه نویسی خوب یک سری کتاب و آموزش هایی است که اونا را مطالعه میکنیم و برنامه نویسی رو یاد میگیریم ولی در زمینه تحلیل و طراحی نمیدونم چیکار کنم که بتونم یک پروزه رو به خوبی تحلیل کنم و مدل اون رو پیاده سازی کنم ؟واگه میشه یه اموزش یا کتابهایی رو در این زمینه که همرا با مثال هستند رو معرفی کنید

cups_of_java
پنج شنبه 10 بهمن 1392, 22:38 عصر
دوست عزیز برای طراح شدن شما خیلی باید برنامه نویسی کرده باشید
شی گرایی رو خیلی عمیق بدونید.
الگوهای شی گرایی و بقیه الگو های طراحی رو بدونید.
تمرین و تمرین کنید.
و بعد چند ماه یا سال به تبحر و تجربه برسید. این یه کار تجربیه.

کتاب هایی که دانشت رو اضافه میکنن لیستش رو تو یکی از همین تاپیک ها من نوشتم که بگردی پیدا میکنی.
تعداد این کتاب ها بعضن به ده تا میرسه و خیلی مطلب هست... اما شما با خوندن یکی دو تا خیلی از مطالب دستت میاد.
تمرکزت میخوای بیشتر رو چی باشه؟ طراحی شی گرا؟ یا متدولوژی؟

بهزاد علی محمدزاده
پنج شنبه 17 بهمن 1392, 12:05 عصر
تمرکزت میخوای بیشتر رو چی باشه؟ طراحی شی گرا؟ یا متدولوژی؟

سلام . حالا فکر کنیم من سوال پرسیدم ... روی شی گرا .

و اینکه میشه طراحی نرم افزار رو دنبال کرد با تمرکز روی شی گرا و وب ؟ ... منظورم اینه که طرف طراح نرم افزار باشه با گرایش نرم افزار های تحت وب .

من بسیار به طراحی نرم افزار علاقه مندم . در شاخه های مختلفی خودم رو محک زدم ولی در نهایت به طراحی نرم افزار رسیدم . خواستم از این تاپیک استفاده کنم و بپرسم آیا این به عنوان یک گرایش مطرح هست ؟ طراح نرم افزار با گرایش وب .

cups_of_java
پنج شنبه 17 بهمن 1392, 23:29 عصر
من یه شکی کردم! منظور شما از طراحی، طراحی گرافیکی و این ها که نیست؟ طراحی وب یه چیزه دیگست... طراحی که من گفتم یه چیز دیگه! طراحی شی گرا و طراحی کلاس ها و کد منظورم بوده.
با این تعریف، سوال شما خیلی معنی پیدا نمیکنه! شما یه طراح که باشی هر مسئله رو می تونی طراح ریزی کنی براش. حتی نرم افزار های وب! هرچند که کمتر پیش میاد یه برنامه تحت وب رو طراحی کنن. چون فریم ورک های زیادی هستن که این مسیر ها رو رفتن و شما اصولن تو قالب اون فریم ورک ها کد میزنی.

بهزاد علی محمدزاده
جمعه 18 بهمن 1392, 20:31 عصر
سلام . به خاطر این هست که من توی بخش وب دیدین و توی ذهنتون اومده که مبادا این طراحی وب منظورش هست .
شما یه طراح که باشی هر مسئله رو می تونی طراح ریزی کنی براش راستش توی ذهنم بود که آیا همچین گرایشی در طراحی نرم افزار هست یا نه . از این جهت این فکر به ذهنم رسید که راه حل های مبتنی بر مثلا وب یا نرم افزارهای محاسباتی یا مثلا بازی ها با هم متفاوت هستند . خواستم از شما بپرسم آیا همچین گرایش بندی اصلا وجود داره یا نه . یا اون هم مثل طراحی دیتابیس یه چیز عام هست . فرضا در طراحی دیتابیس که من کمی آشنا هستم (رابطه ایی), بر اساس مساله طراحی انجام میشه و دیگه وب و ... معنی نداره . گرچه شاید کسی در یه زمینه ی خاصی بیشتر کار کرده باشه و مسائل اون رو بهتر تشخیص بده و راه حل برای ارائه بده .


هرچند که کمتر پیش میاد یه برنامه تحت وب رو طراحی کنن. پس طراحی هایی که ما انجام میدیم چه هستند ؟ شاید من مفهوم طراحی نرم افزار رو خوب نمی دونم . درک خودم رو میگم اگر غلط بود برام اصلاح کنید ممنون میشم .

فرض کنیم این فروم رو قرار باشه شما طراحی کنید ( شی گرا ) . بعد از نیازمندی و قبل از کد نویسی کارهایی رو انجام میدین . مثل مشخص کردن کلاس ها و روابط بین اونها . دیاگرام هایی رو مثل Sequence رسم می کنید . مسلما باید بدونید برای چه بستری دارید طراحی انجام میدین تا راه حل های اون رو بشناسید . مثلا دات نت یا جاوا و ...

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

cups_of_java
شنبه 19 بهمن 1392, 10:55 صبح
آیا همچین گرایشی در طراحی نرم افزار هست یا نه
توی دانشگاه ها و آموزشگاه های خارجی بعضن یه همچین گرایش های ریزی هست که تمرکز روی یک سری سیستم های خاص (مثلن وب) داره. اما چیز مهمی نیست... اصل داستان یه چیزه... و شما بعد چند سال توی هر دامنه ای که کار کنی جزییاتش میاد دستت و شرایط اون فضا رو یاد میگیری.


فرض کنیم این فروم رو قرار باشه شما طراحی کنید ( شی گرا ) . بعد از نیازمندی و قبل از کد نویسی کارهایی رو انجام میدین
موضوع اینه که شما واسه لباسی که الگوش دراومده و بارها ازش دوخته شده و جواب گرفتی دوباره الگو در نمیاری که!!! برای یک سری مسائل مثل همین فروم ها و فروشگاه ها و ... خلاصه خیلی برنامه های وبی دیگه در عمل فریم ورک ها ابزار های آماده زیادی دراومده که بر اساس همین الگو و طراحی ها نوشته شدن بعضن. خب شما میری تو قالب اونا و کارت رو سریع آماده میکنی بدون طراحی حتی!
نکته اینه که خیلی برنامه های وب منطق شناخته شده ای دارن و چیز خاصی واسه طراحی ندارن. مسئله برات شناخته شدست...

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

بهزاد علی محمدزاده
یک شنبه 20 بهمن 1392, 00:41 صبح
ممنون از پاسخت . من مباحثی رو که جز ملزومات پایه ایی هستند و در دوران دانشجویی تقسیم بندی کردم و در بازه های زمانی یه مبحث رو تا مرحله قابل قبولی یادگرفتم و سراغ مبحث بعدی رفتم .مثلا وقتی به دیتابیس رسیدم . منابع خوبش رو شناسایی کردم و چند جلد کتاب در مورد طراحی و مفاهیم دیتابیس مطالعه کردم . بعدش DBMS ی رو انتخاب کردم و دوره های آموزشی رو هم گذروندم و الان بالاخره از عهده طراحی ها و پیاده سازی های پروژه های کوچکی بر میام برای طراحی شی گرا مفاهیم پایه ایی رو کار کردم . و طراحی های کوچکی رو هم انجام میدم . اما در طراحی دیتابیس می دونم چطور مساله رو بررسی کنم . طراحی رو از کجا شروع کنم . چطور مرحله به مرحله پالایشش کنم تا به یه طراحی پخته برسم . تکنیک های رو هم از منابعی که کار کردم یاد گرفتم .

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

گاهی یه کلاسم چند تا وظیفه رو به عهده داره . من نمی دونم چند تا وظیفه رو می تونم بهش بدم ؟ یه کلاس من چقدر کد می تونه داشته باشه ؟

البته که بصورت پراکنده بالاخره مقالاتی دیدم در این زمینه ها . اما سوالم این هست که غیر از کسب تجربه و تمرین و تمرین و تمرین . و دیدن کد های دیگران . آیا خط سیری هست که من بدونم و اونها رو به ترتیب یادبگیرم ؟

به عنوان مثال من که مفاهیم و کار کردم . الان الگوی های طراحی رو باید بشناسم و مثلا مرحله بعد اصول طراحی مثل SOLID و ...

من این عنوان ها رو می خوام . اگر حوصله منبع معرفی کردن نداشتید منابعش رو خودم پیدا می کنم . ( می بینی جستجو بلدم ... نه خدایی چند تا سوال کننده داشتین که گوگل بلده ؟ اصلا با این حرفم روحیه دادم ؟ تازه Review های آمازون رو هم در مورد کتاب ها می خونم !!! خیلی ها ... یکی داره سوال می پرسه که هم گوگل بلده هم آمازون ! تازه کانال های ویدیویی هم ... بگذریم) .

آیا امکانش هست برای من یه خط ترسیم کنید که بتونم طراحی شی گرا رو خوب یادبگیرم ؟ ممنون .

cups_of_java
یک شنبه 20 بهمن 1392, 09:57 صبح
من یه سری کتاب رو توی همین فروم قدیما لیست کرده بودم در همین زمینه... ببین می تونی پیداش کن. بازم تا شب یه لیست برات میزارم وقتی خونه بودم.
اما به طور کلی تو باید تحلیل رو یاد بگیری...
و از همه بیشتر طراحی شی گرا رو
همزمان با یاد گیری الگو های طراحی شی گرا باید اصول و مفاهیم شی گرا رو یاد بگیری... حدود چندین اصل هست که برات می فرستم. اونا خیلی تاثیر داره رو اینکه بتونی متد ها و کارکرد ها رو بین کلاس ها تقسیم کنی.... کلاس ها رو بزرگ و کوچیک کنی... و خب نهایتن تمرین و دیدن طرح و کد های شناخته شده دیگران
ضمنن توی طراحی خیلی نباید به فکر هندل کردن خطا و .... مسایل ریز در سطح کد باشی.

بهزاد علی محمدزاده
یک شنبه 20 بهمن 1392, 21:14 عصر
فکر کنم این کتاب ها رو گفتین :


کتاب Implementation Patterns اقای Beck
...
بعد باید اصول شی گرایی رو بیشتر مطالعه کنید. بحث های اقای Robert Martin در مقاله هاش توی اینترنت یا در کتابی مثل Applying UML and Patterns از آقای Craig Larman دید خوبی بهتون می ده.

بعد به طور موازی شروع کنید به یاد گیری الگو های شی گرایی در طراحی برنامه که کتاب فوق العاده (یکی از شاهکارهای خلق شده در دانش مهندسی نرم افزار) Design Patterns: Elements of reusable software از GangOfFour رو بخونید. کتاب های اقای Buschman معروف به POSA هم خوب هستند. نهایتن و کمکم با دید سطح بالای شی گرایی وکاربردش در تحلیل و طراحی نرم افزار (سطح بالا تر از برنامه نویسی) آشنا شید و کاربردش در مهندسی نرم افزار شی گرا! برای این منظور باید کتاب هایی در زمینه متدولوژی های نرم افزاری مثل این لیست رو بخونید!
کتاب تحلیل و طراحی اقای Booch (ده ها کتاب خوب در این زمینه هستند)
کتاب های آقای Martin Fowler (برای آشنایی با Refactoring و ...)
کتاب های اقای Scott Ambler و

cups_of_java
دوشنبه 21 بهمن 1392, 11:13 صبح
آره... اینا حدود 10 تا کتاب خیلی معروف و کلاسیک توی این زمینه هست... اصول شی گرایی رو هم برات میزارم pdfاش رو

cups_of_java
دوشنبه 21 بهمن 1392, 11:16 صبح
بیا ایناهاش (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&ved=0CEoQFjAD&url=http%3A%2F%2Fuserpages.umbc.edu%2F~tarr%2Fdp%2 Flectures%2FOOPrinciples.pdf&ei=KI74UoW1Ic7eoATTkYDoDQ&usg=AFQjCNEZVsC7KFPx3AkZdHjkPjfGDAV0FQ&sig2=ZPsae0B3eFnjj8m_5fh2Tg&bvm=bv.60983673,d.cGU)

و اینم ببین (http://javarevisited.blogspot.com/2012/03/10-object-oriented-design-principles.html)

kavayo
دوشنبه 21 بهمن 1392, 18:44 عصر
من میخوام در کنار برنامه نویسی یک تحلیل گر خوب هم باشم مثلا اگه یه سازمان نیاز به برنامه ای داشته باشه بتونم اون رو به خوبی تحلیل کنم و سپس برنامه اون رو که تخصصش رو دارم بتونم بنویسم من rup رو مطالعه کرده ام ولی تحلیل هایم را نمیتوانم عملی کنم ایا یه سری نمونه کار شده خوب با rup وجود نداره که من از اون الگو بگیرم آخه کتاب و مثال در زمینه rup خیلی کمه.

بهزاد علی محمدزاده
دوشنبه 21 بهمن 1392, 20:19 عصر
خیلی لطف کردین . این اصول و دنبال می کنم . توی جستجو هام به بعضی از این منابع رسیده بودم اما الان خیلی احساس نیاز می کنم .

cups_of_java
سه شنبه 22 بهمن 1392, 15:02 عصر
من میخوام در کنار برنامه نویسی یک تحلیل گر خوب هم باشم مثلا اگه یه سازمان نیاز به برنامه ای داشته باشه بتونم اون رو به خوبی تحلیل کنم و سپس برنامه اون رو که تخصصش رو دارم بتونم بنویسم من rup رو مطالعه کرده ام ولی تحلیل هایم را نمیتوانم عملی کنم ایا یه سری نمونه کار شده خوب با rup وجود نداره که من از اون الگو بگیرم آخه کتاب و مثال در زمینه rup خیلی کمه.

تحلیل کردن نیازمند یه سری مهارت های غیر نرم افزاریه. شما باید بتونی خوب یه مسله رو بشناسی. برای این کار روش های زیادی هست... باید از مهندسی صنابع بدونی... بیشتر تحلیل گر ها مهندس صنایع هستن.
برای تحلیل سعی کن Analysis Patterns رو بخونی یا هر کتابی راجع به Analysis , Requirements Capturing ...
کتاب معروف Structured Analysis and Design هم هست که خیلی تو این زمینه مطلب داره

p.mohammad
چهارشنبه 09 مهر 1393, 15:52 عصر
سلام یکی هست که ترتیب کل نمودار های uml رو نام ببره ؟ میخوام شروع به یاد گیری کنم و لازمه بدونم که چند تا نمودار هست و به چه ترتیبی باید طراحی شوند کلی سرچ کردم اما هیچی دستگیرم نشد ...:اشتباه::متفکر:

hamed_m
پنج شنبه 01 آبان 1393, 19:01 عصر
همونطور که دوستان گفتند باید دید Usecase یا BPM طراحی و برنامه ریزی میکنید یا مثلا BI میخواهید کار کنید. در مجموع مطالب زیادی برای یادگیری هست.
http://camunda.org/ برای BPM
و http://www.uml.org/ برای UML
اگر به یادگیری از راه استفاده از نرم افزار علاقه داشته باشید میتونید http://www.visual-paradigm.com/ رو امتحان کنید. البته microsoft visio هم عالیه و 2013 اش UML 2.0 رو ساپورت میکنه.
یه مقدار دات نت یا جاوا همراه شیء گرایی هم کار کنید بد نیست.
ببخشید رفرنس پارسی ندارم.

dalvand
دوشنبه 15 دی 1393, 11:28 صبح
با سلام می شه بفرمایید چرا در ویژووال استودیو نمودار فعالیت، ابزار time eventy وجود ندارد؟
میشه راهنمایی بفرمایید در کدام نرم افزار .....

hamed_m
جمعه 17 بهمن 1393, 17:10 عصر
با سلام می شه بفرمایید چرا در ویژووال استودیو نمودار فعالیت، ابزار time eventy وجود ندارد؟
میشه راهنمایی بفرمایید در کدام نرم افزار .....

از دید طراحی نرم افزار معمولا تایمر ها بعنوان یک برنامه مستقل (ممکنه بخشی از برنامه اصلی هم باشند) طراحی و زمان اجراشون معلوم و تسک مربوطه ایجاد میشه. اما اگر مشخصا در ویژوال استودیو یک تایمر لازم دارید بهتره در بخش مربوطه سئوال کنید.

AminSol
جمعه 15 خرداد 1394, 20:29 عصر
تو این سایت چند نمونه UML کامل و جالب با همه نمودارهاش هست. کمکتون میکنه
www.HamiProje.com (http://www.HamiProje.com)