ماهنامه The Rational Edge در شماره اخیر خود مقالهای با عنوان What makes software so hard دارد که به نکات جالبی اشاره کرده است.
هر چند این موضوع در مراجع مختلف و از دیدگاههای مختلف بررسی شده است، اما مرور آن خالی از لطف نیست.
در این مقاله به مقایسه مهندسی نرمافزار با سایر حوزههای رایج مهندسی پرداخته است.
بخش جمعبندی و نتیجهگیری مقاله را در زیر آوردهام.
Software is hard for a number of fundamental reasons:
* Software projects are design projects, not production projects.
* Because software is pure mindware, software development is more of an art or craft than a science or engineering discipline, making the “doing” disciplines of software development difficult to perform, monitor, and measure. Productivity differences between individuals are huge.
* Software lacks laws and first principles.
* Software lacks a measurable standard unit of work.
* Given software’s flexibility, the “supporting” disciplines of software projects — planning, estimation, prediction and observation — are quite difficult.
* Moore’s law makes the foundations of software ever changing — there’s no “permanent” platform to build on.
Even though it might be tempting to consider software engineering as “just another engineering discipline,” and thus jump to the conclusion that software can be developed using the same business, management, and engineering principles as traditional engineering, there are some unique characteristics that make software and software development not only special, but also more difficult to estimate and monitor than traditional engineering projects.
Software development, with its inherent characteristics, existing in a very dynamic world governed only by Moore’s law, will remain more art than a science for a long time to come. We can only hope to tackle the problems in software development by acknowledging that software is different, and understanding the consequences of these differences.
Any attempts to regard software development as just another form of traditional engineering will generally not deliver the desired results. Only by having a good understanding of what makes software different, can we start addressing the unique issues associated with software development. Iterative development, modeling, requirements management, and early-and-often stakeholder involvement are among the techniques available to software teams who recognize this critical difference and are looking for a new way forward.
گزیده:
لغت نامه مهندسین در جلسات کارفرما
پروژه بدلیل بعضى مشکلات دیده نشده، کمى از برنامه ریزى عقب است. یعنى: تاکنون روى پروژه دیگرى کار مى کردیم!
ما تصحیحاتى روى سیستم انجام دادیم تا آن را ارتقا دهیم. یعنى: تمام طراحى ما اشتباه بوده و ما از اول شروع کرده ایم!
طاهری راد
۱۱ شهریور ۱۳۸۶ در ۰۰:۰۰سلام
استاد مهرداد/ مواظب باشید ما را از کار بیکار نکنید.
با تشکر
مهرداد
۱۶ شهریور ۱۳۸۶ در ۰۰:۰۰دوست عزیز، آقای طاهری راد
سلام
خیلی دوست دارم که دیدارها تازه گردد. در ضمن عرض کنم که متوجه فرمایش شما نشدم. چون هم خلاصه مقاله و هم اصل مقاله به این موضوع اشاره میکنند که در ضمن این که تولید و نگهداری نرمافزار بسیار شبیه و ترکیبی ازز مهندسی، طراحی، هنر و تولید است، ولی در عین حال دارای تفاوتهای ماهوی و پایهای با هر یک از آنهاست که انجام آن را بسیار سخت مینماید.
ولی در هر صورت اگر شما بیکار شدید، من مطمئن هستم خیلی از کارفرما خوشجال میشوند، همکار بادانش و تجربه، ساعی و متعهدی مثل شما در تیمشان داشته باشند.
به امید دیدار