درباره کتاب:
نویسنده
او مقالاتی در مورد انیمیشن الگوریتم کامپیوتر ، ساخت بازی ، و آموزش مهندسی منتشر کرده است.وی در تألیف یک متن پرفروش مقدماتی در زمینهی علوم کامپیوتر و دو مجموعه ویرایش شده از مقالات تحقیقاتی در زمینهی مهندسی نرم افزار همکاری داشته است. دکتر ماکسیم به عنوان بخشی از فعالیتهای خود در دانشگاه میشیگان – دیربورن، بر پروژهی توسعهی صدها نرم افزار مبتنی بر صنعت نظارت کرده است. تجربیات حرفه ای دکتر ماکسیم شامل مدیریت سیستم های اطلاعات تحقیقاتی و نظارت بر محاسبات آموزشی در یک دانشکده پزشکی و فعالیت به عنوان یک برنامه نویس آماری میباشد. دکتر ماکسیم در یک شرکت تولید بازی، به عنوان مدیر ارشد فناوری خدمت کرد.او دریافت کنندهی چندین جایزهی ویژه در زمینهی تدریس ، یک جایزه در زمینهی خدمات اجتماعی و یک جایزه نیز در زمینهی نظارت بر هیئت علمی بود.او عضو انجمنهای Sigma Xi، Upsilon Pi Epsilon، Pi Mu Epsilon، انجمن تولید ماشینآلات کامپیوتری، انجمن کامپیوتری IEEE ، انجمن آمریکایی آموزش مهندسی ، انجمن مهندسین زن و انجمن بین المللی سازندگان بازی میباشد
یک نرم افزار رایانه ای موفق- که پاسخگوی نیازهای کاربران باشد، و در مدت زمان طولانی عملکرد بی عیب و نقصی داشته باشد ، اگر اصلاح و استفاده از آن آسان باشد- بسیار مفید و کارآمد خواهد بود. اما یک نرم افزار ناموفق- نرم افزاری با کاربران ناراضی که احتمال خطا در آن زیاد باشد و تغییر و استفاده از آن دشوار باشد- کارایی چندانی ندارد. همه ما می خواهیم نرم افزاری بسازیم که با جلوگیری ازاشتباهات ناخواسته در اثر تلاشهای ناموفق، کمک کننده باشد.طراحی و ساخت نرم افزار، نیازمند پیروی از نظام و اصول مشخص و رویکرد مهندسی است. از زمان تألیف چاپ اول این کتاب نزدیک به چهار دهه می گذرد.در این مدت، مهندسی نرم افزار از یک ایده مبهم که تنها عدهی کمی از علاقه مندان به کار میبردند، رسماً به یک رشته مهندسی تبدیل شد.امروزه از آن به عنوان مسئلهای مهم و جنجال برانگیز یاد میشود که جای تحقیق و بررسی دارد. در صنعت ، عنوان مهندس نرم افزار جایگزین برنامه نویس یا کدگذار شدهاست. مدل های فرایند نرم افزار ، روش های مهندسی نرم افزار ، و ابزارهای نرم افزاری در طیف وسیعی از صنایع مختلفبه نحوی مؤثر به کار برده میشوند.از آن جا که مدیران و کارشناسان، نیاز بیشتری به نظم و ترتیب در رویکرد به نرم افزار احساس میکنند، راهکارهایی را جهت به کار بستن اصول موردنظر مطرح میکنند.بسیاری از افراد و شرکتها نیز به طور ناخواسته و همزمان با طراحی سیستمهای ارائه کنندهی پیشرفته ترین تکنولوژیهای روز، نرم افزار را توسعه میدهند. بسیاری از اساتید و دانشجویان از روشهای نوین بی اطلاع هستند.این موضوع، کیفیت و کارایی نرم افزار تولید شده را پایین میآورد.ضمناً بحث در مورد ماهیت واقعی رویکرد مهندسی نرم افزار ادامه دارد.کاربرد مهندسی نرم افزار، بررسی تناقضات است و علیرغم تغییر نگرشها و پیشرفتهای زیاد، هنوز راه درازی در توسعهی این رویکرد باقی است.
ویرایش نهم مهندسی نرم افزار:رویکرد کارشناسانه به عنوان راهنما جهت پیشرفت یک رشتهی مهندسی به کار میرود.چاپ نهم مانند چاپ هشتم،هم برای دانشجویان و هم اساتید در نظر گرفته شده است و جذابیت خود را به عنوان راهنمای حرفهای صنعت و معرفی جامع دانشجو در دانشگاه، در سطح فوق لیسانس یا سال اول کارشناسی ارشد حفظ کرده است.ویرایش نهم حقیقتاً چیزی فراتر از یک نسخهی اصلاح شدهی ساده است.این کتاب اصلاح شده و جهت بهبود جریان آموزشی و تأکید بر فرآیندها و به کار گیری نرم افزارهای جدید و مهم بازسازی شده است.به علاوه، "سیستم پشتیبانی" محبوب کتاب را ارتقا دادهایم، که شامل مجموعهای از دانشجو، مدرس و منابع تخصصی است و در تکمیل محتوای کتاب آورده شده است.خوانندگان چند نسخههای قبلی، مهندسی نرم افزار: رویکرد کارشناسانه خاطرنشان میکند که درنسخهی نهم، حجم صفحات کمتر شده است.هدف ما از خلاصه کردن کتاب این بوده که بار آموزشی آن بیشتر شود و کار خواننده راحت شود تا بتواند به سادگی از تمام مطالب آن استفاده کند.حکایتی از بلیز پاسکال ، ریاضیدان و فیزیکدان مشهور است که میگوید:او پس از نوشتن نامهای طولانی به یکی از دوستان خود، نامه را اینگونه به پایان رساند: « می خواستم برایت نامهی کوتاه تری بنویسم ،اما وقت نداشتم.» ضمن خلاصهسازی نسخهی نهم، یادی هم از سخنان پاسکال کردیم.30 فصل موجود در چاپ نهم، در پنج بخش تنظیم شده اند؛ به این ترتیب، سازماندهی بهتر مباحث، به اساتید کمک میکند تا بتوانند کل کتاب را در یک ترم تدریس کنند.بخش اول ، فرآیند تولید نرم افزار ، انواع دیدگاه های مربوط به این فرآیند را ارائه می دهد و با در نظر گرفتن مدلها و چارچوبهای مهم مربوط به این فرآیند، به ما امکان می دهد تا به بحث پیرامون دیدگاهها و اصول فرآیندهای کارآمد بپردازیم.مدل سازی ، با تأکید بر تکنیک های شی گرایانه و مدل سازی UML(زبان مشترک مدل سازی)، روش هایی جهت تجزیه و تحلیل و طراحی ارائه می کند. طراحی مبتنی بر الگو و طراحی برنامههای محاسبه کنندهی موقعیت نیز در نظر گرفته میشوند.این بخش همچنین به مبحث طراحی تجربه کاربری میپردازد.بخش سوم به نام کیفیت و امنیت ، مفاهیم ، روش ها ، تکنیک ها و رویکردهایی را ارائه می دهد که یک تیم نرم افزاری را قادر می سازد تا کیفیت نرم افزار را ارزیابی کند، نتایج عملکرد مهندسی نرم افزار را بررسی کند، بر روشهای SQA نظارت کند و استراتژیها و تدابیر آزمایشی مؤثری را به کار ببندد.به علاوه، ما اقدامات امنیتی نرم افزار را ارائه می دهیم
که می تواند در مدل های توسعهی تدریجی نرم افزار قرار گیرد.
بخش چهارم به نام مدیریت پروژه های نرم افزاری، موضوعاتی را ارائه می دهد که مربوط به کسانی است که مسئول برنامه ریزی ، مدیریت و بازبینی یک پروژه توسعه نرم افزار هستند.
بخش پنجم به نام مباحث پیشرفته، به روند بهبود نرم افزار و روشهای مهندسی نرم افزار میپردازد.
در طول کتاب، ابزارهای جعبهای برای ارائهی آزمایشات و دشواری های یک تیم نرم افزاری (تخیلی) و تهیهی مطالب تکمیلی درباره روشها و ابزارهای مربوط به عنوان فصلها، گنجانده شدهاند.سازماندهی مطالب در این پنج بخش در ویرایش نهم ، مدرس را قادر می سازد تا براساس زمان موجود و نیاز دانشجو، مباحث را اصطلاحاً "گلچین" کند.در کل دورهی تدریس، میتوان یک یا چند بخش از این پنج بخش را ارائه کرد. یک دوره بررسی دقیق مهندسی نرم افزار شامل مباحثی از هر پنج بخش میشود.در یک دوره مهندسی نرم افزار با محوریت تحلیل و طراحی، مباحثی از بخشهای اول و دوم ارائه میشود.دورهی مهندسی نرم افزار آزمایش محور،می تواند از بخشهای اول و سوم مباحثی را انتخاب کند ، و کمی هم به بخش دوم می پردازد؛ و یک "دوره مدیریت"، بر قسمتهای بر بخشهای اول و چهارم تأکید میکند.بنابراین بااین شیوهی سازماندهی در نسخهی نهم، سعی کرده ایم تا در انتخاب مطالب آموزشی، به مدرس حق انتخاب دهیم.در هر صورت، محتوای ویرایش نهم، توسط سیستم پشتیبانی 9/e عوامل شرکت SEPA، تکمیل خواهد شد.
با تشکر ویژه از نانسی مید از موسسه مهندسی نرم افزار در دانشگاه کارنگی ملون، که فصلی از مهندسی امنیت نرم افزار را تألیف اوست؛و همچنین با تشکر از تیم لتبریج از دانشگاه اتاوا به دلیل همکاری در ارائهی زبان مشترک مدل سازی، ارائهی الگوهای مربوط به زبان کنترل اپراتور و توسعهی مطالعه موردی همراه این کتاب.از دیل اسکرین از کالج کالبی بابت ارائهی آموزش زبان مشترک مدل سازی در پیوست اول متشکریم.از ویلیام گروسکی از دانشگاه میشیگان – دیربورن که مروری بر علم داده درضمیمه دوم ارائه کرده و دانشجوی او تری رواس تقدیر میشود.از همکار استرالیاییمان مارگارت کلو برای به روزرسانی مطالب وب آموزشی همراه این کتاب متشکریم؛ به علاوه، از آستین کراوس نیز برای ارائهی نگرشی پیرامون توسعهی نرم افزار در صنعت بازیهای ویدیویی، از دیدگاه یک مهندس ارشد نرم افزار، تشکر میکنم.
همچنان که او جدیدترین نسخهی یکی از محبوب ترین بازیهای تیراندازی اول شخص جهان را به من نشان میداد، طراح جوان خندید و گفت «شما گیمر)بازیکن حرفهای) نیستید؟» لبخند زدم و گفتم: «چطور؟»-مرد جوان شلوارک و پیراهن آستین کوتاهی به تن داشت و از هیجان مثل پیستون بالا و پایین میپرید؛ چیزی که انگار نزد همکارانش بسیار عادی به نظر میرسید.
نگاهی سریع
مهندسی نرم افزار چیست؟ نرم افزار کامپیوتری توسط متخصصان نرم افزار ساخته و سالها پس از آن، توسط آنها پشتیبانی خواهد شد.برنامههای موجود در این نرم افزارها، با هر اندازه و ساختار، در کامپیوترها به اجرا در میآیند.مهندسی نرم افزار شامل یک فرایند و مجموعه ای از روشها و آرایهای از ابزارهاست که به متخصصین امکان ساخت نرم افزار رایانه ای باکیفیت را می دهد.تولیدکنندگان و مصرف کنندگان این نرم افزار ها چه کسانی هستند؟ مهندسان نرم افزار، با استفاده از فرآیندهای مهندسی نرم افزار، به ساخت و پشتیبانی از این برنامهها میپردازند و تقریباً همه افراد در جهان صنعتی از آن استفاده می کنند.اهمیت مهندسی نرم افزار در چیست؟ مهندسی نرم افزار مهم است، زیرا به ما امکان می دهد تا در زمان کم، به طراحی سیستم های پیچیدهی باکیفیت بپردازیم.همچنین کارها را سر و سامان میبخشد؛ ضمن اینکه به طراحان نرم افزار، اجازه میدهد تا بر حسب نیاز، رویکردی مناسب اتخاذ کنند.مراحل طراحی نرم افزار چیست؟ نرم افزار رایانهای مثل هر محصول دیگری، به فرآیندی مؤثر و انطباقپذیراحتیاج دارد تا بتواند با بالاترین کیفیت، پاسخگوی مصرف کنندگان باشد.منظور از محصول کار چیست؟ از دید مهندس نرم افزار، محصول کار مجموعهای از برنامهها، مفاهیم(دادهها)، و سایر محصولاتی است که از یک نرم افزار کامپیوتری پشتیبانی میکند.اما از دید کاربران، محصول کار ابزار یا محصولی است که به نوعی دنیای او را بهتر میکند.چطور از صحت روند کار اطمینان حاصل کنم؟ نکات این کتاب را مطالعه کنید و ایدههای قابل اجرا در نرم افزاری که ساختهاید را انتخاب کنید و آنها را به کار ببندید.او گفت:« آخر اگر گیمر(بازیکن حرفهای) بودید، بسیار بیشتر هیجانزده میشدید و این دقیقاً چیزی است که مشتریان ما، بدون شوخی حاضرند بهخاطر آن آدم بکشند.» ما در خدمت یکی از موفقترین سازندگان بازی در دنیا هستیم.در چند سال اخیر، از نسخههای قبلی نمونهی نمایشی بازی طراحیشده توسط او، بیش از 50 میلیون عدد به فروش رسید و میلیونها دلار درآمد داشت.پرسیدم: «بنابراین این نسخه چه زمانی به بازار عرضه میشود؟» شانه بالا انداخت و گفت: «حدوداً 5 ماه دیگر، و هنوز کارهای زیادی باقی است.» او مسئولیت راه اندازی بازی و عملکرد هوش مصنوعی را در برنامهی با بیش از سه میلیون ردیف کد به عهده داشت. پرسیدم: « آیا شما از تکنیکهای مهندسی نرم افزار استفاده میکنید؟».انتظار داشتم بخندد و سر تکان دهد.لحظهای مکث کرد و کمی فکر کرد.بعد آهسته سرش را تکان داد و گفت: « بله البته، بر حسب نیاز از آنها استفاده میکنیم.» کنجکاوانه پرسیدم: « در چه مواردی؟» پاسخ داد: « مشکل ما اغلب تبدیل و تغییر مقررات موردنظر طراحان است.» حرفش را قطع کردم و پرسیدم : « طراحان؟»- « منظورم کسانی است که به طراحی داستان، شخصیتها و هرآنچه که یک بازی را محبوب و پرطرفدار میکند، میپردازند.ما با استفاده از دادههای موردنظر طراحان، مجموعهای از مقررات را تعریف میکنیم و با استفاده از آنها به ساخت بازی میپردازیم.»_«بعد از مشخص کردن مقررات چه میکنید؟