راهنمای عملی برای نوشتن مشخصات فنی
۲۲ اردیبهشت ۱۳۹۹
سارا رشادی‌زاده

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

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

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

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

سند مشخصات فنی چیست؟ 

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

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

سند مشخصات فنی به تیم مهندسان و سایر ذی‌نفعان پروژه نشان می‌دهد که طرح و جزئیات کار چیست. همچنین درباره مشکلات و اثرات، زمانبندی ساخت فیچر‌ها (features)، کلیت پروژه، برنامه یا خدمات اطلاعات زیادی می‌دهد.

چرا نوشتن مشخصات فنی مهم است؟

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

مزایای سند مشخصات فنی برای مهندسان

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

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

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

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

مزایای سند مشخصات فنی برای تیم

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

مزایای مشخصات فنی برای پروژه

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

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

همچنین پس از پیاده‌سازی به رفع مشکلات پیش‌بینی شده در پروژه کمک می‌کند و راه‌حل‌هایی برای رفع مشکلات قبلی ارائه می‌دهد.

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

قبل از نوشتن مشخصات فنی چه باید کرد؟

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

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

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

محتوای سند مشخصات فنی

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

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

براساس تجربه من، هفت بخش اصلی در سند مشخصات فنی وجود دارد:

موضوع پیش‌رو

مقدمه

راه‌حل‌ها

ملاحظات بیشتر

ارزیابی موفقیت

کار

بررسی

موضوع نهایی

۱ موضوع پیش رو:

تیتر

نویسندگان

اعضای تیم

بازنگری 

تعیین اینکه بر اساس چه چیزی نوشته شده است

تاریخ آخرین به‌روز رسانی

موضوع، برچسب، نسخه یا پیوند مرجع برای ردیابی

۲ مقدمه

الف: بررسی کلی، شرح مسئله، خلاصه یا چکیده 

- خلاصه‌ای از مشکل ( از دیدگاه کاربران)، زمینه، راه‌حل‌های پیشنهادی و ذی‌نفعان

ب: واژه ‌نامه یا واژه ‌شناسی

- اصطلاحات جدیدی که هنگام تحقیق درباره طرح به آن‌ها برخورد کردید و فکر می‌کنید که شاید خوانندگان یا ذی‌نفعان متوجه معنای آن نشوند.

ج: متن یا زمینه

- دلایل اینکه چرا این مشکل ارزش حل شدن را دارد.

- منشا مشکل

- تاثیر این مشکل بر کاربران و اهداف شرکت

- نگاهی به تلاش‌های گذشته برای حل آن و اینکه چرا موثر نبوده‌اند.

- چگونگی ارتباط محصول با اهداف تیم (OKR)

- یافتن راه‌حل متناسب با نقشه راهبردی و استراتژی کلی محصول

- یافتن راه‌حل متناسب با استراتژی فنی

- اهداف یا نیازهای فنی و محصول

د: اهداف یا نیازهای فنی و محصول

- نیازهای محصول در قالب داستان کاربر (User Story)

- نیازهای فنی

ه: مواردی که هدف نیستند یا خارج از دامنه هستند

- محصول یا نیازهای فنی که نادیده گرفته می‌شوند.

و: اهداف آینده

- محصولات و نیازهای فنی که برای بعد برنامه‌ریزی می‌شوند.

ز: فرضیات

- شرایط و منابعی که برای کار با راه‌حل باید در دسترس باشند.

راه‌حل‌ها

الف: راه‌حل یا طرح‌های موجود

- شرح راه‌حل موجود

- جوانب مثبت و منفی راه‌حل فعلی

ب: راه‌حل یا طرح‌های پیشنهادی

- مولفه‌های خارجی که راه‌حل با آن‌ها ارتباط برقرار می‌کند و آن را تغییر می‌دهد.

- وابستگی به راه‌حل فعلی

- جوانب مثبت و منفی راه‌حل پیشنهادی

- تغییر داده‌های مدل:

             - تعریف طرح جدید

             - مدل‌های داده جدید

             - مدل‌های داده اصلاح شده

             - روش‌های اعتبارسنجی داده

- منطق کسب و کار:

             - تغییرات API

             - شبیه‌سازی دستور العمل‌‌ها

             - رسم نمودارهای گردشی

             - حالت‌های خطا

             - سناریو‌های شکست

             - شرایطی که منجر به خطا و شکست می‌شود

             - محدودیت‌ها

- مرحله معرفی:

             - نیازهای کاربر

             - تغییرات UX

             - تغییرات UI

             - وایرفریم‌ها (Wireframes) با تشریح

             - ارتباط آن‌ها با کار طراح UI/ UX

             - ویژگی‌های طرح موبایلی

             - ویژگی‌های طرح وب

             - ویژگی‌های UI

             - رسیدگی به خطاها

- سایر سوالاتی که باید پاسخ داده شود:

             - مقیاس کاربردی این راه حل چقدر است؟

             - محدودیت‌های این راه حل چیست؟

             - چگونه در لحظه شکست می‌شود آن را بازسازی کرد؟

             - چگونه نیازهای آینده را پوشش می‌دهد؟

ج: طرح آزمایشی

- توضیح اینکه چگونه با آزمایش مطمئن شویم که نیازهای کاربر برآورده می‌شود.

- آزمایش‌های تک به تک

- آزمایش پس از ادغام

- QA (آزمایش کیفیت)

د: انتشار / آماده‌سازی و استقرار

- معماری استقرار

- محیط‌ استقرار

- مرحله آماده‌سازی مانند استفاده از ویژگی پرچم‌

- برنامه‌ریزی برای اینکه بدانید چگونه می‌توان بین تغییرات و کاربران ارتباط برقرار کرد. به‌عنوان مثال با قرار دادن یادداشت.

ه: برنامه برگشت

- جزییات و بدهی‌های فنی

- برنامه‌ریزی برای کاهش بدهی‌ها

- توصیف برنامه‌ریزی اینکه چگونه از ایجاد مشکل بر دیگر مولفه‌ها، سرویس‌ها یا سیستم‌ها جلوگیری می‌کنید.

و: طرح یا راه حل جایگزین

- خلاصه‌ای از هریک از راه‌حل‌های جایگزین

- جوانب مثبت و منفی هرکدام

- دلایل اینکه چرا هریک از راه‌حل‌ها کار نمی‌کنند

- راه‌هایی که گزینه‌های دیگر نسبت به راه‌حل‌های پیشنهادی پایین‌تر بودند.

- در صورت از بین رفتن راه حل پیشنهادی، برنامه مهاجرت به بهترین گزینه جایگزین اجرا می‌شود.

ملاحظات بیشتر

الف: تاثیر این تصمیم بر دیگر تیم‌ها

ب: تجزیه و تحلیل هزینه

ج: موارد امنیتی

د: حریم خصوصی

ه: موارد منطقه‌ای

و: دسترسی

ز: عملیات

ح: خطرات

ت: پشتیبانی

ارزیابی موفقیت

الف: تاثیر بر 

- موارد امنیتی

- عملکرد

- هزینه

- سایر مولفه‌ها

ب: معیارها

- لیست معیارهای موجود

- ابزارهای اندازه‌گیری معیارها

کار

الف: برآورد کار و جدول زمانی

- شامل لیستی از مشخصات فنی، اندازه‌گیری آن‌ها و محدودیت زمانی تسک‌ها

- منابع مورد نیاز برای اتمام هر تسک

- تخمینی برای اینکه هر تسک در چه مدتی انجام شود.

- اولویت بندی براساس فوریت و تاثیر

ب: مایلستون

- زمان سررسید قراردادی در بازه‌های زمانی مشخص که در آن بخش قابل توجهی از کار مشخص شده

- اندازه‌گیری میزان کار براساس مایلستون‌های گذشته

ج: کارهای آینده

- فهرستی از تسک‌هایی که در آینده کامل می‌شوند.

بررسی

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

ب: سوال درباره چیزهایی که پاسخ آن را نمی‌دانید یا مطمئن نیستید و فقط به خاطر تیم یا ذی‌نفعان مطرح کرده‌اید. این کار باعث می‌شود جنبه‌های مختلف مشکل را بهتر ببینید.

موضوع نهایی

الف: کار مرتبط

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

ب: منابع

- پیوند به اسناد و منابعی که هنگام ایجاد سند مشخصات فنی خود از آن‌ها استفاده کرده‌اید.

ج: تشکر

- تشکر از افرادی که به شما در این راه کمک کرده‌اند.

پس از نوشتن سند مشخصات فنی:

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

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

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

فراموش نکنید که نوشتن تست فنی می‌تواند یک راه موثر برای تضمین موفقیت پروژه شما باشد. باید کمی برنامه‌ریزی کنید تا بتوانید با یک پیش‌بینی صحیح اجرای واقعی پروژه را ساده کنید.

ترجمه آزاد: A practical guide to writing technical specs

تهران، خیابان ابوذر غفاری، کوچه چهاردهم، پلاک ۸، واحد ۲
۲۲۵۰۵۶۶۱ - ۲۲۳۲۴۴۷۲