پروژه‌ی نمونه درس مهندسی نرم‌افزار ۲
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md

README.md

ویرایشگر متن

متن‌هایی که هر روز با نرم‌افزارهای ویرایشگر می‌نویسیم، ساده هستند و کوتاه. حتی وقتی چندین تیتر و پاراگراف هم نوشته‌ایم، همه یک‌جور هستند. نرم‌افزارهای ویرایشگر اما، پیچیده‌اند و پر از دکمه‌های جورواجور در حدی که چند وقت یک‌بار آشنایی برای پرسیدن اینکه «چطور می‌تواند سندش را فلان‌جور کند؟» تماس می‌گیرد و ما متخصص‌های کامپیوتر هم به‌شان پاسخ می‌دهیم.

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

مشکل

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

نمونه‌های مشابه

ویژگی‌های محصول

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

مدیریت پروژه

ما با روش Agile پروژه را پیش می‌بریم و از نرم‌افزار Pivotal Tracker برای مدیریت پروژه استفاده می‌کنیم. توسعه پروژه در دو بخش اصلی، انجام می‌شود:

  • واسط گرافیک ویرایش متن

    • کنترل‌های ویرایشگر
    • مدیریت فایل‌های تصویر درون متن
    • واسط تغییرات جزئی تصویر مثل تغییر اندازه و برش
  • پشتوانه ذخیره و هم‌گام‌سازی

    • ذخیره در مرورگر
    • هم‌گام‌سازی با سرویس‌های ذخیره‌سازی مثل Dropbox
    • تولید خروجی PDF نهایی

تکنولوژی‌ها

  • BackboneJs

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

  • LocalStorage

    این ویژگی که جزئی از استاندارد HTML5 محسوب می‌شود، امکان ذخیره داده در مرورگر را برای ما فراهم می‌کند؛ شبیه به یک دیتابیس با قابلیت‌های بسیار محدود.

  • MathJax

    نمایش فرمول‌های ریاضی در متن توسط این کتابخانه انجام می‌شود که سازگاری بسیار بالایی با مرورگرهای مختلف دارد.

تضمین کیفیت

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

نحوه گسترش

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