معرفی کتاب "به سوی تولید بهتر نرم افزار: اصول مهندسی نرم افزار"
  معرفی کتاب "به سوی تولید بهتر نرم افزار: اصول مهندسی نرم افزار"
   C#
   ۱۵۷۲۶
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۹۰/۷/۹
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

تذکر:

مطالب ذکر شده در این پست، صرفا نظر شخصی اینجانب پس از مطالعه کتاب می باشد.

مقدمه:

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

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

اما چرا این مشکلات همواره وجود دارند و هرگز از بین نمی روند؟ جالب اینجاست که در بسیاری از مواقع، هم اعضای تیم فنی و اعضای تیم مدیریتی همگی از افراد کارکشته و زبده می باشند! پس منشأ مشکلات کجاست؟

مهندسی نرم افزار:

شاید بزرگترین و عمده ترین مشکل موجود، عدم آشنایی با اصول مهندسی نرم افزار باشد.

 به طور کلی افرادی که در هر گوشه از صنعت نرم افزار در حال فعالیت می باشند شامل دو دسته هستند.

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

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

به همین دلایل و خیلی دلایل دیگر اگر از افراد شاغل در صنعت نرم افزار در مورد مهندسی نرم افزار سوال کنید یا جواب های جالبی مواجه می شوید که معمولا یک تعریف کلیشه ای و حفظ شده می باشد. عده ای نیز معتقد هستند که مهندسی نرم افزار همان روش RUP است!

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

مدتی پیش به طور اتفاقی با کتاب "به سوی تولید بهتر نرم افزار: اصول مهندسی نرم افزار" تألیف شده توسط جناب آقای دکتر محسن صدیقی مشکنانی آشنا شدم. پس از مطالعه کتاب به نتایجی دست یافتم که اکنون در اختیار شما قرار خواهم داد.

کتاب از پنج بخش و 24 فصل تشکیل شده است که سر فصل ها را در قسمت زیر ملاحظه می کنید.

  1. بخش اول: زمینه سازی
    1. مهندسی نرم افزار چیست؟
    2. دو وجه اصلی تولیدنرم افزار
  2. بخش دوم: جنبه های مدیریتی
    1. انتخاب
    2. مدریت نیروی انسانی و مدیریت دانش
    3. برنامه ریزی و زمان بندی
    4. مدیریت خطر
    5. مستند سازی
    6. استاندارد و کیفیت
    7. قیمت گذاری و بازار
  3. بخش سوم: جنبه های تخصصی 1
    1. خواسته ها و مشخصات
    2. مؤلفه
    3. مدل سازی و طراحی
    4. طراحی واسط کاربر
    5. پیاده سازی
    6. آزمایش
    7. آزمایش علمی نرم افزار
    8. نگهداری
  4. بخش چهارم: جنبه های تخصصی 2
    1. مهندسی نرم افزار به کمک رایانه
    2. مدل شیء
    3. زبان مدل سازی یکپارچه
    4. تولید بر مبنای قطعه و معماری
    5. سامانه های بی درنگ
  5. بخش پنجم: نتیجه گیری
    1. پایان دهی
    2. مهندس نرم افزار کیست؟

خصوصیات برتر کتاب:

  • قبل از هر کاری پیشنهاد می کنم به صفحه پروفایل آقای دکتر محسن صدیقی مشکنانی مراجعه نموده و تصویر مسیر زندگی ایشان را ملاحظه کنید. شخصی با این سلیقه کتاب را تألیف نموده است!
  • کتاب به شکل تألیفی می باشد و مؤلف تسلط بسیار خوبی بر روی مفاهیم دارد. علاوه بر این در سرتاسر کتاب جملات و تعاریف مهمی از مجموعه کتاب های برتر مهندسی نرم افزار در جهان با ذکر رفرنس نقل شده است. خوشبختانه اصطلاحات و تعاریف به شکل بسیار عالی به زبان پارسی ترجمه شده اند و این موضوع یکی از نقاط برجسته این کتاب می باشد.
  • در سرتاسر کتاب، مؤلف به بررسی مشکلات خاص تولید نرم افزار در کشور ما نیز پرداخته است و قطعا این موضوع اهمیت بسیار زیادی دارد و یکی از خصوصیات ممتاز کتاب می باشد.
  • مؤلف تمام سعی خود را نموده است که کتاب را به شکلی تنظیم نماید که هم به شکل خود آموز (Self-Study) قابل استفاده بوده و هم قابل تدریس در دانشگاه نیز باشد. بنابراین استفاده از کتاب نیازی به تحصیلات آکادمیک ندارد و تمای دست اندر کاران باتجربه نرم افزار می توانند از آن کمال استفاده را ببرند.
  • همانطور که قبلا نیز ذکر شد، یکی از مشکلات مربوط به کتاب های موجود، قطور بودن کتاب ها و حجیم بودن مباحث می باشد و معمولا افراد شاغل فرصت کافی جهت مطالعه جامع و کامل را ندارند. مؤلف تمام سعی خود را نموده است که مطالب را به شکل خلاصه و مفید ارائه نماید و مخاطب در هنگام مطالعه کتاب در صورت نیاز به مطالعه بیشتر و عمیق تر می تواند با آدرس هایی که در هر بخش ذکر شده است، به سراغ اینترنت و سایر منابع مرتبط برود. کتاب دارای 351 صفحه می باشد و به دلیل روان بودن مطالب و استفاده از تصاویر بسیار گویا، افراد با تجربه در تولید نرم افزار حتی می توانند ظرف دو یا سه روز کل مطالب را مطالعه نمایند!
  • خوشبختانه آقای دکتر محسن صدیقی مشکنانی از طریق ایمیل در دسترس می باشند و در صورتی که هنگام مطالعه کتاب دچار چالش شدید، می توانید با ایشان مکاتبه کنید.
  • قیمت کتاب 4800 تومان می باشد! بنابراین بعید به نظر می رسد که مشکل مالی نیز جهت تهیه کتاب وجود داشته باشد.

پیشنهادات:

  • مطالعه کتاب در مورد مبحث مهندسی نرم افزار چندان مناسب نو آموزان و تازه کاران نمی باشد و مؤلف نیز این موضوع را لحاظ نموده است. ولی برخی واژگان وجود دارند که جهت بالا بردن قابلیت خود آموزی کتاب جهت استفاده مخاطبین در کلیه سطوح، بهتر است تشریح شوند (از جمله این موارد می توان از گرسنگی (Starvation) نام برد).
  • با توجه به تعداد صفحات (351) که جزو نقاط قوت کتاب نیز می باشد، بسیاری از مطالب از عمق زیادی برخوردار نیستند. هر چند مؤلف در هر قسمت آدرس های مناسبی را جهت مطالعه بیشتر فراهم نموده است ولی به عقیده بنده بهتر است که در چاپ جدید برخی مباحث را در کتاب توسعه داد. به طور مثال فصل "آزمایش علمی نرم افزار" مبحثی قابل بحث بوده و برای درک صحیح و کاربردی آن، نیاز به مثال ها و توضیحات بیشتر می باشد.
  • هر چند کتاب سرشار از مثال می باشد ولی همچنان در برخی مباحث نیاز به مثال های بیشتری می باشد.
  • کتاب قابلیت بروز رسانی آمار ها، ابزار ها، نرم افزار ها و بسیاری از مباحث مطرح شده را دارد. با توجه به اینکه معمولا بین دو چاپ کتاب فاصله زمانی زیادی وجود دارد، پیشنهاد می شود که مؤلف رابطه خود را با مخاطبین تعاملی تر نموده و از طریق وب سایت کتاب به شکل موازی به بسط مطالب و ... پرداخته شود. هر چند چنین توقعی در کشور ما و با شرایط موجود بسیار بالا می باشد ولی بنده تصور می کنم که پتانسیل این کار را هم مؤلف و هم مخاطبین دارند.

حتما شما هم با بنده هم نظر هستید که به دلایل بیشمار، متاسفانه تعداد کتاب های خوب فنی به زبان پارسی بسیار معدود هستند. جای دارد که هر کدام از ما به سهم خود این معدود کتاب ها را حمایت نماییم تا انگیزه ای جهت ادامه کار و رشد و فرهنگ سازی در این زمینه نیز فراهم گردد. مطالعه این کتاب را به تمامی دست اندرکاران صعنت تولید نرم افزار توصیه می کنم.

در پایان جهت کسب اطلاعات بیشتر در مورد کتاب و نویسنده می توانید به اینجا مراجعه کنید.

تهیه کتاب:

مرکز پخش علم گستر سپاهان: 79-2219978 - 0311
انتشارات شیخ بهائی: 3143507 - 0913 sheykhbahayi_publication@yahoo.com
انتشارات صانعی: 66405385 - 021
66409924 - 021
تهران- خیابان انقلاب- مقابل دبیرخانه دانشگاه تهران پلاک 1446