پروژه طراحی و پیاده سازی سیستم اشتراک فایل تحت اندروید و ویندوز
پروژه طراحی و پیاده سازی سیستم اشتراک فایل تحت اندروید و ویندوز 64 صفحه بصورت ورد
چکیده
در ابتدا به بررسی فواید برنامهنویسی تحت شبکه و فواید جاوا و اندروید میپردازم. سپس وارد فرایند طراحی سیستم اشتراک فایل با رویکرد RUP و با استفاده از UML خواهم شد. توضیحات مربوط به هر یک از دیسیپلینهای RUP و نمودارهای UML در بخش مربوط به خودش داده خواهد شد. زبان انتخابی من برای نوشتن این برنامه جاوا است، دلیل این انتخاب را در ادامه خواهم گفت. بعد از طراحی نوبت به پیادهسازی و نوشتن کد میرسد. در آخر، خروجی این پروژه، نمودارهای UML و در برنامه کاربردی، یکی برای ویندوز و دیگری برای اندروید، خواهد بود.
کلمات کلیدی:
سیستم اشتراک فایل، اندروید، برنامهنویسی تحت شبکه
فهرست مطالب
عنوان صفحه
فصل اول: بررسی منابع علمی.. 1
1-1) بررسی فواید برنامهنویسی تحت شبکه با جاوا 2
1-1-1) دریافت داده 2
1-1-2) ارسال داده 3
1-1-3) انبار فایل.. 3
1-1-4) پردازش موازی حجیم.. 3
1-1-5) تعامل نظیر به نظیر. 3
1-1-6) بازی.. 4
1-1-7) چت… 4
1-1-8) اشتراک فایل.. 4
1-1-9) سرورها 6
1-1-10) جستجو در وب… 6
1-1-11) امنیت… 6
1-2) تاریخچه جاوا 7
1-3) درباره اندروید. 7
1-4) کمی درباره ی RUP و UML 8
فصل دوم: روش انجام پروژه. 9
مقدمه. 10
2-1) دیسیپلین مدلسازی سازمان.. 10
2-1-1) درک ساختار و پویایی سازمان.. 10
2-1-2) درک مسائل و مشکلات جاری سازمان.. 11
2-1-3) استخراج و استنتاج نیازمندیهای سازمان.. 11
2-1-4) تعیین چشمانداز سازمان.. 11
2-2) دیسیپلین مدیریت نیازمندیها 12
2-2-1) شناسایی اکتور ها و موارد کاربرد. 12
2-2-2) شرح مورد کاربرد. 12
2-2-3) استخراج مدل مورد کاربرد. 20
2-2-4) ایجاد نمونهای از واسط کاربر. 21
2-3) دیسیپلین تحلیل و طراحی.. 25
2-3-1) نمودار فعالیت… 25
2-3-2) نمودارهای فعالیت سمت سرور 27
2-3-3) چند نمودار فعالیت دیگر. 28
2-3-4) نمودار کلاس…. 29
2-3-5) نمودار شیء 31
2-3-6) نمودار توالی.. 32
2-3-6-1) طراحی نمودار توالی دریافت فایل.. 34
2-3-6-2) طراحی نمودار توالی ارسال فایل.. 36
2-3-7) نمودار بسته. 37
2-4) دیسیپلین پیادهسازی.. 38
2-4-1) تعریف ساختار کدهای برنامه. 38
2-4-2) نمودار مؤلفه. 48
2-5) دیسیپلین استقرار 49
2-5-1) نمودار استقرار 50
نتیجه گیری: 51
منابع.. 52
فهرست اشکال
عنوان صفحه
شکل (1-1): نرمافزار چت Cisco Jabber ]3[ 4
شکل (1-2): نرمافزار Azureus Vuze ]3[ 5
شکل (2-1): نمودار مورد کاربرد سیستم اشتراک فایل ]5[ 20
شکل (2-2): صفحه نخست نرمافزار کاربر (متناظر با مورد کاربرد احراز هویت) ]9[ 21
شکل (2-3): صفحه انتخاب دریافت یا ارسال فایل ]9[ 21
شکل (2-4): صفحه انتخاب فایل برای دریافت (متناظر با مورد کاربرد دریافت فایل) ]9[ 22
شکل (2-5): صفحه انتخاب فایل برای ارسال (متناظر با مورد کاربرد ارسال فایل) ]9[ 22
شکل (2-6): نرمافزار طرف مدیر سیستم – صفحه متناظر با مورد کاربرد نمایش لیست کاربران ]9[ 23
شکل (2-7): پنجره ثبت کاربر جدید (متناظر با مورد کاربرد ثبت کاربر) ]9[ 23
شکل (2-8): صفحه لیست پوشههای اشتراکی (متناظر با مورد کاربرد نمایش پوشههای اشتراکی) ]9[ 24
شکل (2-9): پنجره انتخاب پوشه جدید برای اشتراک (متناظر با مورد کاربرد اضافه کردن پوشه) ]9[ 24
شکل (2-10): نمودار فعالیت متناظر با مورد کاربرد احراز هویت ]5[ 25
شکل (2-11): نمودار فعالیت متناظر با مورد کاربرد دریافت فایل ]5[ 26
شکل (2-12): نمودار فعالیت متناظر با مورد کاربرد ارسال فایل ]5[ 26
شکل (2-13): نمودار فعالیت شروع (طرف سرور) ]5[ 27
شکل (2-14): نمودار فعالیت متناظر با چند مورد کاربرد مربوط به اشتراک پوشه ]5[ 28
شکل (2-15): نمودار فعالیت متناظر با مورد کاربرد نمایش لیست کاربران ]5[ 28
شکل (2-16): نمودار فعالیت متناظر با مورد کاربرد ثبت کاربر ]5[ 29
شکل (2-17): نمودار کلاس سیستم اشتراک فایل ]7[ 29
شکل 2-18: نمودار شیء 1. در این نمودار شیء task1 قصد ارسال پیغام به مقصد 192.168.1.10 را دارد]8[ 31
شکل (2-19): نمودار شیء 2. شیء Listener1 پیام را دریافت کرده و در جواب آن شیء msg2 را ایجاد میکند ]11[ 31
شکل (2-20): سناریوی احراز هویت ]12[ 32
شکل (2-21): نمودار توالی احراز هویت. متناظر با سناریوی شکل قبل ]4[ 33
شکل (2-22): سناریوی دریافت فایل ]5[ 34
شکل (2-23): نمودار توالی نمایش فایلهای به اشتراک گذاشتهشده ]5[ 34
شکل (2-24): نمودار توالی دریافت فایلهای به اشتراک گذاشتهشده ]5[ 35
شکل (2-25): سناریوی ارسال فایل ]5[ 36
شکل (2-26): نمودار توالی ارسال فایل ]5[ 36
شکل (2-27): نمودار بسته کاربر ]6[ 37
شکل (2-28): نمودار بسته مدیر سیستم ]6[ 38
شکل (2-29): نمودار مؤلفه سمت کاربر ]3[ 49
شکل (2-30): نمودار مؤلفه سمت سرور ]3[ 49
شکل (2-31): نمودار استقرار سیستم ]4[ 50
فهرست جداول
عنوان صفحه
جدول (2- 1): شرح مورد کاربرد «احراز هویت». 13
جدول (2-2): شرح مورد کاربرد «دریافت فایل». 13
جدول (2-3): شرح مورد کاربرد «ارسال فایل». 14
جدول (2-4): شرح مورد کاربرد «نمایش لیست کاربران». 15
جدول (2- 5): شرح مورد کاربرد «ویرایش کاربر». 15
جدول (2-6): شرح مورد کاربرد «ثبت کاربر جدید». 16
جدول (2-7): شرح مورد کاربرد «حذف کاربر». 17
جدول (2-8): شرح مورد کاربرد «نمایش پوشههای اشتراکی». 18
جدول (2-9): شرح مورد کاربرد «اضافه کردن پوشه». 18
جدول (2-10): شرح مورد کاربرد «حذف پوشه». 19
فصل اول:
بررسی منابع علمی
1-1) بررسی فواید برنامهنویسی تحت شبکه با جاوا
عموماً چند شکل از برنامههای تحت شبکه وجود دارد. رایجترین آنها، سرویسدهندهها[1] و مشتریها[2] هستند. در سادهترین حالت، برنامه مشتری، اطلاعات را از یک سرویسدهنده دریافت میکند و آن را نمایش میدهد. برنامههای پیچیدهتر، داده را فیلتر و شناسایی میکنند، مرتباً دادههای متغیر را دریافت میکنند، اطلاعات را به کامپیوترها و افراد دیگر ارسال میکنند، بهطور بلادرنگ با چت یا بازیهای چند نفر در تعاملاند. سرویسدهندهها هم به درخواستها پاسخ میدهند. سرویسدهندههای ساده فایلی را جستجو کرده و آن را در اختیار مشتری قرار میدهند، اما سرویسدهندههای پیچیدهتر اغلب قبل از پاسخ به درخواست مشتری، پردازشهای زیادی بر روی داده انجام میدهند. برنامههای نظیر به نظیر[3] مثل Gnutella کامپیوترهای زیادی را به هم متصل میکنند که هرکدام هم مانند سرویسدهنده و هم مثل مشتری عمل میکنند.]3[
در ادامه، نگاهی دقیقتر به قابلیتهایی که شبکه به برنامهها میافزاید، میاندازیم:
1-1-1) دریافت داده
در سادهترین حالت، یک مشتری داده را از سرور دریافت میکند. میتواند آن را برای نمایش به کاربر به فرمتی خاص تبدیل کند، آن را در پایگاه دادهی محلی ذخیره کند، با دادههای دیگر ترکیب کند، آن را تحلیل کند، یا همه این موارد. مشتریها در جاوا میتوانند با پروتکلهای استاندارد مثل HTTP[4]، FTP[5] و SMTP[6] صحبت کنند تا با سرورهای نوشتهشده در زبانهای مختلف ارتباط برقرار کنند.
1-1-2) ارسال داده
مرورگرهای وب برای دریافت داده بهصورت بهینه عمل میکنند؛ یعنی فقط مقدار کمی داده را، اغلب بهصورت یک فرم، به سرور ارسال میکنند. برنامههای نوشتهشده در جاوا چنین محدودیتی ندارند. وقتی یک ارتباط برقرار شود، برنامه میتواند به همان راحتی که داده را دریافت میکند، ارسال داده را از طریق همان ارتباط انجام دهد و این فرصتهای جدیدی را ایجاد میکند:
1-1-3) انبار فایل
Applet[7] ها معمولاً نیاز به ذخیرهی اطلاعات در هر بار اجرای خود دارند (مثل ذخیره امتیاز بهدستآمده در یک بازی).Applet های غیرمطمئن اجازهی ذخیره اطلاعات در هارددیسک را ندارند، اما میتوانند این اطلاعات را در سرور ذخیره کنند. به این صورت که Applet فقط یک اتصال به سرورها از طریق شبکه برقرار کرده و داده را به آن ارسال میکند. سرور ممکن است داده را از طریق HTTP POST،FTP،SOAP[8] یا Servlet[9] بپذیرد.
1-1-4) پردازش موازی حجیم
برای حل یک مسئله توسط یک کامپیوتر درزمانی قابلقبول، همیشه مشکلاتی وجود داشته است. گاهی اوقات تصمیم به خریدن کامپیوتری سریعتر (و البته پرهزینهتر) گرفته میشود، اما باید توجه داشت که هرچه به سمت فنّاوری بالاتر میرویم، سرعت افزایش هزینه از سرعت کامپیوترها بیشتر میشود. بهطوریکه برنامهنویسها ترجیح میدهند از قدرت چندین کامپیوتر ارزانتر استفاده کنند تا یک ابرکامپیوتر!
وقتی صحبت از پردازشهای شبکهای میشود، جاوا بهترین گزینه برای گروههای کلان از کامپیوترهای کوچک است. ازآنجاکه جاوا وابسته به پلتفرم[10] نیست، نرمافزارهای آن میتوانند در تمام ماشینها اجرا شوند، نهفقط در تمام این ویندوزها، تمام لینوکسها یا تمام مکینتاشها.]1[
1-1-5) تعامل نظیر به نظیر
تمام موارد بالا، مثالهایی از معماری سرویسدهنده / مشتری هستند؛ اما در جاوا، مشتریها در سرتاسر اینترنت میتوانند با یکدیگر نیز ارتباط برقرار کنند که این خود، فرصتهای بسیاری را برای گروههای نرمافزارها ایجاد میکند. اگرچه به دلایل امنیتی، این ارتباط بهواسطهی یک نرمافزار پروکسی در سروری که برنامه مشتری از آن دانلود شده، انجام میگیرد.
مشتریها در جاوا به چند دسته تقسیم میشوند:
1-1-6) بازی
قابلیت شبکه را با گرافیک قدرتمند جاوا در برنامههایتان توأم کنید، این دستورالعمل ساخت بسیاری از بازیهای جذاب چند نفر است.
[1] Server
[2] Client
[3] Peer-to-peer
[4] Hypertext transfer protocol
[5] File transfer protocol
[6] File transfer protocol
[7] برنامهای کوچک که در مرورگر وب اجرا میشود
[8] Simple object access protocol
[9] برنامهای در طرف سرور که به قابلیت سرور میافزاید
[10] Platform