توسعه نرم افزار ArcGIS

توسعه نرم افزار های GIS بر پایه نرم افزار و سرویس های ArcGIS

در سال 2014، به عنوان پیمانکار یک راه‌حل نرم‌افزاری مکان‌محور (GIS)، با یک شرکت نرم‌افزاری وارد قرارداد شدم. این پروژه شامل توسعه تعدادی Add-in برای نرم‌افزار دسکتاپ ArcGIS، نرم‌افزار تحت وب و نرم‌افزار اندرویدی بود. کاربران نهایی این نرم‌افزار مهندسین شرکت‌های توزیع برق، وزارت جهاد کشاورزی، سازمان بنادر و دریانوردی و زیرمجموعه‌های وزارت نفت بودند. در این پروژه از تکنولوژی‌ها و زبان‌های برنامه‌نویسی Java، CSharp، WPF، WCF، ArcGIS Desktop و ArcGIS Server استفاده شد. تیم توسعه‌دهنده شامل 5 نفر بود که پس از پایان قرارداد، به عنوان اعضای ثابت در شرکت استخدام و مستقر شدند.

مراحل توسعه و پیاده‌سازی

تحلیل نیازمندی‌ها

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

طراحی و معماری سیستم

طراحی سیستم با توجه به نیازمندی‌ها و محدودیت‌های فنی انجام شد. در این مرحله، معماری کلی سیستم شامل بخش‌های مختلف نرم‌افزاری و ارتباطات بین آن‌ها مشخص شد.

معماری 5 لایه:

این معماری شامل لایه‌های داده، سرویس، منطق تجاری، رابط کاربری و یکپارچه‌سازی بود.

لایه داده:

استفاده از MSSQL برای ذخیره و مدیریت داده‌های مکانی و متا دیتا.

لایه سرویس:

پیاده‌سازی وب سرویس‌های WCF برای ارتباط بین نرم‌افزارهای مختلف.

لایه منطق تجاری:

شامل الگوریتم‌های تحلیل شبکه و پردازش داده‌های مکانی ، منطق ارتباطی اسناد و متا دیتا با اطلاعات مکانی و...

لایه رابط کاربری:

طراحی UI با استفاده از WPF برای نرم‌افزار دسکتاپ، ArcGIS Silverlight SDK برای نرم‌افزار وب و Android SDK برای نرم‌افزار موبایل.

لایه یکپارچه‌سازی:

شامل ارتباط با ArcGIS Server و سرویس‌های مکان‌محور.

توسعه و کدنویسی

این مرحله شامل پیاده‌سازی کد و توسعه نرم‌افزار بود. مراحل مختلف کدنویسی شامل موارد زیر بود:

تولید نرم افزار اندروید

برای تولید نرم افزار اندروید از زبان برنامه نویسی Java در محیط Eclipse و با استفاده از ArcGIS Android SDK بود.وظیفه این نرم افزار نمایش و ویرایش لایه های نقشه بصورت آفلاین و همگام سازی اطلاعات پس از اتصال به شبکه داخلی با سرور بود که در آن زمان برای اولین بار در کشور پیاده سازی شد.

تولید نرم افزار ویندوز

نرم افزار ویندوز بر پایه ArcGIS Desktop Add-in و با زبان برنامه نویسی سی شارپ تولید شد که فرایند های تخصصی GIS روی این نرم افزار صورت می گرفت.گزارشات پیشرفته ایمپورت و اکپورت اطلاعات بصورت بالک و تلحیل های شبکه و ویرایش اطلاعات از امکانات این نرم افزار بود.

تولید نرم افزار تحت وب

این نرم افزار بر پایه ArcGIS Silverlight SDK و زبان برنامه نویسی C# تولید شد و عمدتا بابت گزارش گیری مکان محور، جستجو در متادیتا، کارتابلهای سازمانی، ثبت اطلاعات مکانی و.... استفاده می شد.

تولید نرم افزار بک اند

بک اند این نرم افزار ها وب سرویس مایکروسافتی بر پایه WCF بود که با زبان برنامه نویسی CSharp و دیتابیس MSSQL بود همچنین ارتباط با دیتابیس از طریق ADO.NET بود، معماری این قسمت 5 لایه با ARCGIS Server نیز در ارتباط بود.این سرویس علاوه بر سرویس دهی به نرم افزار های اندروید، ویندوز و وب به نرم افزار های داخلی سازمانها نیز سرویس دهی می کرد.

نصب و راه اندازی ArcGIS Server

این سرویس دهنده شرکت ESRI با بانک اطلاعاتی MSSQL و نقشه های پایه کشور و همچنین اطلاعات مکانی مشتری نصب و را اندازی شد و وظیفه سرویس دهی نقشه های Tile و وکتور را داشت.

پس از تکمیل کدنویسی، مرحله تست و کنترل کیفیت آغاز شد. این مرحله شامل سناریو نویسی تست و انجام تستها قبل از ارائه هر نسخه بود

استقرار و پیاده‌سازی نهایی

پس از تایید نهایی نرم‌افزار، مرحله استقرار و پیاده‌سازی نهایی آغاز شد:

نصب و راه‌اندازی ArcGIS Server:

این سرویس‌دهنده با بانک اطلاعاتی MSSQL و نقشه‌های پایه کشور و همچنین اطلاعات مکانی مشتری نصب و راه‌اندازی شد.

نصب و راه‌اندازی نرم‌افزارها:

نصب نرم‌افزارهای دسکتاپ، وب و موبایل در محیط‌های کاربران نهایی.

آموزش کاربران:

برگزاری جلسات آموزشی برای کاربران نهایی جهت آشنایی با نرم‌افزار و قابلیت‌های آن. و تهیه کتابچه راهنما

پشتیبانی و نگهداری

پس از استقرار، تیم توسعه به ارائه پشتیبانی و نگهداری از نرم‌افزار پرداخت. این شامل موارد زیر بود:

رفع اشکالات:

پیگیری و رفع مشکلات گزارش شده توسط کاربران از طریق سیستم تیکتینگ.

به‌روزرسانی‌ها و ارتقاءها:

ارائه به‌روزرسانی‌ها و ارتقاءهای نرم‌افزار براساس بازخورد کاربران و نیازهای جدید.

پشتیبانی فنی:

ارائه پشتیبانی فنی به کاربران برای استفاده بهینه از نرم‌افزار.

اگر به دنبال توسعه نرم‌افزارهای مکان‌محور مشابه هستید، با من تماس بگیرید تا از تجربیاتم بهره‌مند شوید و به شما در ایجاد نرم‌افزارهای کارآمد و دقیق کمک کنم.

Hossein Ashrafipoor

برای مشاوره رایگان بصورت تماس مستقیم و یا تلگرام و واتساپ در خدمت شما عزیزان هستم.

نظرات همکاران
مهران سلمانی
مهران سلمانی
مدیر عامل پرتو ارتباط صبا

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

حسین میرحیدری
حسین میرحیدری
مدیرعامل هوش مصنوعی رایورز

بهتر از حسین را نمی توان توصیه کرد - او یک توسعه‌دهنده Fullstack فوق‌العاده توانا و با استعداد است، همچنین اینکه دارم به یک انسان A+ اشاره می کنم. از لحظه ای که بیش از 13 سال پیش به AISoft پیوست، حسین به دلیل اخلاق کاری، نگرش و هوش خود برجسته بود. او یک توسعه دهنده برجسته و سپس یک رهبر با استعداد و مورد احترام بود و هر شرکتی خوش شانس خواهد بود که او را داشته باشد. من دوباره با تمام وجود دوست دارم با او کار کنم.

ابراهیم امینی
ابراهیم امینی
مهندس داده

حسین یک مدیر پروژه فوق العاده توانا است. من از همکاری با او در تعدادی از پروژه ها لذت بردم. مهمترین نکته ای که در مورد حسین می توانم به آن اشاره کنم راحت بودن و ارتباط خوب است. من همیشه حسین را مانند یک معلم صبور میبینم.

سمیرا فرخ نژاد
سمیرا فرخ نژاد
مهندس برنامه نویسی فرانت اند

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

حسن ابطحی
حسن ابطحی
مهندس نرم افزار

حسین فردی با مهارت بالا و تجربه عمیق در پیاده سازی راه حل های تجاری مدرن است. او همیشه به راهکارهای جدید در برنامه نویسی و توسعه نرم افزار فکر می کند. من قطعا او را به عنوان یک مهندس نرم افزار ارشد توصیه می کنم.

رضا موسوی دوست
رضا موسوی دوست
مدیر محصول

حسین یک فرد حرفه ای فوق العاده است که تمام مهارت ها و تخصص در برنامه نویسی و رهبری تیم فنی را به همراه دارد. کار کردن با چنین شریک ارشد در دفتر واقعاً لذت بخش بود. تحت هدایت او، کادر فنی ما مهارت های مختلفی را به دست آوردند. ما 2 سال با هم کار کردیم.

سپهر دهقانی
سپهر دهقانی
مهندس نرم افزار

یکی از مهربان ترین، با استعدادترین و عاقل ترین توسعه دهندگانی که تا به حال در حرفه ام دیده ام. کار کردن با او و داشتن او در تیم خود یک امتیاز عالی است.

پوریا دماوندی
پوریا دماوندی
توسعه دهنده فرانت اند

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

شهریار اشراقی
شهریار اشراقی
توسعه دهنده فرانت اند

حسین در حرفه خود کاملاً مهارت دارد و دانش خود را سخاوتمندانه با دیگران به اشتراک می گذارد. یکی از نکات درخشان او این است که نه تنها در مهارت های سخت خود حرفه ای است بلکه مهارت های نرم را نیز به خوبی می داند.