فرد بروکس (Fred Brooks) که یکی از پیشگامان حوزهٔ مهندسی نرمافزار است، یک مقالهٔ معروف دارد به نام No Silver Bullet که در آن میگوید هیچ راهکار معجزهآسایی برای موفقیت پروژههای نرمافزاری وجود ندارد. هرچند گذشت سی سال از انتشار این مقاله صحت این ادعا را در عمل نشان داده، ولی برخی نوآوریها در توسعهٔ نرمافزار وجود دارند که دستکمی از معجزه ندارند. یکی از آنها توسعهٔ تکراری-نموی یا همان iterative-incremental است.
این یعنی این که به جای اینکه پروژه را «بزرگ» انجام دهیم، یعنی مثلاً:
- یک برنامهریزی جزئی برای کل پروژه انجام دهیم، نیازمندیها را طی چندین هفته یا چندین ماه از ذینفعان جمعآوری و تحلیل کنیم، مدتها صرف کنیم تا یک طراحی درست انجام دهیم که تمام نیازمندیها را در نظر بگیرد، بعد ماهها صرف پیادهسازی و در نهایت آزمون و رفع اشکالات بکنیم و بعد از چندین ماه با ترس و لرز نرمافزار را زیر بار ببریم که آیا مشتری خوشش بیاید یا نیاید،
پروژه را به قطعات کوچکی به نام iteration (حداکثر دو ماهه، ترجیحاً کمتر) تقسیم کنیم و هر قطعه را جداگانه توسعه داده و تحویل دهیم، یعنی:
- ابتدا تصمیم بگیریم که در iteration بعدی چه مواردی را میخواهیم به مشتری تحویل دهیم، سپس فقط برای همان موارد نیازمندیها را جمعآوری کنیم، طراحی، پیادهسازی و آزمون انجام دهیم و خروجی را زیر بار ببریم و به مشتری تحویل دهیم. بدینترتیب میتوانیم در پایان iteration متوجه شویم که آیا پروژه در مسیر درستی قرار دارد یا نه.
معنی این حرف این است که وقتی نگران موفقیت پروژه هستید، آن را «کوچک» انجام دهید! اینطوری نه تنها از صحت برنامهریزیها، نیازمندیها، معماری و طراحی، برنامهنویسی، آزمون و استقرار و در مجموع برآورده شدن نیاز مشتری در مدت کوتاهی مطمئن میشوید، بلکه بر مبنای بازخورد مشتری میتوانید نیازمندیهای بعدی وی را بهتر شناسایی کنید؛ در ضمن اشکالات کار زودتر مشخص میشود و بنابراین زودتر و کمهزینهتر اصلاح میشود. این یعنی هم خدا و هم خرما را خواهید داشت: هم ریسک کاهش مییابد، هم ارزش بیشتری به مشتری میرسد و هم هزینهها کاهش پیدا میکند. چه چیزی بهتر از این!
آیا عجیب نیست که هنوز خیلی از پروژهها به این روش انجام نمیشوند؟ شاید به این خاطر است که مدیران و مجریان این پروژهها فکر میکنند «کار اصولی و مهندسی» این است که کار به روش «بزرگ» انجام شود چون به قول آنها پروژه صفات دهنپرکنی مثل «بزرگ» یا Enterprise دارد! این مدیران و مجریان نه تنها نیاز دارند که روش فکر خود را عوض کنند، بلکه به نفعشان است که دانستههایشان را هم دربارهٔ مدیریت پروژههای نرمافزاری بهروز کنند. در این باره در آینده بیشتر خواهیم نوشت.
- ۹۵/۰۲/۱۸