معرفی UML

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

این کلینیک در سه طبقه می باشد که طبقه اول بخش شیمی درمانی، طبقه دوم اتاق های ویزیت و طبقه سوم هم آزمایشگاه می باشد.
یک نفر مسئول بخش شیمی درمانی در طبقه اول حاضر است که در صورت لزوم و صلاح دید پزشک به کمک ۲ نفر دیگر که تکنسین این بخش هستند به شیمی درمانی بیماران می پردازند. بخش شیمی درمانی دارای ۸ تخت برای بیماران است و قابلیت انجام شیمی درمانی برای ۸ نفر همزمان را دارد.
در طبقه دوم سه اتاق برای ویزیت بیماران وجود دارد که ۴ پزشک در آنها مشغول به فعالیت هستند. دو پزشک به صورت یک روز در میان در این کلینیک کار می کنند و دو پزشک دیگر به صورت هر روز و از ساعت ۱۴ الی ساعت ۱۸ در این کلینیک مشغول به کارند. این کلینیک دارای ۲ منشی می باشد که کار رسیدگی به بیماران و تشکیل پرونده را به عهده دارند. در این کلینیک طبق

بررسی های انجام شده حدود ۰۰۰/۱۰ پرونده فعال وجود دارد و بایگانی آنها به صورت سنتی می باشد.
کار تشکیل پرونده به عهده منشی و کار تکمیل آن توسط پزشک مربوطه می باشد. بیمار در هنگام مراجعه اگر هیچ گونه آزمایشی تا به حال انجام نداده باشد، به بخش آزمایشگاه راهنمایی می شود و از او یک سری آزمایش های کلی گرفته می شود و جواب آزمایشگاه در همان روز آماده و به پزشک تحویل داده می شود.
اگر احتیاج به بررسی بیشتر باشد به بیمارستان معرفی می شود و کار درمان در بیمارستان ادامه پیدا می کند.
در بخش آزمایشگاه یک سرپرست و ۳ تکنسین آزمایشگاه وجود دارند که کلیه امور انجام و

جواب دهی به عهده این افراد می باشد. ارتباط بین کلیه بخش های موجود از طریق تلفن داخلی می باشد.
یک حسابدار هم برای رسیدگی به کارهای مالی در طبقه سوم مستقر است که برای انجام کارهای خود از نرم افزارهای موجود استفاده می کند .
ما در این پروژه به مکانیزه کردن پرونده های بیماران پرداختیم. با دریافت کردن اطلاعات از پزشکان و منشی ها به کار درست کردن فرم های ورود اطلاعات پرداختیم. این نرم افزار تحت وب نوشته شده است و امکان اینکه با تغییرات اندکی تبدیل به یک وب سایت هم شود را دارد. به این صورت پزشکان از هر کجا که باشند می توانند به پرونده های بیماران خود دسترسی داشته باشند و این امر برای آنها اهمیت زیادی داشت.
در این نرم افزار از SQL SERVER 2000 و ASP استفاده شده است و برای رابط گرافیکی هم ترجیح دادیم تا از HTML استفاده می کنیم تا خاصیت تبدیل به وب سایت شدن را هم داشته باشد .
این نرم افزار از۴ بخش عمده تشکیل شده است :
۱- بخش مربوط به تشکیل پرونده توسط منشی
۲- بخش تکمیل پرونده توسط پزشک
۳- بخش مدیریت اطلاعات بیماران و اطلاعات پایه کارکنان
۴- بخش آزمایشگاه
در بخش اول، منشی ها با وارد کردن کلمه عبور مربوط به خود به قسمتی از نرم افزار دسترسی پیدا می کنند و می توانند که پرونده جدید تعریف کنند.
شماره پرونده به صورت خودکار توسط سیستم درست می شود و پس از کامل کردن پرونده توسط منشی به منشی اعلام می شود، سپس منشی شماره پرونده تشکیل شده را به بیمار می دهد و بیمار به هنگام ورود به اتاق ویزیت آن را به پزشک ارائه می کند .
در بخش دوم پزشک شماره پرونده بیمار را به سیستم وارد می کند و اطلاعاتی را که منشی به سیستم وارد کرده مشاهده می کند و در قسمت مربوط به پزشک، نتایج معاینات و مشاهدات خود را وارد می کند. تمامی فیلدهای طراحی شده، با تایید پزشکان مربوطه صورت گرفته است .
در بخش سوم نرم افزار که قلب نرم افزار است، مدیر سیستم می تواند اطلاعات پایه در مورد تمامی کارکنان و پزشکان مشغول در کلینیک را وارد و ویرایش کند. همچنین می تواند اطلاعات پرونده های بیماران را هم ویرایش کند .

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

با نگاه اولیه پزشکان به طرح نرم افزار، با استقبال مناسبی از طرف ایشان مواجه شدیم و بر آن شدیم که سیستم را جامع تر درست کنیم و در اختیار سایر پزشکان علاقمند هم قرار دهیم .
در این نرم افزار برای برنامه نویسی روی SERVER از زبان ASP و برای برنامه نویسی روی Client از زبان JAVA SCRIPT استفاده شده است. ضمن اینکه برای گرفتن گزارشات و جستجو در پرونده ها از دستورات SQL استفاده شده است.

معرفی UML
UML به افراد اجازه می دهد تا چندین نوع مختلف از نمودارهای بصری را به وجود آورند که جنبه های مختلف سیستم را نمایش میدهد. Rational Rose از ایجاد اکثر این مدلها، همانطور که در زیر آمده، پشتیبانی می کند .
• نمودار Use Case
• نمودار Sequence ( توالی )
• نمودار Collaboration ( همکاری )

• نمودار Class ( کلاس )
• نمودار State Transition ( حالت )
• نمودار Component
• نمودار Deployment
این نمودارهای مدل، جنبه¬های مختلف سیستم را نشان میدهند . مثلاً نمودار Collaboration ( همکاری ) محاورات ضروری میان آبجکت ها را نشان میدهد، به این منظور که تعدادی از توابع سیستم را به انجام برساند. هر نمودار یک هدف و یک شنونده در نظر گرفته شده دارد.

 

نمودارهای Use Case
نمودارهای Use Case محاورات میان Use Case ها را نشان میدهند، که عملیات سیستمی و عامل ها ( Actor ) که نشان دهنده افراد یا سیستم هایی است که اطلاعات را برای سیستم فراهم کرده و یا از آن دریافت می کنند را نمایش می دهند . نمودارهای Use Case محاورات میان Use Case ها را نشان می دهند . Use Case ها درخواستهای سیستم را از دید کاربر نشان می دهند . بنابراین Use Case ها عملیاتی هستند که سیستم فراهم می کند. عامل ها در واقع نگهدارنده پول ( بانکدار ) یک سیستم هستند. این نمودارها نشان می دهند که چه عامل هایی به Use Case ها مقدار اولیه می دهند . همچنین آنها نشان می دهند که چه موقع یک عامل، اطلاعات را از Use Case دریافت می کند .
نمودار Use Case محاورات میان Use Case ها و عاملهای یک سیستم را نشان میدهد . بر این اساس، نمودار Use Case می تواند درخواستهای سیستم را نشان دهد. در این مثال مشتری بانک تعدادی از Use Case ها را مقدار دهی می کند : برداشت پول (Withdraw money )، واریز (Deposit Fands ) ، انتقال از حساب ( Transfer Fands ) ، پرداخت ( Make Payment ) ، مشاهده تراز ( موجودی ) ( View Balance ) ، و تغییر ( Change PIN ) PIN .
تعدادی از ارتباطات این ارزش رادارند که بیشتر به آنها اشاره شود. کارمند بانک همچنین به Use Case تغییر PIN مقدار اولیه می دهد . Use Case پرداخت، فلشی را نشان میدهد که به سیستم اعتباری می رود. سیستم های خارجی ممکن است عاملهایی باشند و در این مورد، سیستم اعتباری بعنوان یک عامل نشان داده شده است ، زیرا خارج از سیستم ATM ، است .فلشی که از یک Use Case به یک عامل می رود نشان می دهد که Use Case اطلاعاتی را تولید می کند که یک عامل از آن استفاده می کند . در این مورد Use Case پرداخت، اطلاعات پرداختی کارت اعتباری را برای سیستم اعتباری آماده می کند . اکثر اطلاعات از دیدن نمودارهای Use Case قابل فهم می باشد زیرا این نمودارها همه عملیات سیستم را نشان میدهد . کاربران، مدیران پروژه، تحلیلگران، برنامه نویسان، مهندسین تضمین کیفیت و هر شخص دیگری که به سیستم وابسته است ، می تواند مانند همه، این نمودارها را ببیند و بفهمد که چه سیستمی قرار است به انجام برسد.

 

نمودارهای Sequence ( توالی )
نمودارهای Sequence برای نشان دادن جریان عملیات در یک Use Case استفاده شده¬اند مثلاً Use Case برداشت پول چند توالی ( Sequences ) دارد مانند برداشت پول، تلاش برای برداشت پول از حساب بدون موجودی، تلاش برای برداشت پول با PIN اشتباه و غیره .
نمودار Sequence جریان پردازش رادر Use Case برداشت پول نشان می دهد. عاملهای وابسته در بالای نمودار نشان داده شده¬اند ؛. همچنین آبجکت هایی که سیستم نیاز دارد تا U

se Case برداشت پول را به نتیجه برساند در بالاترین نقطه نمودار نشان داده شده است. هر فلش یک پیغام ارسالی بین عامل و آبجکت را نمایش می دهد تا عملیات مورد نیاز را به انجام برساند. نکته دیگر درباره نمودارهای Sequence این است که آنها آبجکت ها را نمایش می دهند و نه کلاسها . کلاسها انواع آبجکت ها را نمایش می دهند نمودار Sequence به جای مشتری ( customer ) ( که یک کلاس است ) ، Joe را نشان می دهد .
Use Case بدین ترتیب شروع می شود که مشتری کارتش را وارد کارت خوان می کند، یک آبجکت در بالای نمودار با مستطیلی نشان داده شده است . سپس کارت خوان شماره کارت را می خواند . آبجکت حساب Joe را باز می کند و صفحه نمایش ATM را مقدار دهی می نماید . صفحه نمایش از Joe می خواهد که PIN را وارد نماید . او ۱۲۳۴ را وارد می کند . صفحه PIN را با آبجکت حساب تأیید می کند و آنها را با هم جفت و جور می کند . صفحه انتخابهایش را برای Joe آماده می کند و او ۲۰ دلار را انتخاب می کند . سپس صفحه وجوه را از حساب بر میدارد . این یک سری از پردازشهایی که آبجکت حساب (account ) به انجام می رساند را مقدار دهی می کند .
ابتدا، حساب Joe تأیید می کند که حساب ، حداقل شامل ۲۰ دلار است . سپس وجوه را از حساب کسر می کند . بعداً به صندوق اطلاع می دهد و ۲۰ دلار را آماده میکند. همچنین حساب Joe به صندوق اطلاع می دهد تا یک رسید را آماده کند. سرانجام به کارت خوان اطلاع می دهد تا کارت را باز پس دهد . بنابراین این نمودار Sequence تمام جریان پردازشی Use Case برداشت پول را با نشان دادن یک مثال مشخصی از اینکه Joe 20 دلار از حسابش بر می دارد را توضیح می دهد . کاربران می توانند به این نمودارها نگاه کنند و مشخصات پردازش تجاریشان را ببینند تحلیلگران جریان پردازش را در نمودار Sequence می بینند . برنامه نویسان آبجکت هایی که به کُدنویسی نیاز دارند را به همراه عملگرهای آن آبجکت می بینند . مهندسین تضمین کیفیت می توانند جزییات پردازش و تولید Test Case مبتنی بر پردازش را ببینند . Sequence برای همه کسانیکه در پروژه مسئول نگهدای پول هستند ، مفید می باشند .

نمودارهای Collaboration
نمودارهای Collaboration دقیقاً همان اطلاعات نمودارهای Sequence را نشان می دهند . اگر چه نمودارهای Collaboration اطلاعات را به روشی متفاوت و با یک هدف متفاوت نشان میدهد .
در نمودار Collaboration مانند قبل، آبجکت ها به شکل مستطیلهایی نمایش داده شده¬اند و عاملها به شکل آدمک می باشند . در حالیکه در نمودار Sequence آبجکت ها و ارتباطات عامل ها به ترتیب زمان توضیح داده شده¬اند . نمودار Collaboration آبجکت ها و فعل و انفعالات عامل ها را بدون توجه به زمان نشان میدهد . مثلا در این نمودار کارت خوان به حساب Joe اطلاع می دهد تا باز شود و حساب Joe به کارت خوان اطلاع می دهد تا کارت را باز پس دهد . همچنین آبجکت هایی که مستقیماً با دیگری ارتباط برقرار می کنند با خطوطی که بین آنها کشیده شده نشان داده شده¬اند .
اگر صفحه نمایش ATM و کارت خوان مستقیماً با یکدیگر رابطه داشته باشند ، باید یک خط بین آنها کشیده شده باشد . نبودن این خط به این معنی است که هیچ ارتباط مستقیمی بین این دو آبجکت وجود ندارد .
بنابراین نمودارهای Collaboration همان اطلاعات نمودارهای Sequence را نشان می دهند اما افراد به دلایل متفاوتی به نمودارهای Collaboration مراجعه می کنند . مهندسین تضمین کیفیت و معماران سیستم به این نمودارها نگاه می کنند تا توزیع شدن پردازشهای بین آبجکت ها را ببینند . فرض کنید که نمودار Collaboration به شکل یک ستاره که در آن چند آبجکت که با یک آبجکت

مرکزی ارتباط دارند ، باشد. یک معمار سیستم ممکن است نتیجه بگیرد که سیستم خیلی به آبجکت مرکزی وابسته است و آبجکتها را دوباره طراحی نماید تا نیروی پردازش را به طور یکنواخت توزیع کند. دیدن این نوع محاورات در یک نمودار Sequence بسیار مشکل است .

 

نمودارهای Class ( کلاس )
نمودارهای Class ( کلاس ) ارتباطات بین کلاسها را در سیستم نشان میدهد . کلاسها می توانند بعنوان طرحی کلی برای آبجکت ها دیده شوند مثلاً حساب Joe یک کلاس است . کلاسها شامل اطلاعات و رفتاری هستند که بر روی اطلاعات عمل می نمایند . کلاس حساب ( account ) شامل PIN مشتری و رفتاری که PIN را کنترل می کند می باشد. در نمودار Class برای هر نوع آبجکتی در نمودار Sequence و Collaboration یک کلاس ایجاد شده است .
نمودار Class ، ارتباطات بین کلاسهایی را نشان میدهد که use case برداشت پول را به انجام می رسانند در یک نمودار Class ، هر کلاس با مستطیلی نشان داده شده که به سه بخش تقسیم شده است . بخش اول نام کلاس را نشان می دهد .
بخش دوم صفات کلاس ( attributes ) را نشان می دهد. یک صفت قطعه¬ای از اطلاعاتی است که با یک کلاس مرتبط می باشد . مثلا ً کلاس حساب ( account ) شامل سه صفت است . Account Number ( شماره حساب ) ، PIN , Balance ( تراز ) . آخرین بخش شامل عملگرهای کلاس ( Operations ) می باشد. یک عملگر تعدادی رفتار است که توسط کلاس آماده خواهد شد . کلاس حساب ( account ) شامل چهار عملگر است . Open ( باز کردن) ،Withdraw Funds ( برداشت وجوه ) Deduct Funds ( واریز وجوه ) و Verify Funds ( تأیید موجودی ) برای کلاس حساب ( Account ) ، Private ( خصوصی ) هستند .
برنامه نویسان از نمودارهای Class استفاده می کنند تا که کلاسها را به طور واقعی تولید نمایند. ابزارهایی مانند Rose چارچوب کلاسها را تولید می کنند، سپس برنامه نویس جزییات را در زبان انتخابی خود نشان می دهند . تحلیلگران از نمودارهای کلاس استفاده می کنند تا جزییات سیستم را نشان دهند . همچنین طراحان به نمودارهای Class نگاه می کنند تا طرح سیستم را ببینند .
اگر یک کلاس شامل چند تابع باشد ، یک معمار می تواند این را در نمودار Class دیده و توابع را به چند کلاس بشکند . نباید هیچ وابستگی بین کلاسهایی که با یکدیگر ارتباط دارند وجود داشته باشد . یک طراح یا برنامه نویس نیز می تواند این را ببیند. نمودارهای Class برای این ایجاد شده¬اند تاکلاسهایی را نشان دهند که با هم در هر use case کار می کنند و نمودارهای جامع ( Comprehensive ) شامل کل سیستم یا زیر سیستم را می توان به همین ترتیب ایجاد نمود.

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

در حالت ویژه start state ( حالت شروع ) و stop state ( حالت پایان ) وجود دارد . حالت شروع با یک دایره توپر سیاه در روی نمودار نمایش داده شده است و نشان می دهد چه حالتی از آبجکت در ابتدا ایجاد شده است . حالت پایانی بوسیله یک خال هدف نمایش داده شده است و نشان می دهد که آبجکت درست قبل از اینکه از بین برود، در چه حالتی می باشد. بر روی یک نمودار حالت ، فقط و فقط یک حالت شروع وجود دارد ، در حالی که شما می توانید حالت پایانی نداشته باشید، یا اینکه هر چند حالت پایانی که نیاز دارید را داشته باشید.
ممکن است زمانی که آبجکت داخل یک حالت ویژه است چیزهای مشخصی اتفاق بیفتد . در مث

ال ما وقتی که از یک حساب ، زیادی برداشت می شود، یک اخطار به مشتری فرستاده می شود . پردازشهایی که در حالت مشخصی از آبجکت اتفاق می افتند actions نامیده می شوند.
نمودارهای حالت برای هر کلاسی ایجاد نمی شوند. آنها فقط برای کلاس های پیچیده استفاده می شوند. اگر آبجکتی از یک کلاس می تواند در چندحالت وجود داشته باشد و در هر حالت خیلی متفاوت رفتار نماید، ممکن است بخواهد یک نمودار حالت برای آن ایجاد کنید .
بسیاری از پروژه ها اصلاً به این نمودارها نیازی ندارند. اگر آنها ایجاد شده¬اند ، برنامه نویسان از آنها در زمان تولید کلاسها استفاده می کنند. نمودارهای حالت فقط برای مستندسازی ایجاد شده¬اند. وقتی شما از روی مدل Rose خود کُد را ایجاد می کنید ، کُد از روی اطلاعات روی نمودارهای حالت ایجاد نخواهد شد .
اگر چه add – ins در Rose برای سیستم¬ها بلادرنگ ( real time ) وجود دارد، که می تواند کُد قابل اجرا را بر پایه نمودارهای حالت تولید نماید .
نمودارهای اجزاء ( Component Diagrams )
نمودارهای Component یک دید فیزیکی از مدلتان را به شما نشان میدهد . یک نمودار Component اجزای نرم¬افزاری سیستم شما و روابط بین آنها را به شما نشان می دهد . دو نوع Component در نمودار وجود دارد، Component های قابل اجرا و کتابخانه کُد .
در Rose ، هر یک از کلاسهای موجود در مدل به یک Component کُد منبع نگاشت شده¬اند . اولین باری که Component ها ایجاد می شوند ، آنها به نمودار Component اضافه می گردند . سپس وابستگی های میان Component ها کشیده می شود . وابستگیهای Component ، وابستگیهای زمان اجرا و زمان ترجمه میان Component ها را نشان می دهد .

هر کلاس در نمودار Component های خودش نگاشته شده است . مثلاً کلاس ATM screen به یک Component به نام ATM Screen نگاشته شده است . کلاس ATM Screen همچنین به یک Component دوم ATM Screen نگاشته شده است . این دو Component عنوان و بدنه کلاس ATM Screen را نمایش می دهند. Component سایه دار یک Package Specification ( مشخصات بسته ) نامیده شده است .