RIMA

توسعه تیمی

مراحل اجرای پروژه از ابتدا تا انتها

1.3.توسعه تیمی

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

رویکرد توسعه متمرکز

در این رویکرد هر برنامه نویس دارای یک کپی از کدهایی است که قرار است بر روی آن ها کار شود. این کدها و تغییراتی که بر روی آن ها اعمال می شود از طریق سیستم source control به روز رسانی می شود و از پایگاه داده اشتراکی بهره می گیرد. یک سرور مرکزی به نام سرورتجمیع متناوب  وجود دارد که دائما بر روی تغییراتی که در سیستم source control اعمال می شود نظارت دارد. وقتی که تغییرات شناسایی شدند، سرور تجمیع متناوب کدها را کامپایل و آن ها را در سروری که برای آزمون در نظر گرفته شده تجمیع می کند.

در این سناریو ممکن است در کدها تلاقی بوجود آید که در آنصورت لازم است ادغام بصورت دستی انجام شود. البته ما برای جلوگیری از تلاقی کدها و از بین رفتن دادهای پایگاه داده از تکنیک های قفل و نسخه بندی آبجکت ها استفاده می کنیم (در ریما منظور از آبجکت ها هر چیزی است که ما بر روی آن کار می کنیم یا با آن سروکار داریم یا برای توسعه سیستم از آن ها استفاده می کنیم).

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

مزایا

  • همه تنظیمات، محتوا و ... بین کلیه توسعه دهندگان یکسان است.
  • فقط یک سرور به همراه یک کپی از پایگاه داده ریما نیاز است.
  • پیکربندی و نگهداری آن آسان است.

معایب

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

رویکرد توسعه توزیعی

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

مزایا

  • توسعه دهندگان در محیط های کاملا مجزا از هم قرار دارند و براحتی می توانند کار برنامه نویسی و توسعه خودشان را بدون اینکه تاثیری بر روی کار دیگران بگذارند، انجام می دهند.
  • تغییرات صورت گرفته بر روی پایگاه داده در سیستم سورس کنترل پیگیری شده و نیازمند ادغام خواهد بود (بصورت اتوماتیک).
  • این امکان را فراهم می کند که قالب های portal-engine در داخل سورس کنترل مدیریت شوند.
  • امکان استقرار کدها و تغییرات sql به طور همزمان فراهم است.

معایب

  • تغییرات در پایگاه داده می تواند منجر به مغایرت های پیچیده در ادغام شود.
  • توسعه دهندگان در محیط های مختلف به داده های به روز دسترسی نخواهند داشت.
  • همه آبجکت های ریما در این روش پشتیبانی نمی شوند.




استفاده از سورس کنترل

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

استقرار

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