What makes software so hard

  • یوسف مهرداد

ماهنامه 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.

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

https://bibalan.com/?p=134
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نظرات (2)

wave
  • طاهری راد

    ۱۱ شهریور ۱۳۸۶ در ۰۰:۰۰

    سلام

    استاد مهرداد/ مواظب باشید ما را از کار بیکار نکنید.

    با تشکر

    پاسخ
  • مهرداد

    ۱۶ شهریور ۱۳۸۶ در ۰۰:۰۰

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

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید