کارگاه مدلسازی.
Download
Report
Transcript کارگاه مدلسازی.
استاد :مهندس رضایی
دانشگاه جامع علمی کاربردی
نیمسال اول 90-91
کارگاه مدلسازی
فصل 1
مبانی و دالیل ساخت مدلها
مدل نما یا تجسمی از یک واقعیت است.
1دلیل برای مدلسازی
مدل را می سازیم تا درک بهتری از سیستمی که قصد ساخت آن را داریم داشته باشیم(.ساخت سیستم
با کیفیت بهتر)
اهداف مدلسازی
.1
مدلها به ما کمک می کنند تا یک سیستم را آنطور که هست و یا آنطور که می خواهیم باشد ،مشاهده
کنیم.
.2
مدلها به ما امکان مشخص کردن رفتار و ساختار یک سیستم را می دهند(.منظور از رفتار خدمتی
است که سیستم قرار است ارائه دهد و منظور از ساختار این است که سیستم از چه اجزایی ساخته
شده و این اجزا به چه صورت به هم مرتبط شده اند.
.3
مدلها به ما یک قالبی رائه می دهند که توسط آن قالب می توانیم محصول را بهتر بسازیم.
.4
مدلها تصمیماتی را که ما می گیریم مستند می کنند.
*نکته:
ما برای سیستم های پیچیده مدل می سازیم چرا که درک و پیاده سازی تمام پیچیدگی های
آن برای ما کار مشکلی است.
* انتخاب مدلهایی که برای ساخت یک محصول استفاده می شوند ،کاملا با نحوه ی ساخت
محصول مرتبط است.
هر مدل می تواند در سطوح دقت مختلفی ساخته شود.
معمولا در مراحل اولیه ،مدلها به صورت کلی ساخته می شوند و سپس بر مبنای آنها طی
مراحلی مدلهای تفصیلی ایجاد می شوند.
مدلهای مناسب ،مدلهایی هستند که تطابق کامل با واقعیت دارند(.تطابق مدل با سیستمی که
در نهایت تولید می شود).
هیچ مدلی به تنهایی غالبا ا برای ساخت یک محصول کفایت نمی کند و در اکثر اوقات ،ما
مجبوریم مدلهای مختلفی را ایجاد کنیم(.مجموعه ای از مدلهای مختلف برای بخشهای
مختلف سیستم)
در نرم افزار دو الگوی عمده برای ساخت مدل و جود دارد که عبارتند از :
.1
Structuralساختاری
.2
Objet Orientedشیء گرایی
در مدل ساختاری(ساخت یافته) نرم افزار از عناصر ریشه ای به نام ( procedureماژول یا
)functionساخته می شود و تمرکز اصلی در این نوع مدلسازی بر مبنای جریان داده ها می باشد
و مشکل این روش این است که در هنگام تغییرات نیازمندیها و بزرگ شدن سیستم پشتیبانی و
نگهداری سیستم بسیار مشکل می شود و از طرف دیگر به دلیل عدم وجود قطعات پایه ای قابل
استفاده مجدد یا classها و componentها فرآیند تولید ،کندتر می باشد و مدلسازی شیءگرا،
تأکید بر روی classها و رفتار آنهاست و تولید نرم افزار با استفاده از این نوع مدلسازی سریعتر و
باکیفیت مناسب تری انجام می شود.
زبان UMLزبانی است برای ساخت مدلهای رفتاری و ساختاری شیءگرا که عمدتا ا در مدلسازی
نرم افزار استفاده شده ،اما بعضا ا می تواند در مدلسازی سایر محصولت نیز به کار گرفته شود.
فصل 2
مروری بر زبان UML
UMLزبانی است که از آن برای مدلسازی استفاده می شود و جزئی از روال تولید یا process
تولید نرم افزار است .زبان UMLبا processهای متفاوتی از قبیل فرآیند RUPو تا ح ّدی XP
همگونی دارد و به عبارت کلی وابسته به یک فرآیند خاص نیست اما اگر بخواهیم در رابطه با تطابق
UMLبا پروسس ها یا فرآیندهای تولید نرم افزار نکته ای را یادآوری کنیم ،این مورد است که
UMLبیشترین همگونی را با processهای usecase( usecase drivenمحور) معماری
محور ،تکراری و افزونه ،بیشترین تطابق را دارد.
( UMLبا waterfallاستفاده نمی شود).
UMLزبانی است برای مشاهده ،مشخص کردن ،ساختن و مستندسازی سیستم های مختلف
بخصوص سیستم های نرم افزاری.
عناصر سازنده ی زبان : UML
.1
( Thingsمؤلفه ها یا اشیاء)
.2
( Relationshipsارتباطات)
.3
( Diagramsنمودارها)
Thingsبه چهار دسته تفکیک می شود:
Structural Things .1اشیاء ساختاری
Behavioral Things .2اشیاء رفتاری
Grouping Things .3اشیاء گروه بندی شده
Annotation Things .4اشیاء آگاه کننده
Structural Things .1
یعنی آنها غالبا ا قسمت. هستندUML اشیاء ساختاری همانند اسامی در مدلهای
.) مدل ما را می سازندstatic(ایستای
.ها تغییر کندactor ) می تواند بسته به نوع نقش یا رفتارdynamic( مدل پویا
هفت نوع مختلف اشیاء ساختاری،UML در زبان.این پویایی مدل را می رساند
: وجود دارند که به ترتیب عبارتند از
Class .1
Interface .2
Collaboration .3
Use cases .4
active classes .5
components .6
nodes .7
Structural Things
Structural things are the nouns of UML models. These
include classes, interfaces, collaborations,use cases,
active classes, components, and nodes.
.1
Class
Classتوصیفی از مجموعه ای از اشیاء است که دارای ویژگی ها ،عملگرها ،ارتباطات و مفاهیم یکسان
هستند.
یک Classمی تواند یک یا بیش از یک ( interfaceرابطه) را پیاده سازی نماید .از لحاظ گرافیکی
نمایش یک Classبه صورت زیر است که در آن از یک BOXکه به قسمتهای مختلفی تفکیک شده
استفاده می کند .بالترین قسمت Boxنشان دهنده ی نام ،Classقسمت بعدی نشان دهنده ی
attributeها یا ویژگی های Classو قسمت بعد نشان دهنده ی رفتارها و توابع Classمی باشد.
( Interface .2واسط)
مجموعه ای از عملیاتی است که مشخص کننده ی سرویسی از یک classیا componentمی
باشد .نمایش interfaceدر زبان UMLبا یک دایره می باشد که در زیر آن نام interface
ذکر می شود.
( Collaboration .3همکاری)
مجموعه ای از نقش ها و سایر اجزاست که با کمک یکدیگر و در کنار هم رفتاری را انجام می دهند
که کاملتر و یا جامعتر از رفتار تک تک آن اجزاست .نمایش Collaborationدر زبان UML
با یک بیضی نقطه چین همانند مثال زیر است.
:Usecase .4
Usecaseها توصیف مجموعه ای از عملیات هستند که سیستم برای رسیدن به یک نتیجه ی مشخص و
در ارتباط با actorهای خاصی انجام می دهد.
از Usecaseها برای نشاند دادن ساختار اشیاء رفتاری در یک مدل استفاده می کنیم .منظور این است که
Usecaseنشان دهنده ی نحوه ی انجام رفتارهای مهم در حوزه ی مورد نظر می باشد .نمایش
Usecaseبا یک بیضی است که در داخل آن نام Usecaseثبت می شود.
سه مؤلفه بعدی عبارتند از :
Active classeکلسهای فعال
Componentsمؤلفه ها
Nodesنودها
که هر سه آنها از لحاظ شکل شبیه classها بوده و در زیر به شرح آنها می پردازیم.
Active classe .5کالسهای فعال :
Classماهیت اجرایی ندارد abstract(.مجرد است).
Class ,Active classeی است که objectهایی از آن کلس وجود دارد که یک یا بیش از یک
Processو یا threadاز آنها در حال اجرا می باشد .کلس اکتیو همانند classeبا یک boxنشان
داده می شود که خطوط مرزی آن قطورتر رسم می شود.
( Components .6مؤلفه ها):
یک ،componentیک جزء فیزیکی و قابل تعویض از یک سیستم است که مجموعه ای از سرویس ها
را ارائه می دهد.
Componentماهیت اجرایی دارد و می تواند خود شامل مجموعه ای از classها باشد .در زبان
component ، UMLرا با شکل زیر نمایش می دهند.
Node .7
Nodeیک مؤلفه ی فیزیکی بوده که در هنگام اجرای یک سیستم وجود دارد و حاوی عناصر
سخت افزاری لزم برای محاسبه از قبیل cpuو memoryمی باشد.
Computerو routerهر کدام یک نود هستند(.سخت افزارهایی که نرم افزارها روی آنها
اجرا می شوند نود هستند ).نمایش نود با یک مکعب مربع می باشد که نام نود در آن ذکر می
گردد.
مؤلفه های رفتاری
اشیاء رفتاری جزء پویا ( )Dynamicزبان UMLبوده و در حقیقت نشان دهنده ی افعال
مدل ما می باشد و بیانگر رفتار در زمان و مکان مشخصی هستند .دو نوع اساسی از اشیاء
رفتاری وجود دارند که عبارتند از :
( Interaction .1فعل و انفعال ،تبادل)
یک رفتاری است که شامل مجموعه ای از messageهاست که بین مجموعه ای از اشیاء
برای رسیدن به یک هدف مشخص ر ّد و بدل می شود .نمایش Interactionتوسط یک پیکان
توپر می باشد.
.2ماشین وضعیت یا : state machine
یک ماشین وضعیت ،رفتاری است که نشان دهنده ی مجموعه ای از حالتهاست که یک شیء و
یا یک فعل و انفعال در سیر زندگی خود ،در پاسخگویی به وقایع محیط بیرونی می تواند داشته
باشد.
نمایش یک state machineبا یک boxبا گوشه های خمیده می باشد.
( Grouping Things .3اشیاء دسته بندی):
از این دسته برای قرار دادن اجزای مختلف در یک قالب استفاده می کنیم و در زبان ،UML
تنها یک نوع از آنها وجود دارد که بسته یا packageنام دارد .بسته یا packageعبارت
است از یک مکانیسم عمومی برای سازماندهی اشیاء در داخل گروهها .این اشیاء می توانند
اشیاء ساختاری و یا رفتاری باشند .نمایش packageدر زبان UMLبه شکل زیر است:
(Annotation Things .4اشیاء توصیفی):
اشیاء توصیفی قسمت شرح دهنده در زبان UMLبوده و از آنها برای توضیح یا شرح بیشتر
اشیاء استفاده می کنیم .یک شیء توصیفی اصلی در زبان UMLبه نام Noteوجود دارد که
با شکل گرافیکی زیر نشان داده می شود و در داخل آن هرگونه شرح یا توضیحی که کمک به
شفاف شدن مدل کند ،می توان ارائه داد.
.1
.2
.3
.4
جزء دوم از زبان (relationship ،UMLارتباطات) است.
در زبان 4 ، UMLنوع ارتباط به شرح زیر وجود دارد:
Dependency
Association
Generalization
Realization
این ارتباطات برای برقراری وابستگی بین قسمتهای مختلف زبان UMLمورد استفاده قرار
می گیرند که در زیر به شرح آنها می پردازیم.
( Dependency .1وابستگی) :
وابستگی یک ارتباط بین دو مؤلفه یا دو چیز است که در آن اعمال تغییر بر روی یکی از آنها
منجر به تغییر در دیگری می شود و آن را با نماد زیر(پیکان خط چین دار) نشان می دهیم.
( Association .2همکاری):
Associationیک ارتباط ساختاری می باشد که با یک linkیا اتصال نشان داده شده و
برای بیان ارتباط بین اشیاء مناسب است.
از لحاظ گرافیکی آن را با یک خط راست نشان می دهیم و تعداد کمیت هر شیء را نیز می
توانیم ذکر کنیم.
Generalization .3
که در آن ارتباط بین اشیائ را در حالتی نشان می دهد که یک شیء (فرزند) نمونه ی خاصی از
شیء دیگری(والد) می باشد.
مثلا انسان نمونه ای از یک جاندار است.
.1
.2
Realization .4
که از آن برای برقراری ارتباط بین مجموعه ای از classifierها استفاده می کنیم .به طور
کلی از این نوع ارتباط برای مقاصد زیر استفاده می کنیم:
برای نشان دادن ارتباط بین classها یا componentها با interfaceها
برای نشان دادن ارتباط بین Usecseها با collaborationها
جزء سوم و بسیار مهم زبان UMLنمودارها هستند که در فصل آتی با تک تک آنها آشنا می
شویم.
Usecaseمشخص کننده ی رفتاری از سیستم و یا بخشی از سیستم است و شامل مجموعه ای
از عملیات است که سیستم برای رسیدن به یک نتیجه ی خاص و ارائه ی آن نتیجه به یک
actorانجام می دهد.
Actorها در خارج از سیستم قرار دارند و با سیستم در ارتباطند سرویسی ارائه داده یا
سرویسی می گیرند .
از Usecaseها برای نشان دادن رفتار سیستم بدون در نظر گرفتن چگونگی آن رفتار استفاده
می کنیم.
در Usecaseها نگرش ما با نگرش پیاده سازی فاصله دارد و در آن اصلا به پیاده سازی و
چگونگی آن رفتار فکر نمی شود.
Usecaseها به تولیدکنندگان و استفاده کنندگان از نرم افزار دید واحد و مشترکی در رابطه با
امکانات نرم افزاری که قرار است ساخته شود می دهد.
یک Usecaseشامل مجموعه ی فعل و انفعالتی است که بین سیستم و محیط بیرونی
آن(actorها) انجام می شود.
عوامل بیرونی(actorها) می توانند انسان ،سیستم های نرم افزاری ،سخت افزاری و حتی
زمان هم باشد .یک Usecaseنشان دهنده ی حجم مشخصی از کارهایی است که یک سیستم
انجام می دهد.
: هاusecase ها وActor
: Ac tor
Actorها معرّف نقشهایی هستند که این نقشها می توانند با سیستم ارتباط برقرار کنند .به
صورت نمونه Actor ،ها شامل انسان ها،سایر سیستم های نرم افزاری و یا سخت افزاری می
باشند و نکته ی بسیار مهم در ارتباط با آنها این است که آنها در خارج از سیستم زندگی می
کنند Actor(.موجودیتی است در خارج از سیستم که با عناصر سیستم ارتباط برقرار می کند.
برای معرفی Actorها از نماد آدمک استفاده می کنیم و بین Actorها می تواند ارتباطی از
جنس (generationارث بری) وجود داشته باشد.
ارتباط بین Actorها و usecaceها توسط ارتباطی است به نام associationیعنی بین
Actorو usecaseوابستگی وجود ندارد بلکه تنها می توانند با هم ارتباط برقرار کنند.
(با هم مرتبطند ولی به هم وابسته نیستند).
Usecaseها و جریان های وقایع:
یک usecaseنشان می دهد که یک سیستم یا زیرسیستم یا interfaceچه کاری انجام می
دهد بدون آنکه وارد جزئیات تفصیلی آن شود usecase(.می تواند در سطوح abstraction
،سیستم ،زیرسیستم یا interfaceاجرا شود).
یعنی یک شمای کلی از سرویس قابل ارائه توسط آن سیستم را به نمایش می گذارد و وارد
جزئیات آن نمی شود.
در کنار یک نمودار usecaseنیاز داریم شرح یا توضیح اضافه ای داشته باشیم که عملکرد
usecaseرا به شفافی نشان می دهد(.عملیات ذکر شده را به صورت ریزتر و جزئی تر بیان
کند).
با ذکر جریان های اطلعاتی می توان عملیات یک usecaseرا تشریح کرد.
هر usecaseدارای یک جریان اصلی و احتمالا تعدادی جریان فرعی می باشد.
جریان اصلی انجام کلیه ی فرایندها در داخل usecaseبه صورت ایده آل می باشد.
جریان فرعی :جریانی است که به هر علت نحوه ی انجام کار یا رفتار سیستم را از حالت ایده
آل یا صحیح خارج می کند.
.1
.2
.3
.4
.5
.6
.7
.8
.9
.10
.11
برای بیان یا نشان دادن جریان ها در ساده ترین حالت می توان از متون( )contextاستفاده
کرد .جریان اصلی برداشت پول از سیستم :ATM
کاربر کارت را وارد دستگاه ATMمی نماید.
پیغام خوش آمد ظاهر می شود.
انتخاب زبان مورد نظر .
صفحه ی ورود رمز ظاهر می شود.
کاربر رمز را وارد می کند.
رمز به سرور ارسال شده و پیغام خوش آمد ورود به سیستم ظاهر می شود.
کاربر عملیات مورد درخواست خود را انتخاب کرده و مبلغ مورد نظر را انتخاب می کند.
مبلغ درخواستی با موجودی چک می شود.
مبلغ درخواستی از موجودی کسر می شود.
ATMپول را به کاربر پرداخت کرده و رسید ارائه می دهد.
ATMکارت را به کاربر برمی گرداند.
هر گونه اتفاقی که سیستم را از روال صحیح انجام آن رفتار بازدارد جریان فرعی است مثل
صحیح نبودن رمز ،عدم اتصال به سیستم شتاب ،کسر موجودی.
برای بیان جریان اصلی یا جریانات فرعی می توان از شبه کد( )sudeo codeهم استفاده کرد.
ترتیب توالی جریانات می تواند در کیفیت سیستم تأثیرگذار باشد.
مراحل مدل کردن رفتار یک سیستم(سیستم،زیرسیستم: )interface ، class ،
مدل کردن () requirement، business model
.1مشخص کردن actorهایی که با آن عنصر (سیستم،زیرسیستم)interface،actor،
ارتباط برقرار می کندActor .های نمونه می تواند شامل گروهی باشد که نیاز به برقراری
ارتباط متقابل با سیستم برای ارائه ی سرویس های سیستم دارد.
Actorها و سیستم نیاز متقابل یا دوطرفه به هم دارند.
.2سازماندهی actorها با مشخص کردن نقش های عمومی و نقش های خاص ( adminو
userکه adminخود نوعی از نوعی از userاست).
باعث می شود ارث بری درست پیاده سازی شود.
.1
.2
.3
دیدن وراثت باعث می شود حجم کدی که تولید می شود کم شود user(.پودمانی و userترمی
ثبت نام یکسان و انتخاب واحد جداگانه دارند .می توان از یک کد ثبت نام برای هر دو استفاده
کرد به جای تکرار کد).
.3برای هر ،actorراه هایی که آن actorبا آن جزء یا قسمت ارتباط برقرار می کند را
مشخص می کنیم و ارتباطاتی که باعث تغییر حالت آن عنصر یا جزء می شود را می بینیم .و یا
ارتباطاتی که در پاسخ به وقایع خارجی می تواند اتفاق بیفتد را نیز در نظر می گیریم( .ورود به
یک سیستم با لگین userیا )admin
.4علوه بر این راه های خاصی که actorبا آن جزء ارتباط برقرار می کند را در صورت
لزوم در نظر می گیرد(.مثال یک actorی به نام userقصد loginشدن به سیستم را دارد
راه اول ورود usernameو passwordاست .راه دیگر استفاده از اثرانگشت و راه دیگر
استفاده از سیستم تشخیص چهره می باشد.
Actorدانشجو و usecaseانتخاب واحد:
انتخاب واحد اینترنتی
انتخاب واحد دستی
واگذاری آن به مدتی بعد
همه ی آنها باید به طور همزمان دیده شوند.
سازمان دهی رفتارها به صورت usecaseها و برقراری ارتباطات بین usecaseها که
عمدتا ا شامل ارتباطات includeو extendهستند.
به طور خلصه در ارتباط includeما انجام یک رفتار را در داخل رفتارهای دیگر تکرار
می شود را شناخته و آن را بصورت یک رفتار مج ّزا انتخاب می کند و در ارتباط extend
حالتهای مختلفی که یک رفتار می تواند صورت پذیرد را بررسی می کنیم.
(Extendخرید کال یا خودمان برای خرید کال برویم یا سفارش بدهیم کالی مورد نظرمان را
با پیک به ما برسانند .عمل خریدن در هر دو مورد اتفاق میفتد اما به طرق مختلف).