شرکت برنامه نویسی آوا

پروژه ای که خواهان پیاده سازیش هستم، پروژه ای هست برمبنای مفاهیم مهندسی نرم افزار مدل رانده. در حال حاضر ادیتوری بسیار ساده تحت کامند لاین داریم(lowkey)که با پایتون نوشته شده. این ادیتور کاملا شبیه به گوگل داک هست ساختارش به این نحو که چند کاربر با هم شبکه هستن و میتونند همزمان روی مدلها کار کنند. در واقع توسعه دهتدگان همزمان با هم شبکه هستند تحت ادیتور و به صورت آنلاین و ادیتور نام برده مدلها را از ورودی دریافت می کنه (مدل میتونه دیاگرام باشه مثل دیاگرام های یو ام ال) و اون رو در اختیار توسعه دهندگان میده تا به صورت همزمان روی اون کار بکنند (ادیت، حذف، تولید و …)
گاهی لازم نیست همه توسعه دهندگان به تمام بخش های مدل دسترسی داشه باشند (برای مثال اگر بخواهیم یک ماشین رو دیاگرامش رو طراحی کنیم، مهندس برق لازم هست به بخش برقش دسترسی داشته باشه و مهندس مکانیک به بخش های مکانیک). بنابراین مفهومی به عنوان view باید برای ادیتور تعریف بشه که این امکان رو بده که توسعه دهنده ها همزمان و به صورت آنلاین بتونند روی اون بخشی از مدل که به خودشون مرتبط هست کار کنند. اینجا ممکن هست تداخل به وجود بیاد. گاهی وقتی یک توسعه دهنده بخشی از یک مدل رو تغییر میده، روی بخش های دیگه هم اثر میگذاره و باعث ایجاد تداخل می شه. در حال حاضر ادیتور بسیار ساده ای (lowkey) داریم که فقط کاربران رو به هم وصل میکنه و تغییراتی که هرکسی میده برای دیگران هم نمایش داده میشه (گوگل داک). و مکانیزمی هم پیاده سازی شده برای رفع تداخل که مقاله مرتبط با این ادیتور و ساختارش رو میفرستم خدمتتون.
کاری که من باید انجام بدم این هست که مفهوم view را به این ادیتور اضافه کنم به نحوی که این امکان رو به توسعه دهندگان بده که هرکسی صرفا فقط بخشی که مرتبط هست به خودش رو تغییر بده بدون اینکه تداخل ایجاد بشه(مکانیزم و api رفع تداخل کدش آماده هست). برای پیاده سازی این مفهوم از من خواسته شده از proxy node استفاده بکنم که در حافظه صرفه جویی بشه.
ضمن اینکه این ادیتور خیلی ابتدایی و ساده هست و ترجیح من اینه که گرافیکی یا حداقل تکستی پیاده سازی بشه.
ادیتور باید کارهای زیر رو بتونه انجام بده:
1- Create new model (create new view)
2- Add view
3- Add proxy Element
4- Create new Element
5- Update/Delete
Change propagation:
1- Add proxy in other view
2- Update all proxies
3- Delete proxies