Playbook توسعه محصول IoT از ابتدا تا انتها – مرحله 1: نیازمندیهای ذینفع و سیستم
اولِ اولیها!
نیازمندیها در هر پروژه IoT خوبادارهشدهای اول میآیند—قبل از شماتیک، قبل از firmware، قبل از اولین خط کد. تصمیم گرفتهاید ایده محصولتان ارزشمند است و وسوسه این هست که مستقیم به ساختن بشتابید. مقاومت کنید. مرحله 1 درباره گردآوری نیازمندیها است، بنیان هر چیزی که بعد میآید. شاید به هیجان روشنشدن یک مدار جدید یا نوشتن کد نباشد، اما آن را کشیدن نقشه قبل از بیرونزدن به دریا بدانید. سفرهای بدون نقشه قطعاً ماجراجویانهاند—فقط بهندرت خوب تمام میشوند.
در مرحله 1: نیازمندیهای ذینفع و سیستم، ورودی همه بازیگران کلیدی را جمع میکنیم و دقیقاً تعریف میکنیم چه میسازیم و چرا: محصول باید چه کار کند، چه شرایطی را باید برآورده کند و از چه محدودیتهایی پیروی کند. زمانی که اینجا سرمایهگذاری میشود بعداً برمیگردد. هر تصمیم طراحی، هر خط کد و هر تستی که در راه است به همین نیازمندیها باز میگردد—آنها ستاره شمال پروژهاند. بدون آنها جلو بشتابید و ریسک میکنید چیز اشتباهی بسازید، یا بعد از ماهها کار کشف کنید یک قابلیت کلیدی از قلم افتاده یا یک فرضیه اشتباه بوده است.
در این فصل بررسی میکنیم ثبت نیازمندیهای ذینفع و سیستم یعنی چه: چرا این مرحله مهم است، چه نوع نیازمندیهایی را باید در نظر بگیرید و چگونه آنها را شفاف مستند کنید. مثالهایی هم میآوریم که نشان میدهد دقیقکردن نیازمندیها از اول چگونه سرنوشت یک پروژه IoT را رقم میزند.
نیازمندیها دقیقاً چه هستند؟
پس منظورمان از «نیازمندی» چیست؟ به زبان ساده، توصیف دقیقیاند از اینکه محصولتان باید چه کار کند و تحت چه شرایطی باید آن را انجام دهد—قانوننامه پروژه، که همه انتظارات از دستگاه را قبل از ساختنش ثبت میکند. اگر محصولتان یک داستان بود، نیازمندیها طرح کلی داستان میشدند: مطمئن میشوند همه عناصر کلیدی تعریف شدهاند تا داستان در انتها هم منسجم باشد.
نیازمندیها چند گونه دارند که هر کدام جنبه متفاوتی از محصول را پوشش میدهند:
- نیازمندیهای عملکردی: چیزی که محصول باید انجام دهد—قابلیتها و رفتارهایش.
- نیازمندیهای غیرعملکردی: کیفیتها و محدودیتهای محصول—چقدر خوب عمل میکند، چقدر دوام میآورد، و مانند اینها.
- نیازمندیهای رابط: محصول چگونه با سیستمهای دیگر و دنیای بیرون تعامل میکند.
هر دسته را با جزئیات مرور میکنیم. فعلاً به یاد داشته باشید یک نیازمندی خوب روشن، مشخص و قابل آزمون است. «دستگاه باید عالی باشد» به تیم مهندسیتان کمکی نمیکند. «دستگاه باید دما را از 0°C تا 50°C با دقت ±0.5°C اندازه بگیرد» کمک میکند: هر خوانندهای دقیقاً میداند چه انتظاری هست، و بعداً میتوانید تست کنید دستگاه برآوردهاش میکند یا نه. همین سطح از وضوح را هدف بگیرید.
نیازمندیهای عملکردی
نیازمندیهای عملکردی قابلیتها، کارکردها و رفتارهای مشخص محصول IoTتان را توصیف میکنند—چیزی که سیستم باید انجام دهد. اگر کسی بپرسد «دستگاهت چه کار میکند؟»، جواب خلاصهای از نیازمندیهای عملکردیاش است: اعمال و خدماتی که دستگاه به کاربر یا سیستمهای دیگر ارائه میدهد.
برای یک دستگاه IoT، نیازمندیهای عملکردی اغلب شامل اینهاست:
- سنس کردن داده یا انجام اعمال: دستگاه چه دادهای را اندازه میگیرد، یا چه اعمالی انجام میدهد؟ (مثلاً دما را اندازه میگیرد، یک شیر را باز میکند، موقعیت را ردیابی میکند)
- دقت و بازه داده: اندازهگیریها چقدر دقیقاند و در چه بازهای؟ (مثلاً دما را از 0°C تا 50°C با دقت ±0.5°C اندازه میگیرد)
- فرکانس یا زمانبندی: هر چند وقت کارکردش را انجام میدهد—هر دقیقه، هر ساعت؟ با چه سرعتی باید پاسخ دهد؟ (مثلاً یک خوانش هر 10 دقیقه، یا پاسخ در عرض 2 ثانیه)
- مدیریت داده: با داده چه میشود—به cloud فرستاده میشود، روی کارت حافظه لاگ میشود، روی یک نمایشگر نشان داده میشود؟
- حالتها یا قابلیتهای خاص: مثلاً یک حالت هشدار وقتی از آستانهای عبور میشود، کالیبراسیون خودکار، یا بهروزرسانی firmware از راه دور (OTA).
یک مثال مشخص. فرض کنید یک سنسور دمای IoT ساده برای خانه هوشمند میسازید. چند نیازمندی عملکردی میتواند اینها باشد:
- دستگاه باید دمای محیط را از 0°C تا 50°C با دقت ±0.5°C اندازه بگیرد.
- دستگاه باید حداقل هر 10 دقیقه یک بار از سنسور خوانش بگیرد (نرخ بهروزرسانی).
- بعد از هر خوانش، دستگاه باید داده سنسور را در عرض 30 ثانیه به یک سرور cloud منتقل کند (تأخیر داده).
- اگر دما از آستانه تعریفشده توسط کاربر بگذرد، دستگاه باید یک LED چشمک بزند و هشدار بفرستد.
هر کدام چیزی را توصیف میکند که سیستم انجام میدهد، معمولاً با قالب «دستگاه باید…» و یک رفتار مشخص پس از آن. این قالب راستیآزمایی بعدی را سرراست میکند: یا دستگاه X را طبق مشخصه انجام میدهد یا نه.
نیازمندیهای عملکردی خوب تصویری روشن از تواناییها میدهند، تا تیم مهندسی دقیقاً بداند چه پیاده کند. فقط بعد از آن است که طراحان سختافزار و نرمافزار میتوانند به چگونه رسیدن به آن فکر کنند—چه اول میآید، و به همین دلیل این نیازمندیها حالا تعریف میشوند. بدون آنها، ممکن است محصولی بسازید که آنچه کاربر واقعاً میخواهد را از دست میدهد: مثلاً یک ایستگاه هواشناسی IoT پیچیده که بدون سنسور رطوبت عرضه میشود چون هیچکس آن را ننوشته بود. تعریف نیازمندیهای عملکردی از اول، قابلیتهای حتمی را قبل از آن اتفاق ثبت میکند.
نیازمندیهای غیرعملکردی
نیازمندیهای غیرعملکردی بهجای قابلیتها، کیفیتها، شرایط و محدودیتهای محصول را مشخص میکنند: چقدر خوب عمل میکند، چقدر مقاوم است و از چه حدودی باید پیروی کند. آنها نردههای محافظ کیفیت کلی را میگذارند و به همان اندازه خود قابلیتها حیاتیاند—دستگاه را در دنیای واقعی ایمن، قابل اعتماد و کاربردی نگه میدارند.
ملاحظات غیرعملکردی رایج برای یک دستگاه IoT:
- مصرف توان و عمر باتری: دستگاه باید با یک منبع تغذیه مشخص چقدر کار کند؟ مثلاً «محصول باید با یک باتری قلمی حداقل 1 سال کار کند.» این تمرکز روی اجزای کممصرف و مدیریت توان بهینه را تحمیل میکند.
- قابلیت اطمینان و دوام: دستگاه باید در طول زمان چقدر مقاوم باشد؟ اغلب با میانگین زمان بین خرابیها (MTBF) یا مشابهش بیان میشود—«دستگاه باید حداقل 5 سال بدون خرابی بحرانی بهطور پیوسته کار کند.» این روی انتخاب اجزا و حاشیههای طراحی اثر میگذارد.
- امنیت و حریم خصوصی: چگونه از داده و حریم کاربر محافظت میکنید؟ مثلاً «همه انتقالهای داده باید با AES-256 رمزنگاری شوند» یا «اعتبارنامههای کاربر باید امن ذخیره شوند و هرگز بهصورت متن ساده منتقل نشوند.» در چشمانداز IoT امروز، نیازمندیهای امنیتی برای جلوگیری از نفوذ ضروریاند.
- محدودیتهای محیطی و فیزیکی: شرایطی که دستگاه باید تحمل کند، بهعلاوه محدودیتهای اندازه و وزن. «دستگاه باید از -20°C تا +60°C کار کند و تا IP67 ضدآب باشد» تضمین میکند از محیطهای سخت جان سالم به در میبرد؛ «دستگاه نباید بیش از 100 گرم وزن داشته باشد و باید در فضای 10cm x 5cm x 3cm جا شود» آن را در فرمفاکتور لازم نگه میدارد.
- محدودیتهای هزینه: احتمالاً یک هزینه هدف دارید—«هزینه تولید واحد نباید از 50 دلار بگذرد.» این معاوضهها را رقم میزند: یک قطعه ارزانتر اینجا، یک قابلیت حذفشده آنجا.
- انطباق قانونی: بسیاری از محصولات IoT باید استانداردها یا گواهینامههایی را بگیرند—«دستگاه باید با مقررات CE و FCC برای ارتباطات بیسیم مطابقت داشته باشد»، یا «باید از استاندارد ایمنی ISO 13849 پیروی کند» اگر بخشی از یک سیستم ماشین است. اینها نیازمندیهای غیرقابلمذاکرهایاند که استانداردهای صنعت و ایمنی تعیین میکنند.
فهرست بلندی است، اما نیازمندیهای غیرعملکردی را صفات کیفی بدانید که محصول باید داشته باشد. بهندرت به بروشور بازاریابی راه مییابند، اما نادیدهگرفتنشان محصول را به شکلهای کمتر آشکار میلغزاند. یک سنسور میتواند داده را بینقص گزارش کند (عملکردی!) و هنوز هر کاربری را کلافه کند چون باتریاش در یک روز تمام میشود. یک دستگاه میتواند در آزمایشگاه خوب کار کند و هنوز در اولین حمله زمین بخورد چون امنیت از ابتدا در آن ساخته نشده بود.
تعریف این کیفیتها از ابتدا تضمین میکند محصول نهایی فقط پر از قابلیت نیست، بلکه مقاوم، قابلاستفاده و قابل دفاع است. نیازمندیهای غیرعملکردی انتخاب اجزا، معماری نرمافزار (قابلیت اطمینان، امنیت)، طراحی مکانیکی (دوام، اندازه) و حتی نحوه تستکردن را هدایت میکنند. پشت صحنه کار میکنند، اما برای برآوردهشدن انتظارات ذینفعان و جانماندن در استقرار دنیای واقعی ضروریاند.
نیازمندیهای رابط
نیازمندیهای رابط تعریف میکنند محصولتان چگونه با دنیای بیرون اتصال و تعامل میکند—فیزیکی و منطقی. رابطها نقاط تماس بین دستگاهتان و هر چیز دیگرند: سختافزار دیگر، منابع تغذیه، محفظهها، کاربران و سیستمهای نرمافزاری. این دسته تضمین میکند دستگاه در اکوسیستم مورد نظرش جا میشود و در آن درست ارتباط برقرار میکند.
جنبههایی که نیازمندیهای رابط پوشش میدهند:
- رابطهای الکتریکی: هر اتصال یا سیگنال الکتریکی. آیا دستگاه به یک ورودی تغذیه خاص نیاز دارد (USB-C، پایانههای باتری)؟ آیا یک ولتاژ آنالوگ خروجی میدهد (سیگنال 0-5V) یا یک رابط دیجیتال (I²C، SPI، UART) به سختافزار دیگر ارائه میکند؟ یک نیازمندی میتواند این باشد: «دستگاه باید یک پورت USB-C برای تغذیه و اتصال داده داشته باشد» یا «باید یک خروجی آنالوگ 0-5V متناسب با خوانش سنسور ارائه دهد.»
- رابطهای ارتباطی: دستگاه چگونه با cloud، یک گوشی هوشمند یا دستگاههای دیگر حرف میزند—شبکهسازی و پروتکلها. مثلاً «دستگاه باید از طریق Wi-Fi به cloud وصل شود و از پروتکل MQTT برای انتشار داده سنسور استفاده کند»، یا «باید از Bluetooth Low Energy (BLE) برای ارتباط با یک اپ گوشی پشتیبانی کند.» اگر API لازم است، آن را هم مشخص کنید: «سرویس cloud باید یک endpoint از نوع REST API برای بازیابی داده دستگاه ارائه دهد.»
- رابطهای مکانیکی: شکل و فرم فیزیکی. دستگاه چقدر میتواند بزرگ باشد و چگونه نصب یا محفظهبندی میشود؟ «PCB دستگاه باید 5cm x 5cm باشد تا در یک محفظه استاندارد جا شود»، یا «باید سوراخهای نصب سازگار با یک براکت به سبک GoPro داشته باشد.» ضدآب و ضدگرد بودن هم یک نیازمندی محیطی است و هم یک ملاحظه رابط مکانیکی: «محفظه باید برای مقاومت در برابر آب و گرد درجه IP67 داشته باشد.» نکته این است که دستگاه بهصورت فیزیکی یکپارچه میشود هر جایی که قرار است برود.
- رابط کاربری (UI) و کنترلها: عناصری که کاربر با آنها تعامل میکند—دکمهها، نمایشگرها، LEDها. «دستگاه باید یک دکمه ریست فیزیکی در دسترس کاربر داشته باشد»، یا «باید یک LED نشانگر داشته باشد که حین انتقال داده چشمک بزند.» اینها تعریف میکنند کاربران چگونه از دستگاه اطلاعات میگیرند یا فرمان میفرستند.
دقیقکردن نیازمندیهای رابط روشن میکند همه قطعات چگونه به هم سوار میشوند. اگر سنسوری طراحی میکنید که به یک ماشین صنعتی وصل میشود، یک نیازمندی رابط مکانیکی اندازه و الگوی سوراخهای پیچ را مشخص میکند تا واقعاً جا شود. اگر دستگاه باتریدار است، یک نیازمندی رابط الکتریکی کانکتور استاندارد را تضمین میکند تا کاربر بهآسانی آن را شارژ کند. یکی را از دست بدهید و نتیجه کلاسیک را میگیرید: دستگاهی کاملاً خوب که هیچکس نمیتواند به آن وصل شود چون پورت درست را ندارد.
خلاصه، نیازمندیهای رابط مطمئن میشوند دستگاهتان با محیط و کاربرانش کار میکند—چه یک خانه هوشمند باشد، چه یک راهاندازی صنعتی، یا آدمی با یک گوشی. نادیدهگرفتنشان اغلب تفاوت بین محصولی سازگار و کاربرپسند و محصولی است که حین یکپارچهسازی سردرد درست میکند.
درگیرکردن ذینفعان از ابتدا
همه این نیازمندیها از کجا میآیند؟ از هوای نازک که نه—از ذینفعانتان جمع میکنید: هر کسی که در موفقیت محصول سهمی دارد. این شامل کاندیداهای بدیهی، یعنی کاربران نهایی و مشتریان است، اما همچنین بازاریابی، فروش، مهندسان رشتههای مختلف (سختافزار، نرمافزار، firmware)، مدیران پروژه و متخصصان قانونی یا انطباق. هر گروه نیازها و نگرانیهای خودش را دارد و نیازمندیها باید هر دیدگاه حیاتی را ثبت کنند.
ذینفعانتان را شناسایی کنید و زود درگیرشان کنید، چون آنها تعریف میکنند «موفقیت» چه شکلی است. بازاریابی ممکن است بگوید: «باید زیر 50 دلار باشد و با یک شارژ یک سال کار کند—مشتریان ما همین را انتظار دارند.» کاربران نهایی (یا یک پرسونای نماینده) ممکن است نیاز داشته باشند راهاندازی ساده و نگهداری حداقلی باشد. تیم نرمافزار ممکن است برای یکپارچهسازی با یک پلتفرم ابری به یک API مقاوم نیاز داشته باشد. متخصص امنیت روی رمزنگاری و احراز هویت اصرار خواهد کرد. یک مسئول انطباق درباره حدود انتشار رادیویی FCC یا استانداردهای ایمنی الکتریکی یادآوری میکند. همه این ورودیها نیازمندی میشوند.
آشکارکردن این نیازها حالا بسیار ارزانتر از بعداً است. جلسات طوفان فکری، کارگاهها یا مصاحبههای ساده با هر گروه ذینفع، فهرستی جامع میسازد. این کار را در خلاء انجام ندهید: نیازمندیای که بدون ورودی ذینفع نوشته شود میتواند هدف را از دست بدهد. تیم پشتیبانی مشتری را رد کنید و ممکن است «دستگاه باید مکانیزم ریست برای بازگردانی تنظیمات کارخانه ارائه دهد» را از دست بدهید—که برای عیبیابی مهم است. تولید را رد کنید و ممکن است طراحیای مشخص کنید که برای تولید در حجم، زیادی گران یا زیادی سخت است.
درگیری زودهنگام مشارکت ذهنی هم میسازد. وقتی آدمها نگرانیهایشان را در نیازمندیها پاسخدادهشده میبینند، از پروژه حمایت میکنند و غافلگیریهای کمتری بعداً سر میزند. ذینفعان تجربه میآورند—استفاده از آن حالا، از تغییرهای دردناک در ادامه راه جلوگیری میکند.
با انباشتهشدن این ورودیها، تصویر نیازمندیهای عملکردی، غیرعملکردی و رابط لازم شکل میگیرد. این مرحله در اصل پلزدن شکاف بین یک ایده امیدبخش و یک محصول روشنتعریفشده است: آرزوهای مهآلود («باید ارزان باشد! باید امن باشد! باید X و Y را انجام دهد!») با حرفزدن با آدمهای درست و پرسیدن پرسشهای درست، به نیازمندیهای دقیقی تبدیل میشوند که مهندسها بتوانند با آنها کار کنند.
گردآوری نیازمندیها یک ورزش تیمی است. بازیگران کلیدی را به اتاق بیاورید—بهمعنای واقعی یا مجازی—و بجنبانید که دستگاه باید چه کار کند. هر چه دیدگاههای بیشتری حالا وارد کنید، نقاط کور کمتری به مرحلههای بعد میبرید.
مستندسازی و ردیابی نیازمندیها
وقتی جمع شدند، نیازمندیها باید شفاف نوشته و سازماندهی شوند. یک ثبت خوشساختار همه را در یک صفحه نگه میدارد و تضمین میکند هیچچیز گم نمیشود. در عمل، تیمها روشهای متفاوتی استفاده میکنند:
- سند رسمی نیازمندیها: بسیاری از پروژهها یک مشخصات نیازمندیهای سیستم (SRS) یا سند نیازمندیهای محصول (PRD) میسازند—سندی ساختیافته (گاهی پیرو استانداردهایی مثل IEEE 29148) که هر نیازمندی در آن فهرست میشود، اغلب با یک شناسه یکتا (مثلاً REQ-001: دستگاه باید X را انجام دهد). اسناد رسمی به صنایعی میآیند که ردیابی سختگیرانه لازم دارند: هوانوردی، خودرو، تجهیزات پزشکی.
- بکلاگ Agile (user storyها): بعضی تیمها، مخصوصاً تیمهای چابک، نیازمندیها را بهصورت user story، اپیک یا آیتم در ابزاری مثل Jira یا یک ویکی ثبت میکنند. مثلاً: «بهعنوان صاحبخانه، میخواهم سنسور وقتی دمای خانهام از 30°C بالاتر رفت به من هشدار دهد تا کولر را روشن کنم.» چنین storyای به نیازمندیهای مشخص برای تیم مهندسی تجزیه میشود (مثلاً یک نیازمندی عملکردی برای هشدار دمای بالا). قالبهای Agile آزادترند، اما نیازمندیهای زیرین باز هم باید مشخص و قابل آزمون باشند.
هر قالبی که انتخاب کنید، هر نیازمندی را بدون ابهام و قابل آزمون نگه دارید. از کلمات مبهم مثل «بهینه»، «کاربرپسند» یا «کافی» بدون کمیسازی دوری کنید؛ از اعداد مشخص یا معیارهای روشن استفاده کنید. بهجای «عمر باتری باید طولانی باشد» بنویسید «عمر باتری باید با یک بار شارژ و آپلود ساعتی داده حداقل 12 ماه باشد.» این هدفی است که طراحان میتوانند به سمتش کار کنند، بدون حدسزدن.
یک عادت مفید دیگر: هر نیازمندی را با روش راستیآزمایی آیندهاش برچسب بزنید—از حالا فکر کنید چگونه ثابت میکنید محصول برآوردهاش میکند. روشهای راستیآزمایی رایج:
- تست: دستگاه را مستقیم در برابر نیازمندی تست کنید. (مثلاً اندازه بگیرید با یک باتری چقدر کار میکند تا عمر باتری 12 ماهه راستیآزمایی شود.)
- تحلیل: از محاسبات یا شبیهسازی استفاده کنید. (مثلاً الگوریتمهای رمزنگاری را در برابر نیازمندیهای امنیتی تحلیل کنید، یا مصرف توان را برای برآورد عمر باتری محاسبه کنید.)
- بازرسی: با مشاهده یا اندازهگیری محصول نهایی راستیآزمایی کنید. (مثلاً ابعاد دستگاه را با کولیس در برابر نیازمندی اندازه اندازه بگیرید، یا PCB را برای پوشش محافظ اعمالشده برای ضدآببودن بازرسی کنید.)
- گواهینامه/نمایش: از طریق گواهینامه یا انطباق اثباتشده راستیآزمایی کنید. (مثلاً دستگاه را به آزمایشگاهی بفرستید تا انطباقش با استانداردهای قانونی FCC/CE را گواهی کند، یا یک تست نفوذ آب برای اثبات نیازمندی IP67 اجرا کنید.)
برچسبزدن روش راستیآزمایی از ابتدا—بعضی تیمها یک ستون «روش راستیآزمایی» به سند نیازمندیها اضافه میکنند—هر نیازمندی را وادار میکند طوری بیان شود که بعداً قابل اثبات باشد. همچنین از آن لحظه فاز تست جلوگیری میکند که کسی بپرسد: «صبر کنید، چطور بررسی کنیم به این هدف مبهم رسیدهایم یا نه؟»
بالاخره، سند نیازمندیها را بهروز نگه دارید. با تکامل پروژه ممکن است نیازمندیها را پالایش یا اضافه کنید (در حالت ایدهآل نه چندان زیاد، اگر کار اولیه کامل بوده باشد). یک فهرست سازمانیافته و نسخهبندیشده—حتی یک صفحهگسترده ساده یا سند زنده—همه را روی نیازمندیهای توافقشده فعلی همراستا نگه میدارد و به اعضای جدید تیم کمک میکند بفهمند محصول قرار است چه کار کند.
خلاصه: نیازمندیها را روی کاغذ یادداشت ننویسید و به بهترین حالت امیدوار نباشید. آنها را شفاف و ساختیافته بنویسید—یک سند رسمی یا یک بکلاگ خوشنگهداری. وضوح حالا از سردرگمی بعد جلوگیری میکند، و برنامهریزی زودهنگام راستیآزمایی، راه را برای فاز تست هموارتر میکند.
جمعبندی مرحله 1
یک بار دیگر، قبل از رفتن جلو: تغییر دیرهنگام یک نیازمندی مثل تصمیم به اضافهکردن یک اتاق خواب بعد از ساختهشدن خانه است—ممکن است، اما دردناک و گران. در IoT، «دردناک و گران» میتواند یعنی طراحی مجدد کامل PCB چون یک سنسور جا افتاده، یا یک بازنگری بزرگ firmware چون یک کاربرد در نظر گرفته نشده بود. میتواند یعنی تأخیرها، انحرافهای بودجه، یا در بدترین حالت، محصولی که کاربران و ذینفعانش را ناامید میکند.
سرمایهگذاری تلاش حالا برای ثبت نیازمندیهای ذینفع و سیستمِ روشن، نقشه و راهنمای پروژه را میسازد. نیازمندیها نقطه مرجع همه درگیران میشوند:
- مهندسان سختافزار با آنها اجزا را انتخاب و مدارهایی طراحی میکنند که مشخصات را برآورده کنند.
- توسعهدهندگان نرمافزار و firmware کدی مینویسند که کارکردها و عملکرد مشخصشده را پیاده کند.
- تسترها طرحهای تست را مستقیم از نیازمندیها میسازند—هر نیازمندی قابل راستیآزمایی طبیعتاً به یک یا چند تستکیس ترجمه میشود.
- مدیران پروژه پیشرفت را با تیکزدن نیازمندیهای برآوردهشده دنبال میکنند و مطمئن میشوند هیچ چیز حیاتی حذف نمیشود.
- ذینفعان نمای شفافی میگیرند از اینکه محصول چه کارهایی را—و چه کارهایی را نه—انجام خواهد داد.
وقتی اختلافها یا ایدههای جدید بعداً ظاهر میشوند، سند نیازمندیها ستاره شمالی است که تیم را همراستا نگه میدارد. اگر کسی وسط توسعه یک قابلیت اضافی پیشنهاد دهد، میتوانید بپرسید: «طبق نیازمندیهای توافقشده ما این در محدوده است؟ اگر نه، برای اضافهکردنش چه چیزی را معاوضه میکنیم؟»
پس وقت بگذارید و مرحله 1 را درست انجام دهید. ذینفعان را بیاورید، کارکردها و محدودیتها را خوب فکر کنید، همهچیز را شفاف بنویسید و دوبار بررسی کنید که منسجم است. تکرار روی یک مشخصه بسیار ارزانتر از تکرار روی یک دستگاه فیزیکی یا یک کدبیس است. این مرحله را خوب انجام دهید، و هر مرحلهای که بعد میآید را آماده کردهاید.
با مجموعهای محکم از نیازمندیهای ذینفع و سیستم در دست، آمادهاید جلو بروید و چیزی طراحی و بسازید که آنها را برآورده کند. و در این کار، نقشه را همراه دارید—اولِ اولیها، درست انجامشده.