مفاهیم نوظهور در دنیای فناوری اطلاعات برای نسل ما عادی شده است، چرا که تغییر جزئی از ما شده و بهراحتی آن را میپذیریم (البته در صورتیکه مجانی باشد) و برخی اوقات هم بدنبال آن هستیم. تغییرات در توسعه نرمافزار نیز یک مفهوم عادی است و توسعهدهندگان با تغییر کاملاً آشنا و اغلب برای آن برنامه و ابزار دارند. هرچند تغییر در توسعه نرمافزار و اصولاً هر حوزه دیگری تا حدی قابل قبول و پیشبینی هستند و از حدی بهبعد تغییرات «انقلاب» ایجاد میکنند که توصیه من به شما جوانان این است که کمتر در پی انقلاب باشید! و در حد تغییر در حوزه نرمافزار راضی باشید و برای آن آماده باشید.
«تغییر هر چیزی را ممکن است، تغییر دهد.»
این عبارت «هر چیز» بسیار خطرناکتر از آن است که بهنظر میرسد. «هر چیز» میتواند:
- «دورنما» (Vision) محصول باشد که حتی میتواند منجر به یک محصول جدید شود
- «طرح مدیریت نیازمندیها» باشد که در آن توجهی به وجود انواع نیازمندیها نشده و میبایست با برخی از نیازمندیهای خاص بهگونهای ویژه رفتار نمود. بهعنوان مثال در یک سیستم ایمن، توجه به «نیازمندیهای ایمنی» و پیشبینی این دسته از نیازمندیها و پیشبینی برخورد با آنها در ادامه کار
- میزان «نیازمندیهای» پیشبینیشده باشد که طبیعتاً تیم توسعه را با چالش همراه میکند
- «الگوهای طراحی» باشد که میتواند فعالیتهای طراحی را افزایش یا کاهش دهد و یا تغییرات بنیادی در طراحی ایجاد کند
- «ابزار برنامهنویسی» باشد که بهدلیل پیشبینینشدن برخی از موارد ابزار مناسبی انتخاب نشده باشد یا اینکه کشف شود که ابزار دیگری وجود دارد که قابلیتهای بهتر و کاملتری دارد و میتوان با آن براحتی برخی از فعالیتهای خاص را انجام داد که ممکن است کدهای نوشتهشده را به خاطره تبدیل نماید.
- «مدیر پروژه» باشد که در بدترین حالت میتواند بدون پخش هیچ نوع شیرینی باشد و احساس بدی در افراد باقی گذارد
- «محل پروژه» باشد که علاوه بر اینکه خاطرات قبلی را از بین میبرد، میتواند سبب شود جای شما بزرگتر، کوچکتر، بهتر یا بدتر شود و مضافاً جای استراحت موقع ناهار شما از بین برود
- «سیستم عامل» کامپیوتر شما باشد که در حین توسعه نرمافزار بههیچ عنوان برای شما توجیهپذیر نیست و این اعلان جنگ مستقیم با خداست که یک کابوس واقعی است
- افراد «تیم توسعه» باشد، این مورد خصوصاً کاهش افراد تیم توسعه و مخصوصاً فردی که همیشه سرمیزش انواع شکلات و تنقلات دارد، غیر قابل بخشش و ضربه روحی بزرگی به تیم توسعه وارد میکند که اثر این شمشیر تا آخر توسعه باقی میماند
- «متدولوژی توسعه» باشد که آنقدرها هم اهمیت ندارد، چون عملاً هیچگاه پیروی نمیشود و چیزی که فقط درون یک فایل Word میباشد، براحتی نیز قابل تغییر است
اما سوال کلیدی این است که آیا همه تغییراتی که ما میبینیم اینها هستند؟
پاسخ به این سوال، پیچیدهتر از این حرفهای عادی و متداول ماست و در واقع نیاز به مطالعه وسیعتری دارد. مثل اغلب موارد، وزارت دفاعیات آمریکا (DoD) پیشقدم شده است و یک نیازمندی با همان عبارت بالا تعریف نموده و به دانشگاه Carnegie Mellon داده است. پاسخ آنها ایجاد مبحث جدیدی در توسعه نرمافزار و البته سیستم بهنام «سیستمهای فوقوسیع» (Ultra-large scale systems) بوده است. در تحقیق انجامشده در حوزه سیستمهای فوق وسیع «همهچیز تغییر میکند»، بهعنوان شروع کار است و این که وقتی تغییر شروع میشود چه نتایجی دارد، چه راهحلهایی وجود دارد و چگونه به مسئله نگاه کنیم بهعنوان دستاوردهای تحقیق مد نظر قرار گرفته است. کتاب این دستاورد را میتوانید از اینجا بهطور کامل دانلود نمایید.
در ایران نیز با توجه به نیاز دیده شده، درسی بدین نام در کارشناسی ارشد توسط دکتر شمس تدوین شده و در حال تدریس میباشد. مطالب عمدهای از این موضوع را میتوانید در وبسایت «هسته پژوهشی معماری سیستمهای اطلاعاتی» پیدا کنید و البته نمونههایی که دانشجویان این درس بهعنوان تحقیق انجام دادهاند. سه اسلاید اولیه این درس که سالها پیش توسط من ایجاد شده است و البته در طی سالها تغییر نمودهاند در اینجا قرار دادم تا شاید مورد استفاده تغییرکنندگان قرار گیرد.
ته کار درسسه