Tohum

Playbook توسعه محصول IoT از ابتدا تا انتها – مقدمه

تصویرسازی: جاده‌ای پیچ‌درپیچ از نخستین ایده تا پرتاب، با ایستگاه‌هایی در مسیر

رساندن یک محصول سنسینگ IoT متصل به cloud از یک ایده اولیه به عرضه موفق، سفری ساخت‌یافته است—و پرهزینه‌ترین اشتباه‌ها از ردکردن یک مرحله می‌آیند. این مقدمه شما را با یک playbook سرتاسری و آزموده‌شده در میدان برای آن سفر آشنا می‌کند، از جرقه ایده تا عرضه و پس از آن. آن را کاربردی و دنبال‌کردنی نگه می‌داریم—حرفه‌ای، با گاه‌به‌گاه یک لحظه خفن، چون حتی مهندسی جدی هم چنین لحظه‌هایی دارد. چه یک مدیر محصول تازه‌کار باشید، چه یک مهندس در حال رشد یا یک معمار مشتاق، این راهنما نمای پرنده از فرایند و آنچه در هر مرحله انتظارتان می‌رود به شما می‌دهد.

چرا از playbook پیروی کنیم؟ پروژه‌های IoT قطعات متحرک زیادی دارند: سخت‌افزار، firmware، سرویس‌های cloud، اپ‌ها. یک کار ژانگولی است و بدون برنامه، چیزی زمین می‌افتد. این playbook مهندسی سیستم‌های کلاسیک را (تا هیچ چیز حیاتی از قلم نیفتد) با یک ریتم چابک و تکرارشونده Agile ترکیب می‌کند (تا تیم‌های firmware و cloud بتوانند سریع حرکت کنند و سازگار شوند). به زبان ساده: ساخت‌یافته، اما نه صلب. سفر به مرحله‌های روشنی تقسیم می‌شود، از مرحله 0 (بله، از صفر می‌شماریم—مهندس‌ها همین‌طورند) تا مرحله 8 و فراتر.

مرحله 0: مفهوم و امکان‌سنجی («اصلاً چرا این کار را می‌کنیم؟»)

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

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

مرحله 1: نیازمندی‌های ذی‌نفع و سیستم (اولِ اولی‌ها!)

ایده از مرحله 0 جان سالم به در برد. قدم بعدی چیست؟ نیازمندی‌ها—همیشه اول نیازمندی‌ها. شاید به هیجان‌انگیزی ساختن چیزها نباشد، اما بنیان هر چیزی است که بعد می‌آید. مرحله 1 را مثل کشیدن نقشه قبل از بیرون زدن به دریا بدانید. ردکردنش مثل آغاز سفر بدون نقشه است: شاید ماجراجویانه باشد، اما بعید است خوب تمام شود.

«نیازمندی» یعنی چه؟ در اصل، فهرست دقیقی از اینکه محصول باید چه کار کند و تحت چه شرایطی. چند دسته دارند:

این نیازمندی‌ها را چگونه ثبت کنیم؟ در عمل، ممکن است یک سند رسمی نیازمندی‌ها بنویسید یا یک فهرست ساخت‌یافته در یک ابزار مدیریت پروژه نگه دارید. بعضی تیم‌ها از قالبی مبتنی بر IEEE 29148 برای نیازمندی‌های سیستم استفاده می‌کنند (قالبی استاندارد برای نوشتن نیازمندی‌ها—برای دقت مفید است). بعضی دیگر رویکرد چابک‌تری دارند: اپیک‌ها و user storyها در Jira یا یک ویکی. هر قالبی که انتخاب کنید، مطمئن شوید هر نیازمندی روشن و قابل آزمون است. عادت خوبی است هر نیازمندی را با روش راستی‌آزمایی آینده‌اش برچسب بزنید—با تست، با بازرسی، با تحلیل، یا با گواهی‌نامه. اگر نیازمندی می‌گوید «دستگاه باید درجه ضدآبی IP67 داشته باشد»، می‌دانید بعداً به یک تست نفوذ آب نیاز دارید.

چرا اصرار داریم این کار اول انجام شود؟ چون هر طراحی، تست و بررسی انطباقِ بعدی به همین نیازمندی‌ها برمی‌گردد. آن‌ها ستاره شمال پروژه‌اند. بدون آن‌ها به طراحی بشتابید و ریسک می‌کنید چیز اشتباهی بسازید، یا چیز مهمی را از دست بدهید—یک دستگاه مرتب طراحی می‌کنید و بعد می‌شنوید «راستی، قرار بود رطوبت را هم اندازه بگیرد»، و جایی برای آن سنسور روی PCB باقی نمانده است. تغییر یا شفاف‌کردن یک نیازمندی حالا، بسیار ارزان‌تر از بازنویسی firmware یا مسیریابی مجدد PCB در آینده است.

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

مرحله 2: معماری سیستم (قبل از ساختن، روی کاغذ برنامه بریزید)

با نیازمندی‌های محکم در دست، نوبت معماری سیستم است: طرح سطح‌بالای اینکه چگونه آن‌ها را برآورده می‌کنید. معماری را مثل طراحی یک شهر پیش از ساختن ساختمان‌ها بدانید—تصمیم می‌گیرید جاده‌ها و پل‌ها کجا بروند قبل از ریختن بتن. در یک پروژه IoT، یعنی طرح کلی سیستم را روی کاغذ یا تخته (کاغذ «دیجیتال» هم جواب می‌دهد) می‌کشید قبل از اینکه هیچ لحیم‌کاری یا کدنویسی اتفاق بیفتد. این مرحله درباره تفکر کلان و تصمیم‌های کلیدی است که شکل طراحی محصول را رقم می‌زنند.

این‌ها در معماری سیستم اتفاق می‌افتد:

شعار مرحله 2 این است: «دو بار طراحی کن، یک بار بساز.» کارکردن روی معماری اول روی کاغذ، از دوباره‌کاری‌های گران بعد جلوگیری می‌کند: جابه‌جاکردن جعبه‌ها و فلش‌ها در یک دیاگرام بسیار ارزان‌تر از جابه‌جاکردن مسیرها روی یک PCB ساخته‌شده یا بازنویسی یک کدبیس است. همچنین کل تیم—سخت‌افزار، firmware، cloud، محصول—را زود به یک صفحه می‌آورد. همه می‌توانند مشارکت کنند: مهندس cloud ممکن است بگوید «اگر دستگاه داده را با timestamp برچسب بزند، کار من ساده‌تر می‌شود»، یا مهندس سخت‌افزار اشاره کند «با دو سنسور به‌جای یکی، می‌توانیم X را هم اندازه بگیریم». این بحث‌ها قبل از سنگی‌شدن همه‌چیز ارزشمندترین‌اند.

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

مرحله 3: طراحی الکترونیک و مکانیک («سمت چپِ V»)

حالا بخش عملی: طراحی سخت‌افزار واقعی. مرحله 3 طراحی الکترونیک و مکانیک را پوشش می‌دهد که معمولاً دست‌در‌دست هم پیش می‌روند. اگر V-model در مهندسی به گوشتان خورده (یک مدل کلاسیک فرایند توسعه)، «سمت چپ» V طراحی و پیاده‌سازی است—که دقیقاً همین‌جایییم. سخت‌افزاری که اینجا طراحی می‌شود بعداً در سمت راست V راستی‌آزمایی و اعتبارسنجی خواهد شد. حتی اگر اصطلاحش برایتان تازه است، ایده کلیدی سر جایش است: طراحی سخت‌افزار ترتیبی‌تر است و دقت می‌خواهد، چون وقتی یک برد مدار را چاپ یا یک قاب پلاستیکی را قالب بزنید، تغییرها گران می‌شود.

مرحله 3 به چند زیرگام تقسیم می‌شود—و مهم اینکه، این‌جا است که توسعه سخت‌افزار و نرم‌افزار شروع به کار موازی می‌کنند (در مرحله بعد بیشتر درباره نرم‌افزار). سمت سخت‌افزار معمولاً این‌طور پیش می‌رود:

مرحله 3 معمولاً چند تکرار دارد: یک اشتباه روی برد، یک سیم bodge، یک چاپ بازبینی‌شده. طبیعی است—نمونه‌های اولیه برای یادگیری و بهترکردن‌اند. همکاری نزدیک سخت‌افزار و نرم‌افزار اینجا حیاتی است: اگر یک سنسور خوانش نمی‌دهد، باگ firmware است یا مشکل سیم‌کشی؟ هر دو طرف با هم تحقیق می‌کنند.

در طول مسیر، DFM (طراحی برای تولید) را در نظر داشته باشید اگر قصد تولید انبوه دارید، و DFT (طراحی برای تست) تا واحدها در تولید به‌کاراتی تست شوند. اضافه‌کردن یک کانکتور تست یا هدر برنامه‌ریزی حالا بسیار آسان‌تر از فهمیدن نحوه تست 1,000 دستگاه بعداً بدون دسترسی به سیگنال‌هاست.

در پایان مرحله 3، باید دستگاه‌های نمونه اولیه کارا و یک انبوه درس آموخته‌شده داشته باشید: داده اولیه عملکرد (مصرف توان، دقت سنسور در شرایط واقعی)، و احتمالاً فهرستی از اصلاحات برای بازبینی بعدی. از همه مهم‌تر، بنیان فیزیکی محصول IoTتان را ساخته‌اید.

یک یادداشت کناری: اولین باری که یک نمونه اولیه جان می‌گیرد و داده به صفحه می‌فرستد، یک جشن کوچک در آزمایشگاه کاملاً برازنده است—موفقیت bring-up به‌دست‌آمده است.

مرحله 4: توسعه firmware و نرم‌افزار Cloud («سمت راست V» تکرارشونده)

اگر طراحی سخت‌افزار سمت چپ V بود، مرحله 4 سمت راست است: توسعه firmware (نرم‌افزار روی دستگاه) و نرم‌افزار cloud (سرورها، دیتابیس‌ها، APIها، رابط‌های کاربری). این مرحله بسیار تکرارشونده‌تر است و با سخت‌افزار موازی پیش می‌رود—احتمالاً در مرحله 3، حین شماتیک و چیدمان، کمی کار firmware را شروع کرده‌اید. حالا به‌کامل مهمیاب می‌شود. رویکرد: استفاده از شیوه‌های مدرن توسعه نرم‌افزار برای ساختن، تست‌کردن و پالایش سریع. برخلاف سخت‌افزار، نرم‌افزار آسان تغییر می‌کند، پس از آن چابکی بهره ببرید.

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

4.1 معماری و طراحی نرم‌افزار

قبل از اینکه همه شروع به کدنویسی کنند، معماری نرم‌افزار را برای firmware و cloud اسکیس کنید—همتای سطح‌کدِ معماری سیستم مرحله 2. چیزهای کلیدی که باید مشخص شوند:

خلاصه، مرحله 4.1 درباره برنامه‌ریزی نرم‌افزار به‌اندازه کافی است تا همه مرزها و رابط‌ها را بدانند. مثل برنامه‌ریزی یک سفر جاده‌ای: مسیر و توقف‌ها را علامت بزنید، اما هر دقیقه را اسکریپت نکنید—روی جاده جای تکرار هست.

4.2 اسپرینت‌های توسعه (تکرار کن و فتح کن)

حالا کار اصلی: نوشتن کد، تست‌کردنش، و نشان‌دادن کارکردنش—در چرخه‌های تکراری. این معمولاً در اسپرینت‌ها انجام می‌شود (معمولاً 2 تا 4 هفته). هر اسپرینت مجموعه‌ای از قابلیت‌ها (user storyها) را از بک‌لاگ برمی‌دارد—که از نیازمندی‌های مرحله 1 تغذیه شده—و آن‌ها را پیاده می‌کند و یک افزایش بالقوه قابل عرضه از محصول تولید می‌کند. شکلش این‌طور است:

خلاصه مرحله 4: توسعه تکراری و تست مستمر. در پایان—احتمالاً چند اسپرینت بعد—باید firmware کامل‌القابلیت و تست‌شده و یک سیستم cloud کامل‌القابلیت و تست‌شده داشته باشید: کل سمت نرم‌افزار محصول، آماده حرکت. کار تکراری فرصت‌های زیادی برای تنظیم در مسیر می‌دهد، به‌جای شرط‌بستن همه‌چیز روی یک یکپارچه‌سازی big-bang در انتها. این ریسک را کم و توسعه را پیش‌بینی‌پذیرتر می‌کند—و راستش را بگوییم، رضایت‌بخش‌تر هم، چون محصول را قدم‌به‌قدم جان گرفتن می‌بینید.

مرحله 5: دروازه‌های یکپارچه‌سازی (مطمئن شویم همه‌چیز با هم خوب بازی می‌کند)

تا اینجا نمونه‌های اولیه سخت‌افزار (مرحله 3) و بیلدهای تکراری نرم‌افزار (مرحله 4) دارید. مرحله 5 درباره یکپارچه‌کردن همه‌چیز و راستی‌آزمایی، در نقاط عطف تعریف‌شده، این است که سیستم سرتاسری کار می‌کند. به این نقاط عطف دروازه‌های یکپارچه‌سازی می‌گوییم—ایست‌های بازرسی که تا اثبات توانایی‌های مشخص، از آن‌ها عبور نمی‌کنید. ترکیب سخت‌افزار، firmware و cloud به‌اندازه هیجان‌انگیز، دلهره‌آور هم هست؛ دروازه‌ها مطمئن می‌شوند هیجان برنده شود.

دروازه‌های یکپارچه‌سازی معمول در یک پروژه IoT:

برای مدیریت دروازه‌ها، تیم‌ها جلسات بازبینی نقطه عطف با یک چک‌لیست برگزار می‌کنند (نیازمندی‌های مرحله 1 و روش‌های راستی‌آزمایی‌شان را به یاد دارید؟). هر دروازه انتظار دارد نیازمندی‌های مشخصی برآورده شده باشند: تا دروازه مسیر داده مثلاً، همه نیازمندی‌های مربوط به انتقال داده و خواندن سنسور باید به‌عنوان «برآورده در تست» تیک بخورند. هر چیز برآورده‌نشده یک action item می‌شود—و مهم اینکه، آن را به بعد موکول نمی‌کنید. آن را دنبال کنید و قبل از رفتن جلو رفعش کنید. این انضباط از انباشته‌شدن مسائل در انتها جلوگیری می‌کند. وسوسه در دروازه‌ها این است: «آن بخش هنوز کار نمی‌کند، ولی بعداً حلش می‌کنیم.» مقاومت کنید. هر دروازه یکپارچه‌سازی یک تور ایمنی است که مشکلات را وقتی هنوز رفعشان آسان است می‌گیرد—حالا، نه در یک وحشت پیش از عرضه.

دروازه‌های یکپارچه‌سازی، یک یکپارچه‌سازی big-bang ترسناک را به یک ساخت اعتماد قدم‌به‌قدم تبدیل می‌کنند. لحظه‌هایی‌اند برای ثبت پیشرفت (دستگاه واقعاً با cloud ما حرف می‌زند) و برای یادگیری (سیگنال نویزی است؛ قالب داده به یک تنظیم نیاز دارد). تا وقتی به فریز طراحی برسید، گره‌های اصلی باید باز شده باشند—و پاس‌کردن هر دروازه یک جشن کوچک می‌ارزد؛ این بردها تیم را در یک پروژه طولانی انگیزه‌دار نگه می‌دارند.

مرحله 6: راستی‌آزمایی و اعتبارسنجی (آیا چیز درست را ساختیم، و آیا درست کار می‌کند؟)

با فریز طراحی و یکپارچه‌سازی کامل، نوبت راستی‌آزمایی و اعتبارسنجی (V&V) است: فاز تست فراگیری که ثابت می‌کند محصول همه نیازمندی‌ها را برآورده می‌کند و برای دنیای واقعی آماده است. اگر دروازه‌های یکپارچه‌سازی ایست‌های بازرسی بودند، V&V امتحان نهایی است قبل از اینکه توسعه را تمام‌شده بخوانید. این مرحله تست در هر سطح است—از اجزای منفرد تا کل سیستم، در برابر هر نیازمندی نوشته‌شده در مرحله 1.

تفکیک بر اساس لایه سیستم، چون هر کدام رویکرد متفاوتی می‌خواهد:

در پایان مرحله 6، باید یک انبار بزرگ از نتایج و گزارش‌های تست داشته باشید که نشان دهد محصول مشخصاتش را برآورده می‌کند و قابل اعتماد است. اگر بعضی تست‌ها شکست خوردند یا نیازمندی‌هایی برآورده نشده‌اند، حالا رسیدگی کنید—یک تنظیم firmware، شاید یک تغییر جزئی سخت‌افزار. تست به این کاملی ممکن است خسته‌کننده به نظر برسد، اما همان چیزی است که بین شما و یک عرضه مطمئن ایستاده است. «این را به هر شکل مرتبط تست کرده‌ایم و می‌دانیم کار می‌کند» همیشه بهتر از انگشتان گره‌خورده است.

یک نگاه دیگر به موضوع—راستی‌آزمایی و اعتبارسنجی دو پرسش می‌پرسد:

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

مرحله 7: انطباق، گواهی‌نامه و انتقال به تولید

حالا به خط پایان توسعه نزدیک می‌شویم. مرحله 7 برای عرضه رسمی و تولید آماده می‌کند. تا اینجا تمرکز بر کارکرد خوب محصول بود؛ حالا مطمئن می‌شوید همه نیازمندی‌های بیرونی—قوانین، مقررات، استانداردهای صنعت—را هم برآورده می‌کند و مسیری هموار به تولید در مقیاس هست. ترکیبی از کاغذبازی، تست‌های بیشتر و برنامه‌ریزی تولید: کمتر به جذابیت طراحی مدار، اما به همان اندازه لازم.

جنبه‌های کلیدی این مرحله:

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

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

مرحله 8: عرضه، عملیات و نگه‌داری (زندگی بعد از دکمه عرضه)

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

اجزای کلیدی این مرحله:

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

شیوه‌های خوب اینجا—به‌روزرسانی‌های OTA مقاوم، پایش قوی—شانس این را بالا می‌برند که مشتریان محصولتان را قابل اعتماد و باکیفیت ببینند. کاربران شاید هرگز کار این مرحله را نبینند (که یعنی دارد کار می‌کند)، اما قطعاً نبودنش را متوجه می‌شوند: چیزهایی که می‌شکنند و رفع نمی‌شوند، قطعی‌هایی بدون اطلاع‌رسانی. این مرحله جایی است که موفقیت و شهرت بلندمدت ساخته می‌شود.

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

کدام آرتیفکت اول می‌آید؟ (ترتیب عملیات)

با این همه سند و طراحی در هوا، به چه ترتیبی باید آن‌ها را بسازید؟ یک توالی منطقی هست—با کمی هم‌پوشانی—که از کار هدر رفت جلوگیری می‌کند:

در اصل، اول پهن شروع کنید، بعد با پیشرفت باریک شوید، و آرتیفکت‌ها را با تغییرات به‌روز نگه دارید. این تیم را هم‌راستا نگه می‌دارد و از «فکر می‌کردم تو X را انجام می‌دهی، ولی من Y را ساختم» کلاسیک جلوگیری می‌کند. ارتباط و همگام‌سازی این اسناد به اندازه ساختنشان مهم است.

نکته‌های عملی برای اداره پروژه

قبل از بستن این مقدمه، چند نکته آزموده‌شده در میدان برای اداره یک پروژه توسعه محصول IoT. این‌ها با همه مرحله‌های بالا ادغام می‌شوند و به ماندن پروژه روی ریل و سلامت تیم کمک می‌کنند:

پیروی از این فرایند مرحله‌ای-ولی-تکرارشونده و این شیوه‌های مدیریت پروژه، رویکرد توسعه‌ای به شما می‌دهد که هم دقیق و هم چابک است: جنبه‌های سخت‌افزاری و انطباق‌محور روی ریل می‌مانند (جایی که اشتباه‌های شلخته را نمی‌توان تحمل کرد)، در حالی که توسعه firmware و cloud بازخورد سریع و سازگاری‌شان را نگه می‌دارند. کاملیت V-model با سرعت Agile.


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