تجزیه و تحلیل و طراحی سیستم نرم افزاری شرکت کامپیوتری


مشاهده سایر گزارش های کارآموزی>>>>>

تجزیه و تحلیل و طراحی سیستم نرم افزاری شرکت کامپیوتری

HyperLink
قیمت: یک فاتحه برای رفتگانم
گروه: گزارش های کارآموزی

تعداد صفحه: 72

چکیده 6

مقدمه 7
فصل اول- مفاهیم استفاده شده در پروژه 8
1-1- برنامه نويسي لايه اي 8
1-1-1- برنامه چند لایه چیست؟ 8
1-1-2- مزیت های برنامه های چند لایه 10
لایه ها 10
1-1-3- انتخاب های لایه Presentation 10
1-1-4- انتخاب های لایه Business Logic 11
1-1-5- انتخاب های لایه Data Access 11
1-1-6- انتخاب های DataLayer 11
1-1-7- ارسال داده از یک لایه به لایه دیگر 12
1-2- پيشينه 12
1-3- سیر تکامل زبان های برنامه نویسی تحت وب 14
1-4- ای جکس ( AJAX ) چیست ؟ 15
فصل دوم- شرح، امکانات و محدودیتهای سیستم 19
2-1- چشم انداز 19
2-1-1- شرح مسئله: 19
2-1-2- شرح عملیات (لیست امکانات و قابلیت ها): 19
2-1-3- مخاطبین سیستم  : 21
2-1-4- محدودیت ها : 21
2-2- مستند واژه نامه 22
2-3- مفاهیم سیستم گزارش گیری 23
فصل سوم- تجزيه و تحليل  سيستم 24
3-3- طرح تکرار (Iteration Plan) 26
شکل 3-1- نمودار طرح تکرار 26
3-4-  نمودار های کلاس (Class Diagram) 27
3-4-1  توضیحات کلاس 28
Usecase: sandogh refah , khadamat  شکل 3-26- 42
فصل چهارم- پیاده سازی سیستم 43
4-2- جداول استفاده شده در پایگاه داده  و جزییات آ نها 49
4-2-1- نمای کلی از جدول های موجود در پایگاه داده پروژه : 49
Anbargardani4-3-3-جدول 52
Bime4-3-4-جدول 53
Check4-3-5-جدول 54
Fish4-3-6-جدول 55
Crash code 4-3-7-جدول 56
Etelaeie4-3-8-جدول 57
Factornum4-3-10-جدول 59
"goodpriceجدول 4-11-" 60
Kala4-3-12-جدول 60
"kalaجدول 4-12-" 61
Mojoody4-3-13-جدول 61
"mojoodyجدول4-13-" 61
Kargoziny4-3-14-جدول 62
Khadamat pas az forosh4-3-15-جدول 63
"Khadamat pas az foroshجدول 4-15-" 64
Boff4-3-16-جدول 64
Pass4-3-18-جدول 65
Tashilat 4-3-19-جدول 66
Tashilat etaie 4-3-20-جدول 67
Tavoun 4-3-22-جدول 68
"Unitsجدول 4-23-" 70
"validationجدول 4-24-" 71
4-4-نتایج پیاده سازی این سیستم 71
منابع و مراجع : 72


1-1- برنامه نويسي لايه اي
1-1-1- برنامه چند لایه چیست؟
      در معماری چند لایه تمام برنامه به چندین بخش تقسیم می شود. این بخش ها می توانند فیزیکی یا منطقی باشند. هر بخش کار خاصی را انجام می دهد؛ مثلا نمایش  Interface، کاربر برای دسترسی به داده های برنامه می تواند هر تعداد لایه داشته باشد. ولی به هر حال بیشتر برنامه ها سه لایه مجزا دارند که عبارتند از :
1- Presentation Layer (Interface)
2- Business Logic Layer
3- Data Access Layer
4- Data Layer
لایه Presentation چیزی نیست  جز بخشی از نرم افزار که با کاربر برنامه ما ارتباط برقرار می کند؛ به عبارت دیگر کاربران با این لایه در ارتباط خواهند بود. نمایش داده ها به کاربر نهایی و اجازه به ایشان برای ارتباط  با داده ها، اصلی ترین وظیفه این لایه است.
در بیشتر موارد داده هایی که توسط کاربر وارد می شوند نیاز به اعتبارسنجی یا پردازش اضافی دارند. این مسوولیت بر عهده  لایه Business Logic است.در نهایت داده های برنامه ما نیاز به ذخیره و بازیابی از طریق یک انبار داده دارند.  این وظیفه توسط لایه دسترسی به داده (Data Access Layer) انجام  می شود.
     داده های ما در DataLayer ذخیره شده و با استفاده از Stored Procedure های نوشته شده در این لایه درج، حذف و به روز رسانی می شوند.
به طور خلاصه، فرآیند مورد نظر ما این گونه کار می کند:
    - کاربر برای دست یابی به داده های برنامه، درخواستی را ارسال می کند.
    - لایه Data Access داده های مورد نظر را از DataLayer  بازیابی کرده  و از طریق لایه Business Logic آن ها را به لایه نمایش می فرستد. در برخی مواقع لایه دسترسی به داده ها، این داده ها را مستقیما به لایه نمایش ارسال می کند.
    - لایه نمایش، اطلاعاتی را که باید نمایش داده شوند  از طریق لایه Business Logic دریافت می کند.
    - کاربر داده ها را تغییر داده  و عمل مناسب در مورد آن ها را اجرا می کند ( مثل اضافه یا به روز کردن داده ها )
    - لایه Business Logic صحت داده های وارد شده توسط کاربر را بررسی می کند ( داده ها را اعتبار سنجی می کند)
    - اگر داده ها معتبر باشند آن ها را برای به روز رسانی در بانک اطلاعاتی به لایه دسترسی به داده انتقال می دهد.
لایه دسترسی داده، داده ها را به DataLayer فرستاده و این لایه تغییرات را بر روی آن ها اعمال می کند.
1-1-2- مزیت های برنامه های چند لایه
     برنامه ها به چند بخش منطقی جدا از هم تقسیم می شوند و ارتباط میان User Interface (رابط کاربری) ، پردازش ها و بانک اطلاعاتی کم می شود.
تغییر در بانک اطلاعاتی یا روال های دسترسی به داده ها تاثیری در لایه نمایش یا برنامه کلاینت نخواهد گذاشت.
 برنامه کلاینت با عبارات SQL آمیخته نخواهد شد.
 نام جداول و ستون ها به طور موثری از برنامه کلاینت حذف می شوند.
 برنامه کلاینت متوجه نمی شود  که داده ها از کجا آمده اند ( چیزی که به آن location transparency گفته می شود )
 تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون آن که نیاز به تغییر یا کامپایل مجدد برنامه کلاینت داشته باشیم.
نکته منفی در معماری چند لایه آن است که ما باید تعداد زیادی بخش ها و  کلاس های جدا از هم را در نرم افزار ایجاد نماییم. اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.

لایه ها
1-1-3- انتخاب های لایه Presentation 
     دو انتخاب اصلی برای ساخت یک لایه نمایش در .NET وجود دارد. آنها فرم های ویندوزی یا فرم های وبی ASP.NET هستند.
با استفاده از ویندوز فرم ها، ما می توانیم برنامه های Desktop فرم محور (BaseForm) معمول را بسازیم. برنامه های ویندوز فرمی می توانند عناصر رابط کاربری (UI) بسیار غنی به کاربر پیشنهاد کنند. آن ها کم و بیش مشابه  فرم های ویژوال بیسیک هستند.
جذاب ترین گزینه برای توسعه لایه نمایش استفاده از وب فرم های ASP.NET است. کنترل هایی مثل GridView و تقویم (Calendar)، یک رابط کاربری قدرتمند به همراه مقادیری کد فراهم می کنند.
انتخاب هایی که در بالا برای ساخت یک لایه نمایش بررسی کردیم می توانند توسط زبان های مختلفی مثل C#  یا VB.NET پیاده سازی شوند. 

1-1-4- انتخاب های لایه Business Logic 
     لایه Business Logic از چندین بخش تشکیل شده که عملیاتی نظیر اعتبار سنجی کار، گردش کار یا اعمال مشابه را انجام می دهند. 
Component های .NET این لایه را شکل می دهند.  
وب سرویس های ASP.NET هم می توانند به عنوان یک Business Logic عمل کنند. وب سرویس ها تنها زمانی قابل استفاده خواهند بود که اعتبار سنجی در محلی بیرون از شبکه ما اتفاق افتاده باشد.
Component  هایی که ما توسعه می دهیم به ماندن روی ماشین های مشابه نیازی ندارند. با استفاده از NET Remoting می توانیم آن ها را بر روی چندین ماشین توزیع کنیم.

1-1-5- انتخاب های لایه Data Access  
    این لایه با دستکاری داده ها مثل اضافه، حذف و به روز رسانی آن ها سر و کار دارد. داده هایی که به آن ها اشاره کردیم می توانند در RDBMS یا  XML قرار داشته باشند. بایستی لایه دسترسی به داده را چنان طراحی کنیم که دیگر لایه ها نیازی به اطلاع از وضعیت انبار داده ها نداشته باشند.

1-1-6- انتخاب های DataLayer
    این لایه از این جهت حائز اهمیت است که داده را در خود نگهداری می کند و توابع موجود در Data Access Layer با برقراری ارتباط با Stored Procedure ها این لایه اعمال حذف، درج و بروز رسانی را انجام می دهدند.
ADO.NET   فناوری دسترسی به داده تحت .NET است. اگر چه ADO.NET از طریق کلاس های DataReader اجازه دسترسی به داده های در هنگام اتصال را می دهد ولی بیشترین تمرکز روی دسترسی به داده ها در زمان عدم اتصال می باشد. DataSet  نقش کلیدی را در این مورد بازی می کند. در بعضی موارد ما می توانیم ADO را هم برای دسترسی به داده ها استفاده کنیم ولی استفاده از آن باید دلیل معتبری داشته باشد. 
وب سرویس ها هم می توانند لایه دسترسی به داده را شکل دهند. این گفته مخصوصا زمانی درست است که DataBase ما Provider داده ندارد. در این گونه موارد می توانیم جهت پر نمودن DataSet ها و نیز بازگرداندن نتایج درون DataSet به درخواست کننده، کد نویسی  انجام دهیم.
علاوه بر ADO.NET  می توان از امکانات سیستم مدیریت DataBase  (مثل توابع و یا  Stored Procedures ) استفاده کرد.

1-1-7- ارسال داده از یک لایه به لایه دیگر
     در تمامی موارد، نیازمند ارسال اطلاعات از یک لایه به لایه دیگر می باشیم. به طور معمول برنامه نویسان از رشته ها، آرایه ها و.... برای رسیدن به این هدف استفاده می کنند. در .NET ، DataSet ها یک  روش فوق العاده برای انتقال اطلاعات میان لایه ها فراهم می کنند. حتی می توانیم با برنامه نویسی یک DataSet ایجاد کرده و آن را با داده های خودمان پر کنیم. 
بنابراين کلاس هاي برنامه با توجه به مطالب ذکر شده در مورد برنامه نويسي لايه اي مربوط به لايه ي Application  مي باشند.
ابتدا کلاس Sender و متدهای آن شرح مي شود.

1-2- پيشينه
     واژه Ajax را برای اولین بار آقای Jesse James Garrett در فوریه سال 2005 در مقاله Ajax: A New Approach to Web Applications استفاده کرد. اگرچه نام Ajax برای نخستین بار در سال 2005 ابداع شد، اما تاریخچه اکثر فناوری‌هایی که به آژاکس منتهی شدند به حدود یک دهه قبل و ابتکارات مایکروسافت در اسکریپت نویسی از راه دور بازمی‌گردد. با این حال تاریخچه فناوری‌هایی برای بارگذاری غیرهمروند محتویات یک صفحه وب، بدون نیاز به بارگذاری دوباره صفحه، به عناصر IFRAME (که در سال ۱۹۹۶ در نسخه ۳ IE ارائه شد) و عناصر LAYER (که در سال ۱۹۹۷ در نسخه ۴ Netscape ارائه شد، اما در نسخه‌های اخیر Mozilla متروکه شده است) باز می‌گردد. هردوی این عناصر، یک خصوصیت src دارند که می‌تواند یک آدرس URL خارجی را شامل شود و به این ترتیب اگر صفحه‌ای شامل یک کد JavaScript بارگذاری شود که صفحه والد را دستکاری می‌کند، نتیجه‌ای شبیه Ajax خواهیم داشت.
      اسکریپت نویسی از راه دور مایکروسافت (یا MSRS که در سال ۱۹۹۸ مطرح شد) جایگزین مناسب‌تری برای تکنیک‌های گذشته به نظر می‌رسد. در این روش، داده‌ها به‌وسیله یک Java Applet دریافت می‌شود، و در سمت کلاینت برقراری ارتباط به‌وسیله JavaScript انجام می‌گیرد. این روش در نسخه‌های 4 و بعدتر IE و Netscape Navigator پشتیبانی می‌شود. سپس مایکروسافت در نسخه ۵ IE شی XMLHttpRequest را ارائه کرده و برای اولین بار در Outlook Web Access که در Microsoft Exchange Server 2000 ارائه شد، از این روش با استفاده از شی XMLHttpRequest بهره جست.
     در نهایت با تغییر و تحولاتی که در این مسیر بوجود آمد و جایگزینی شی XMLHttpRequest به جای Java Applet، اکنون روشی برای اسکریپ نویسی از راه دور متداول شده که آن‌را با عنوان Ajax می‌شناسیم.
     اما آنچه باعث شد پس از این مدت، ناگهان توجه‌ها به سمت Ajax جلب شود، تمرکز Google بر این معماری بود. Google Map، Gmail و Google Suggest پروژه‌هایی بودند که باعث شد توجه کاربران، چه کاربران عادی و چه کاربران حرفه‌ای، به نحوه کار آنها جلب شود.


 
شکل 1-1-معماری Ajax




1-3- سیر تکامل زبان های برنامه نویسی تحت وب
    سالهاي اوليه شروع به کار سايت هاي اينترنتي متخصصين براي طراحي سايت از زبان هايي مثل html استفاده مي کردند . حتما اطلاع داريد که زباني مثل html توانايي آنچناني براي طراحي صفحات هوشمند ندارد ولي بايد در نظر گرفت که html در حيطه کاري خود فوق العاده قوي عمل مي کرده است . برنامه هاي بزرگي مثل فرون پيج و دريم ويور نيز از اين زبان قديمي و با ثبات پشتيباني مي کنند . اما چيزي که باعث به فراموشي سپردن زبان هاي برنامه نوسي اين گونه ي تحت وب شد چيزي نبود جز نياز به پيشرفت و هوشمند سازي صفحات اينترنت و پيشرفت از صفحات استاتيک به دايناميک .
       بعد از مدتي زبان هاي پيشرفته مانند asp و php و … روي کار آمدند. اين زبان ها با استقبال خوبي مواجه شدند زيرا امکاناتي که در اختيار برنامه نويس قرار مي دادند پيش از حد تصور آن بود . از اين زبان ها به راحتي امکاني رو فراهم مي کردند که در داخل صفحات اينترنت از بانک هاي اطلاعاتي استفاده شود و ارتباط با ديتابيس جزو مزيت هاي فوق العاده آنها بود . انقلاب بزرگ اينترنت از همين جا شروع شد و زمينه براي فعاليت دنياي مجازي فراهم شد . زبان هاي پيشرفته بستري رو فراهم کردند تا برنامه نويسان از خودشان را نشان دهند و خود نمايي کنند . با وجود اين زبان هاي برنامه نويسي هر چيزي که به ذهن برنامه نويس مي رسيد به راحتي قابل پياده سازي بود .
    در حال حاضر نيز کاربران اينترنت بايد منتظر انقلابي جديد باشند که وب را متحول مي کند . وقتي که اولين برنامه هاي توسط AJAX و XML نوشته شد به اين انقلاب نزديک تر شديم . زبان اي جکس و XML نيز نسل جديدي از زبان هاي برنامه نويسي هستند براي پروژه اي عظيم به نام وب ۲ به وجود آمدند .

1-4- ای جکس ( AJAX ) چیست ؟
     بیشتر افراد فکر میکنند ای جکس یک تکنولوژی جدید در زمینه طراحی و تولید نرم افزارهای تحت وب میباشد. ولی در اصل ای جکس یک تکنیک جدید است ، که از تکنولوژی های قدیمی استفاده میکند. ای جکس از دو تکنولوژی XML و JavaScript استفاده میکند که از جمله تکنولوژی های قدیمی بستر وب محسوب میشوند. 

اما واقعا ای جکس چیست و چرا به این سرعت رشد کرده است ؟
      برای پاسخ به این سوال و فهم بهتر این تکنیک بهتر است کمی به عقب برگردیم و برنامه نویسی تحت ویندوز را مورد بررسی قرار دهیم. اگر شما برنامه نویسی تحت ویندوز انجام داده باشید ، حتما به این مشکل بر خورد کرده اید! وقتی شما در صفحه دکمه ای دارید که تابعی را صدا میزند و آن تابع برای انجام کار ، زمان زیادی لازم داشته باشد ، چه اتفاقی برای نرم افزار شما خواهد افتاد ؟ نرم افزار شما قفل می‌شود یا به اصطلاح هنگ میکند ! 
خوب دلیل بروز این مشکل چیست ؟
     سیستم عامل برای اجرای هر نرم افزار ، یک ترد Thread برای آن در نظر میگیرد. در واقع این ترد اصلی Main Thread کنترل کل اجرای برنامه را برعهده دارد. این کنترل شامل جواب دادن به حرکات موس و دکمه های کیبورد است که سیستم عامل آنها را بصورت پیامهایی در اختیار نرم افزار قرار میدهد. حال اگر شما در برنامه خود تابعی داشته باشید که زمان اجرای زیادی لازم داشته باشد در واقع این ترد اصلی است که وظیفه اجرای این تابع را بر عهده دارد و در نتیجه دیگر نمیتواند به پیامهای سیستم عامل جواب دهد و اینگونه به نظر میرسد که نرم افزار هنگ کرده است. 
اما راه حل چیست ؟
استفاده از ترد های دیگر برای اجرای کارهای سنگین ، با این کار ترد اصلی همچنان به سیستم عامل پاسخ میدهد و در عین حال نرم افزار نیز تابع سنگین خود را بدون مشکل اجرا میکند. در واقع با این تکنیک شما برای انجام کارهای مختلف از تردهای مختلف استفاده مینمایید. یعنی برای هر کار یک ترد جدید ایجاد میکنید.
 حال که با مفهوم ترد آشنا شدید و کاربرد آن را در افزایش کارایی و کیفیت نرم افزار ها دیدید!
 این سوال پیش می آید که چگونه میتوان از این تکنیک تحت وب نیز بهره برد ؟
    جواب این سوال ، تکنیک ای جکس است! بزرگترین مشکل در نرم افزارهای تحت وب زمانی است که کاربر میخواهد اطلاعاتی را به سمت سرور بفرستد. برای ارسال اطلاعات از روش Post استفاده می‌شود. در واقع برای ارسال اطلاعات از کاربر به سمت سرور ، مرورگر تمام اطلاعات صفحه به اضافه تغییراتی که مد نظر کاربر بوده است را برای سرور ارسال میکند. حال آنکه این کار اضافی به نظر میرسد که کل اطلاعات صفحه به سمت سرور ارسال گردد. در حالی که میتوان فقط اطلاعاتی که تغییر کرده و نیاز است ، به سمت سرور ارسال گردد. در واقع ای جکس برای نیل به این هدف متولد شده است. به واسته استفاده از تکنیک ای جکس شما صفحه را طوری ایجاد میکنید که اجزای هرقسمت از صفحه به قسمت های دیگر وابسته نمی باشد و در واقع هر قسمت مستقل میباشد و تغییرات در هر قسمت، فقط همان قسمت را Refresh میکند. 
اما بیایید مروری بر تاثیرات تکنیک ای جکس بر نتیجه نهایی نرم افزارهای تحت وب بیاندازیم.
 1) مهم ترین تاثیری که استفاده از تکنیک ای جکس در نرم افزارهای تحت وب دارد ، عدم نیاز به Refresh شدن کل صفحه میباشد. بدترین چیزی که وجود دارد این است که کاربر برای لود شدن هربار صفحه ، منتظر بماند. اکثرا در این حالت کاربر باید صفحه سفید و خالی را مشاهده کند که از لحاظ روانی ، سوای محسنات بیشمار نرم افزارهای تحت وب ، یک معضل اساسی به حساب می آید.
  2) اضافه شدن امکاناتی که سالها نرم افزارهای تحت ویندوز از آن بهره میبرند ، مانند :
 I) تب: شما به وفور تب را در پنجره های ویندوز می بینید. در واقع با استفاده از تب شما تعداد زیادی پنجره را در یک پنجره در کنار هم و با یک ساختار مشخص ایجاد میکنید. شما بدون ای جکس هم میتوانید در وب تب ایجاد کنید ولی برای حرکت بین تبها ، لازم است که صفحه Refresh شود ولی با استفاده از ای جکس شما میتوانید تبی بسازید که تفاوتی با نمونه تحت ویندوز نداشته باشد .
II) حدس زنی ( Suggestion ) در این روش اطلاعات مورد نظر یک فیلد در یک فرم از پایگاه داده ها خوانده می‌شود. بهترین مثال این قسمت در سیستم ارسال ایمیل گوگل و یاهو وجود دارد. شما فقط قسمتی از نام گیرنده ایمیل را وارد میکنید و نام کامل و ایمیل فرد به نمایش در می آید.  
III) مرتب کردن اطلاعات در کنترل هایی مثل GridView و .... 
IV) درگ اند دراپ ( Drag & Drop )  بهترین مثال شخصی سازی صفحه گوگل ویا وبلاگ گوگل می باشد.
باقی امکانات و نمونه ها را میتوانید از اینجا http://ajax.asp.net/ajaxtoolkit نگاه کنید.
3) امنیت : البته خود سیستم های برنامه نویسی تحت وب از امنیت لازم برخوردار هستند. نکته قابل توجه در اینجا این است ؛ زمانی که مرورگر در ابتدا وارد یک صفحه می‌شود که از تکنیک ای جکس در آن استفاده شده است ، فقط اطلاعات همان صفحه را می تواند ذخیره کند. تمام تراکنش های بعدی که توسط ای جکس انجام میگرد، فقط در حافطه مرورگر میماند و دیگر قابل ذخیره سازی نمی باشد. از لحاظ فنی نیز ، Trace اطلاعاتی که توسط ای جکس منتقل شده است، سخت تر می باشد، چونکه اطلاعات ناقص هستند و فقط شامل تغییرات می شوند.

برچسبها:

مشاهده سایر گزارش های کارآموزی>>>>>
HyperLink