یک دانشجوي گرامی در توضيحات مطلبي که پيشتر با عنوان استاد فول چارت در وبلاگ نوشته بودم از منابع موجود براي درس مهندسي نرم افزار 1 پرسيده بود. براي پاسخگويي، بهتر ديدم در مطلبي مستقل به برخي کتابهاي موجود در اين زمينه اشاره کنم.
نکته اول :متاسفانه در هنگام نگارش اين مطلب به سيلابس درسي وزارت علوم مشخص شده براي اين درس، دسترسي نداشتم و تنها مبنا را بر کتابهايي که مي شناسم گذاشتم.
نکته دوم: کتابهايي که به آنها اشاره مي شود ، برخي کتابهايي هستند که من با توجه به سرفصل دروسي که براي تدريس اين درس تعيين کرده ام استفاده مي کنم. مدرسان ديگري ممکن است با توجه به اولويتهايشان کتب ديگري را استفاده کنند (حتي کساني را مي شناسم که از کتاب پرسمن که مرجعي است براي مهندسي نرم افزار 2 به صورت کامل در تدريس اين درس استفاده مي کنند و يا ديگراني که در اين درس صرفا يک متدولوژي را آموزش مي دهند.) که این صرفا یک تفاوت سلیقه است در تدریس و گرنه محتوی تقریبا برای همه یکی است.
بنابراين قبل از پرداختن به فهرست کتابها مناسب مي دانم در مورد محتوي درس مهندسي نرم افزار 1 از ديد خود توضيحاتي ارائه کنم.
درس مهندسي نرم افزار 1 از چهار بخش تشکيل شده است:
بخش اول : مباني مهندسي نرم افزار: شامل مروري بر تعاريف سيستمها و فرآيندهاي توسعه نرم افزار و تعاريف تحليل سيستمها و نيز روشها و منابع جمع آوري اطلاعات در سازمانها (اين بخش حدود يک سوم زمان ترم را به خود اختصاص مي دهد)
بخش دوم : روش تحليل و طراحي ساختيافته : در اين بخش مروري بر روش تحليل و طراحي ساختيافته سيستمها (SSADM:Structured System Analysis & Design) به عنوان يک نمونه از اين روشها خواهد شد.
بحش سوم : بررسي روشهاي تحليل و طراحي شيء گرا : در اين بخش پس از مروري بر مفاهيم شيء گرايي و نيز مرور تاريخچه روشها، نگاهي مختصر به روش يکپارچه (RUP:Rational Unified Process) مي شود.
بخش چهارم : با توجه به زمان باقيمانده در صورت امکان به روشهاي تهيه پيشنهاد پروژه (Proposal) و نيز درخواست پيشنهاد براي پروژه (RFP) پرداخته مي شود.
اما کتب مورد استفاده فارسي:
در اين زمينه کتابهاي زيادي به فارسي منتشر شده است که به برخي از آنها اشاره مي شود:
1- مهندس صادقي، ايرج، "تجزيه و تحليل و طراحي سيستمها" ، نشر آتيه، 1377
کتابي که مفاهيم پايه و مبنا را به خوبي پوشش داده است.
2- مهندس صادقي، ايرج، "مهندسي نرم افزار 1و2" , نشر گسترش علوم پايه، 1381
آقاي مهندس صادقي در اين دو جلد کتاب ديگر با محور قراردادن موضوعات درسي اين دو درس مطالب متنوعي را پوشش داده اند.
3- ذاکري، بتول، "روشهاي ساختيافته تجزيه و تحليل و طراحي سيستمهاي اطلاعاتي" ، سازمان مديريت صنعتي، 77
اين کتاب، کتاب محبوب خيلي از استادان در تدريس اين درس است که به شکل خوبي مفاهيم پايه و نيز مفاهيم عمومي روشهاي ساختيافته را پوشش داده است.
4- شرکت فرگوسن و سازمان مديريت صنعتي، "متدولوژي توسعه سيستمهاي اطلاعاتي"، سازمان مديريت صنعتي، 75
در اين کتاب با اين وجود که صرفا به روشهاي ساختيافته توجه شده است اما به دليل آوردن فرمها و قالب هاي استاندارد در تهيه گزارشات مي توان به عنوان منبع خوبي مورد استفاده قرار گيرد.
5-دکتر پارسا، سعيد، "تحليل و طراحي سيستمها (UML-SSADM) در مهندسي نرم افزار" ، جلد اول، دانشگاه علم و صنعت، چاپ ششم 1382
دراين کتاب دامنه متنوعي از موضوعات درس شامل روشهاي ساختيافته و شيء گرا پوشش داده شده است. هر چند ضمن توجه خاص به روشهاي ساختيافته، مباني تحليل و طراحي به شکل مختصري ارائه شده است.
6-هوريس کيوويچ، ايگور ترجمه مهندس عين ا... جعفرنژاد قمي، "تحليل و طراحي سيستمها"، نشر علوم رايانه، ويرايش پنجم ، 1382
در اين ترجمه فارسي از اين کتاب معرف ، به مطالب درس به شکل خوبي پرداخته شده است. کتاب اصلي به زبان انگليسي از پر استفاده ترين کتابها در تدريس دوره هاي مشابه در دانشگاه هاي مختلف دنيا مي باشد.
7- ويور، فليپ ، ترجمه همکاران سيستم، "روش تحليل و طراحي ساختيافته SSADM" جلد 1و 2 ، نشر ويدا ، 1377
اين کتاب براي تدريس بخش دوم درس بيشتر مورد توجه است. در اين کتاب کل روش SSADM به همراه يک مورد کاربري و به شکل ساختيافته ارائه شده است.
8-روحاني رانکوهي، سيد محمد تقي و اميري، يوسف، "ساخت نرم افزار شيء گرا"، انتشارات جلوه ، 1378
اين کتاب هر چند در زمينه ديگري نوشته شده است اما فصول ابتدايي آن براي پرداختن به مفاهيم شيء گرايي (OOC:Object Oriented Concepts) بسيار خوب است.
و کتب انگليسي:
از بين ده ها کتاب منتشر شده در اين زمينه مي توان به موارد زير اشاره کرد:
9-
Hawryszkiewycz, I. (2001) Introduction to Systems Analysis and Design, 5th Ed., French’s Forest, NSW: Prentice Hall.
10-
Kendall, K.E. and Kendall, J.E. (2002) Systems Analysis and Design, 5th. Ed., Upper Saddle River, New Jersey: Prentice-Hall.
11-
Shelly,G., Cashman, T., and Rosenblatt, H. (2002) Systems Analysis and Design, 5th Ed., Boston, MA.: Thomson Learning.
12-
Whitten, JL, Bentley, LD & Dittman, KC 2001, Systems analysis and design methods, 5th edn, Irwin/McGraw-Hill, Boston, Massachusetts.
13-
Jacobson, Ivar, Booch Grady & Rumbaugh James,(1999) The Unified Software Development Process, Addison-wesley
14-
PressmaN Roger,(1997) , Software Engineering, Mc Graw Hill
کتاب اول چنانچه در بخش کتاب هاي فارسي اشاره شد، کتاب بسيار خوبي است در اين زمينه که به همه مطالب به شکل مناسب اشاره شده است.
کتاب دوم به شيوه اي جالب و خواندني مفاهيم بسيار زيادي را در اين زمينه ارائه نموده است. از نکات جالب اين کتاب آوردن کاريکاتور هاي مرتبط با هر بخش مي باشد که خواننده را به خواندن متن کتاب ترغيب مي کند.
کتاب سوم نيز از جمله کتابهاي پرطرفدار در زمينه تجزيه و تحليل سيستمها است.
نکته جالب توجه در مورد کتاب چهارم ، شيوه ارائه مفاهيم مي باشد. در اين کتاب کليه فرآيندها و فعاليتهاي مرتبط با تحليل و طراحي سيستمها، افراد مرتبط و محصولات هر بخش را در يک نمودار عمومي ترسيم کرده است و بخش به بخش آنها را توضيح مي دهد.
در کتاب پنجم از فهرست کتب انگليسي روش يکپارچه، معروف ترين و کاملترين روش تجزيه و تحليل شيء گرا ، معرفي و به آن اشاره شده است.
کتاب آخر با وجوديکه مي تواند به عنوان مرجعي براي درس مهندسي نرم افزار 2 تلقي شود اما مي توان بخشهايي از آن را به صورت خلاصه و مقدماتي در درس مهندسي نرم افزار 1 (بويژه در بخش هاي مديريت پروژه) بکار برد.
توصيه شخصي من:
از بين کتب فوق شخصا کتاب آقاي هوريس کيوويچ (شماره 6 و يا 9) و نيز کتاب آقايان کندال، کندال (مورد شماره 10) را به عنوان کتابهايي که به صورت عمومي و بدون توجه ويژه به يک متدولوژي خاص اشاره دارد بيشتر مي پسندم و براي آشنايي با روش ساختيافته SSADM کتاب آقاي ويور (مورد 7) و براي روش شيء گراي RUP کتاب سه تفنگدار شيء گرايي! ( کتاب شماره 13) را توصيه مي کنم.
نکته مهم 1: نگارش کتب و سال انتشار لزوما آخرين نسخه نيست. بلکه آني است که در اختيارم بود. برخي کتابها (علي الخصوص کتابهاي لاتين فهرست) در نگارش هاي جديدتر نیز منتشر شده اند.
نکته مهم 2: اين تنها منابعي است که به صورت کتاب هاي اختصاصي منتشر شده اند و يا ارتباط زيادي با موضوع درس دارند. در مورد بسياري از مطالب رجوع به مقاله هاي خوب و نيز کتب ديگر در زمينه هاي نرم افزار، فنآوري اطلاعات، طراحي پايگاه داده و ... ضروري است.
نکته مهم 3: برخلاف تصور رايج در برخي دانشگاه ها، درس مهندسي نرم افزار1و 2 را دروس حفظي نمي دانم. بلکه دروسي مي دانم که همزمان با بيان مطالب علمي و آکادميک، بايستي مثال ها و موارد کاربري را از دنياي واقع ذکر نمود و با انجام کار عملي (يک پروژه تحليل سيستم در يک سازمان دولتي و يا خصوصي ) دانشجويان را عملا با اين مفاهيم آشنا نمود.
نکته مهم 4: اگر نتوانستيد با اين درس رابطه برقرار کنيد و از آن خوشتان نيامد و يا نمره کم گرفتيد اصلا نگران نباشيد! قرار نيست همه مهندسين نرم افزار تحليل گر بشوند!
همين!