داستان موفقیت
LanderCo — نوسازی اپلیکیشن اندروید ردیابی خودرو
بازسازی اپلیکیشن اندروید ردیابی خودرو LanderCo — نوسازی یک محصول قدیمی چندزبانه بدون از دست رفتن قابلیتها، برای اینکه دوباره قابل توسعه شود.
نتیجه در یک نگاه
قابل توسعه و انتشار
وضعیت محصول پس از نوسازی
حفظشده
قابلیتها و منطق موجود
۱۷
زبان پشتیبانیشده
مسئله
اپلیکیشن ردیاب خودروی کارفرما سالها روی دستگاههای واقعی کار کرده و منطق میدانی پختهای داشت، اما بر پایه فناوریهای قدیمی ساخته شده بود: افزودن هر قابلیت تازه عملاً ممکن نبود، انتشار نسخه جدید با محدودیت روبهرو میشد و بخشی از سرویسهای جانبیاش متعلق به بازار چین بود و بیرون از آن کشور قابل اتکا نبود. مسئله، کارکرد محصول نبود؛ این بود که محصول به بنبست توسعه رسیده بود.
رویکرد ما
بهجای بازنویسی از صفر — که یعنی از دست دادن سالها تجربه میدانی محصول و شروع دوباره تمام اشکالاتی که قبلاً پیدا و رفع شده بودند — اپلیکیشن مرحله به مرحله نوسازی شد. هر مرحله جداگانه ساخته و آزمایش شد و امکان بازگشت داشت، تا محصول در هیچ نقطهای از کار نیفتد. سرویسهای اعلان و گزارش خطا با گزینههای بینالمللی جایگزین شدند، باقیماندههای بومیسازی بازار چین از رابط کاربری برداشته شد و متنهای فارسی بهروزرسانی شدند. در پایان یک دور کامل رفع اشکال بر اساس فهرست موارد اعلامی کارفرما انجام شد.
اپلیکیشن اندروید ردیابی خودروی LanderCo محصولی بود که سالها کار کرده بود اما به بنبست توسعه رسیده بود. کار ما بازنویسیاش نبود؛ قابل توسعه کردنش بود.
آنچه تغییر کرد
- فناوری زیرین اپلیکیشن نو شد تا افزودن قابلیت و انتشار نسخه دوباره ممکن باشد
- سرویسهای اعلان و گزارش خطا با گزینههای بینالمللی جایگزین شدند
- رابط کاربری از باقیماندههای بومیسازی بازار چین پاک و متنهای فارسی بهروزرسانی شد
- یک دور کامل رفع اشکال بر اساس فهرست موارد اعلامی کارفرما انجام شد
آنچه تغییر نکرد
قابلیتها و منطق محصول. ردیابی، حصار جغرافیایی، بازپخش مسیر و مدیریت دستگاهها همانطور ماندند که بودند.
در نوسازی، این بخش سختترین چیزی است که میشود از دست داد: منطقی که سالها روی دستگاههای واقعی و در شرایط واقعی پخته شده و در هیچ سندی نوشته نشده است.
در انتظار تکمیل: آماری که کارفرما اجازه انتشارش را میدهد (تعداد دستگاه فعال یا نصب اپلیکیشن) · نقلقول کارفرما · بکاند لندر طبق تصمیم فعلی خارج از دامنه این پرونده است؛ اگر قرار است منتشر شود، پرونده مستقل خودش را میگیرد.
فناوریهای استفادهشده
- Kotlin
- Java
- اندروید
- Firebase
داستان پروژه
01چالش
اپلیکیشنی که کار میکرد، ولی دیگر قابل توسعه نبود
کارفرما اپلیکیشن ردیاب خودرو داشت که سالها روی دستگاههای واقعی کار کرده بود، اما بر پایه فناوریهای قدیمی ساخته شده بود و افزودن هر قابلیت تازه به آن عملاً ممکن نبود. بخشی از سرویسهای جانبیاش هم متعلق به بازار چین بود و بیرون از آن کشور قابل اتکا نبود.
02ساخت
نوسازی گامبهگام، بدون بازنویسی از صفر
بهجای بازنویسی کامل — که یعنی دور ریختن سالها تجربه میدانی محصول — اپلیکیشن مرحله به مرحله نوسازی شد. هر مرحله جداگانه ساخته و آزمایش شد تا محصول در هیچ نقطهای از کار نیفتد و منطق و قابلیتهای موجود دستنخورده بماند.

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

کارکردهای اپلیکیشن
ردیابی زنده
نمایش موقعیت لحظهای خودرو یا دستگاه روی نقشه.
بازپخش مسیر
مرور مسیر پیمودهشده بههمراه سرعت، زمان و مدت توقف.
حصار جغرافیایی
تعریف محدوده مجاز برای هر دستگاه و اعلان هنگام خروج از آن.
اطلاعات فنی خودرو
نمایش دادههای دیاگ خودرو در کنار اطلاعات موقعیت.
مدیریت دستگاه و کاربر
ثبت و مدیریت دستگاهها، کاربران، پیامها و گزارشهای آماری.
پشتیبانی از ۱۷ زبان
از جمله فارسی، عربی، انگلیسی و روسی.
پرسشهای پرتکرار درباره این نوع پروژه
چرا بازنویسی از صفر انجام نشد؟
چون اپلیکیشن کار میکرد و منطق دامنهاش — ردیابی، حصار جغرافیایی، بازپخش مسیر — سالها روی دستگاههای واقعی پخته شده بود. بازنویسی یعنی دور ریختن همان بخش و شروع دوباره تمام اشکالاتی که قبلاً پیدا و رفع شده بودند. مسئله، منطق محصول نبود؛ فناوری زیر آن بود.
چطور مطمئن شدید در این مسیر چیزی از کار نیفتاد؟
با کوچک نگهداشتن گامها. نوسازی به مراحل مستقل شکسته شد که هر کدام جداگانه ساخته و آزمایش میشد و امکان بازگشت داشت — بهجای یک تغییر بزرگ که اگر جواب ندهد، مشخص نیست کدام بخشش مقصر بوده است.
محصول قدیمی ما هم چنین وضعی دارد — از کجا شروع کنیم؟
از یک ارزیابی کوتاه: چه چیزی از محصول فعلی ارزش نگهداشتن دارد و چه چیزی مانع توسعه است. در بسیاری از موارد — مثل همین پروژه — منطق و داده ارزشمندند و فقط لایه فنی زیر آنها باید نو شود، که هم ارزانتر از بازنویسی است و هم کمریسکتر.
در جریان نوسازی، کاربران فعلی دچار قطعی میشوند؟
در این پروژه خیر. نوسازی روی نسخههای آزمایشی جلو رفت و نسخه نهایی پس از یک دور کامل رفع اشکال منتشر شد.


