ماجرا یک نرم افزار مربوط به گردشگری با هدف تسهیل سفر برای مسافران و ایجاد شغل ساده برای بآشنایان با یک مکان میباشد. ماجرا میتواند به سادهتر پیدا کردن راهنمای گردشگری کمک کند که این امر کمک زیادی به رونق صنعت گردشگری میکند. همینطور ماجرا با دادن فرصت به بومیان و افراد آشنا با یک مکان، برای راهنمایی کردن مسافرین در سفرهایشان، شغلی ساده در اختیار آنها میگذارد و علاوه بر آن، به شناخته شدن مکانهای کمتر شناخته شده و بومیتر نیز کمک میکند و در نهایت تجربه متفاوتی از سفر به مسافرین میدهد.
این پروژه به هدف یادگیری مفاهیم درس مهندسی نرمافزار، به عنوان پروژهی این درس و تحت اپلکیشن اندروید با متودولوژی Scrum پیاده سازی شده است.
اپلیکیشن این پروژه با زبان Java و با معماری MVP برای سیستم عامل اندروید 6 به بالا پیاده سازی شده است.
سرور این پروژه با استفاده از جنگو(Django) و جنگو رست فریمورک(Django REST framework)پیاده سازی شده است.
- محمد فرزان(اسکرام مستر تیم Android): طراحی UI/UX و Wireframe - مدیریت تسکها - پیادهسازی اپلیکیشن
- سارا کهتری: طراحی UI/UX و Wireframe - پیادهسازی اپلیکیشن
- پریسا عسکرزاده: طراحی UI/UX و Wireframe - پیادهسازی اپلیکیشن
- محمد جواد جعفری(اسکرام مستر تیم Backend)
- رضا رستگاری(اسکرام مستر کل تیم)
- فاطمه شفیعی اردستانی
برنامه به صورتی نوشت هشده که در دو بخش فرانتاند و بکاند، ماژولهای مربوطه پیادهسازی شدهاند و در نتیجه، در صورتی که یک نیازمندی تغییر یا اضافه شود، میتوان به آسانی آن را اعمال کرد. همچنین در صورت رخداد خطا، تلاش لازم برای رفع آن و زمان لازم برای کشف محل خطا، کمتر خواهد بود. همینطور برای پیادهسازی پروژه، از معماری MVC استفاده شدهاست که باعث میشود کلاسها قابلیت استفاده مجدد داشته باشند. همچنین استفاده مجدد از برخی کلاسها باعث شد که قابلیت اطمینان در برنامه بالا رفته و نیاز به تست کمتری داشته باشیم.
هنگامی که کاربر وارد برنامه میشود، با دیدن آیکونهای برنامه و نامهایی که در صفحهی خانه نوشته شدهاند، میتواند تا حد خوبی چگونگی کار با برنامه را متوجه شود. بعد از آن نیز، چگونگی کار کردن با برنامه را به آسانی بهیاد خواهد آورد.
در برنامه، از اشتباههای احتمالی کاربر، جلوگیری شده است. برای مثال کاربر اجازه نخواهد داشت که تاریخ شروع ماجرا را قبل از تاریخ کنونی وارد کند و یا تاریخ پایان ماجرا، پیش از شروع آن باشد.
از token authentication بر ای احراز هویت کاربران استفاده شده است. همینطور سطوح دسترسی مختلفی برای کاربران مختلف در نظر گرفته شده است تا از دسترسی کاربران غیرمجاز به تعدادی از بخشها جلوگیری گردد. همینطور به دلیل استفاده از token authentication از حملات CSRF جلوگیری شده است. علاوه بر موارد ذکر شده، با توجه به حساسیت اطلاعات هویتی کاربران، از حملات bruteforce نیز جلوگیری شده است.
سعی شده تا حد امکان وابستگی بین ماژولهای مختلف کم باشد تا بتوان با استفاده از test های مختلف خطاها ردیابی و رفع شوند.