|
0-1 پوشش مطالب 0-2 ساختار كتاب 0-3 مشكلات درس مهندسي نرمافزار 0-4 راه توفيق 0-5 نحوهي استفاده از كتاب
اين فصل در مورد ويژگيهاي كتاب، به لحاظ پوشش، ساختار و نحوهي كاربرد آن توسط خوانندگان مختلف است. بهويژه با توجه به مشكلات درس مهندسي نرمافزار و راههاي مقابله با اين مشكلات، چگونگي استفاده از كتاب به عنوان مرجع درس مهندسي نرمافزار2 عنوان شده است. 0- 1 پوشش مطالب شايد پوشش و بهويژه عمق مطالب اين كتاب در مقايسه با مراجع متداول اين درس ازجمله [Sommerville, 2006] و [Pressman, 2006] ، به حق مورد انتقاد قرار گيرد. اما اگر به چگونگي استفاده از اين مراجع نگاه كنيم، درمييابيم كه در قريب به اتفاق موارد، استفاده از آنها بهصورت انتخابي و گاه حتي براساس تعداد صفحه صورت ميگيرد! در نتيجه در بسياري از موارد، بخش اعظم دانشجويان با مطالب بريده بريده و خارج از يك بافت مناسب سروكار دارند. نكته مهم ديگر شرايطي است كه عملاً در كشور وجود دارد و براي بسياري از افراد موضوع مهندسي نرمافزار جا نيفتاده است. بهاين ترتيب شايد ايجاد بينش اجمالي و ايجاد تشنگي نياز بهآن ( بهويژه براي افرادي كه تخصصهاي ديگري دارند و عملاً مستقيم يا غيرمستقيم درگير يا تأثيرگذار در كار توليد نرمافزار هستند و به اعتقاد من تعدادشان حتي بيشتر از متخصصين رايانه است ) مؤثرتر از مطالب كامل و جامعي باشد كه به دليل نبود فرصت و يا عدم باور، مطرح نشود يا مورد استفادهي عملي قرار نگيرد. بهاينترتيب شايد اين كتاب حركتي بسياركوچك و ضمني در مسير بوميسازي مهندسي نرمافزار و كاربرد عملي آن در كشور باشد. 0- 2 ساختار كتاب اين كتاب در پنج بخش سازماندهي شده است: بخش اول: زمينه سازي. براي ارائهي آگاهيهاييكه مهندسي نرمافزار را معرفي، ضمن آنكه ضرورت و اهميت آنرا روشن كند و بهعلاوه محمل لازم براي بهرهگيري از مطالب بقيهي كتاب را فراهم نمايد؛ مطالعهي اين بخش را به همهي خوانندگان كتاب توصيه ميكنم. فصل1. مهندسي نرمافزار چيست؛ ديدي كلي از فرايند نرمافزار و مهندسي نرمافزار ارائه ميكند؛ فصل2. دو جنبهي اصلي توليد نرمافزار؛ براي تأكيد روي جنبهي مديريتي توليد در مقابل جنبهي تخصصي و ارتباط ايندو است.
بخش دوم: جنبههاي مديريتي. براي بيان مطالبيكه عملاً مديريت توليد نرمافزار را مورد توجه قرار ميدهند و بهشدت در شكلگيري و ادامهي حيات و درنهايت در توفيق يا شكست يك نرمافزار و توليدكنندگان آن تأثيرميگذارند. بهدليل اينكه ضعف توليد نرمافزار در كشور را بيشتر در جنبههاي مديريتي ميدانم تا جنبههاي تخصصي، مطالب مديريتي در ابتداي كتاب آمده است. فصلهاي مديريتي شامل: فصل3. انتخاب؛ در مورد اهميت انتخاب و نكات مورد توجه در انتخابها، بهويژه در انتخاب پروژه و همكار است؛ فصل4. مديريت نيروي انساني و مديريت دانش؛ به بيان نكاتي براي بهرهوري نيروي انساني، به عنوان گرانترين عامل در توليد نرمافزار، ميپردازد؛ فصل5. برنامهريزي و زمانبندي؛ كه در برنامهريزي چگونگي رسيدن به اهداف در زمانبندي چهارچوب زماني و مديريت زمان دنبال ميشود؛ فصل6. مديريت خطر؛ معرفي مجموعه خطراتي كه به طور معمول توليد نرمافزار را تهديد ميكند و راهحلهاي متداول، مورد توجه اين فصل است؛ فصل7. مستندسازي؛ به نقش مهم مستندات، تعدد آنها و نكات مورد توجه در توليد آنها ميپردازد؛ فصل8 . استاندارد و كيفيت؛ در مورد استاندارد نرمافزار و ارتباط آن با كيفيت است؛ فصل9. قيمتگذاري و بازار؛ عوامل مؤثر را معرفي و روشهاي متداول در قيمتگذاري را مطرح ميكند؛
بخش سوم: جنبههاي تخصصي1. يا مراحل چرخهي عمر نرمافزار. براي بيان نكات و روشهاي تخصصي كه در مراحل مختلف چرخهي عمر نرمافزار مطرح است. شامل: فصل10. خواستهها و مشخصات؛ تدوين آنچهكه يك محصول بايد انجام دهد (خواستههاي عملكردي) و تدوين شرايطي كه در توليد يا عملكرد محصول تأثيرگذار است (خواستههاي غيرعملكردي)، موضوع اين فصل است؛ فصل11. مؤلفه؛ تقسيم مسئله به قسمتها يا مؤلفهها و نگاه مؤلفهاي به توليد در تمام مدلهاي توليد مورد توجه است. اين فصل به مؤلفه و ويژگيهاي مؤلفهي خوب ميپردازد؛ فصل12. مدلسازي و طراحي؛ مفاهيم مدل و مدلسازي را معرفي كرده و با استفاده از آنها و مفهوم مؤلفه، موضوع مهم طراحي و انواع آن را مطرح ميكند؛ فصل13. طراحي واسط كاربر؛ تنوع شكلهاي مختلف ارتباط يك نرمافزار با مخاطبان – انسان و غيرانسان - در اين فصل مطرح شده و نكات مشترك و پراستفاده در طراحي بخش واسط شرح شده است؛ فصل14. پيادهسازي؛ درمورد برنامهسازي و مجتمعسازي مؤلفههاي ساخته شده براي پاسخگويي به خواستههاي پروژه است؛ فصل15. آزمايش؛ ارزيابيو آزمايش نرمافزار از بدو شكلگيري ايده و در تمام گامها مطرح است. اما در اين فصل آزمايش كد نرمافزار و مجموعهاي از آزمايشهاي مرتبط، مورد توجه است؛ فصل16. آزمايش علمي نرمافزار؛ اين فصل به اعتبارسنجي علمي نرمافزار اختصاص يافته است. طرح اين موضوع در كتابهاي مهندسي نرمافزار متداول نيست و براي اولين بار است كه انجام ميشود؛ فصل17. نگهداري؛ در مورد رفع خطاهاي احتمالي، اِعمال تغييرات و ارتقاي محصول براي تناسب با شرايط و خواستههاي جديد؛ و بيانگر نكاتي است كه نگهداري بهتر و ارزانتر را ميسّر ميسازد؛
بخش چهارم: جنبههاي تخصصي2. براي بيان مطالب و روشهايي كه با آنها ميتوان روند توليد نرمافزار را كارآمدتر كرد. شامل: - فصل18. مهندسي نرمافزار به كمك رايانه؛ كه ميخواهد تا حد امكان فعاليتهاي مهندسي نرمافزار به كمك رايانه انجام شود؛
فصل19. مدل شيء؛ هدف اين فصل آشنايي با مفاهيم اصلي مطرح در مدل شيء، بهعنوان يك مدل توليد نرمافزار و مقدمهچيني براي توليد نرمافزار با اين مدل است؛ فصل20. زبان مدلسازي يكپارچه (UML )؛ به معرفي اجمالي عناصر و نمودارهاي اصلي UML ميپردازد؛ فصل21. توليد برمبناي قطعهها؛ سعي در معرفي مفاهيم قطعه، توليد برمبناي قطعه و بيان محاسن و ملزومات آن و اشارهاي به موضوع معماري نرمافزار دارد؛ فصل22. سامانههاي بيدرنگ؛ در مورد سامانههايي است كه از نظر زمان (شروع يا پايان يا طول مدت) با محدوديت جدي روبرو هستند؛
بخش پنجم: نتیجهگيري. فصل23. پاياندهي؛ موقعي ميتوان به نتايج و منافع يك محصول يا خدمت، در هر مرحله از فرايند توليد، تكيه كرد كه مطابق خواست مخاطبان آن مرحله (و از جمله خواست خود توليدكننده در آن مرحله) پايان يافته باشد. بنابراين پاياندهي و اقدامات لازم در اين راستا، موضوع بحث اين فصل است. پاياندهي نوآوري اين كتاب است و يكي از جديترين مشكلات توليد نرمافزار كشور را هدف گرفته است؛ فصل24. مهندس نرمافزار كيست؟ بهطور مشخص درمورد مهندس نرمافزار و ويژگيهاي مطلوب او صحبت ميكند؛
پيوستها. چند فهرست كنترلي يا برگهي بازبيني ، بعضي اطلاعات ضروري، تعدادي تست و همچنين واژهنامههاي فارسي به انگليسي و انگليسي به فارسي در پيوستها آمده است. اطلاعات جنبي ضروري نيز بهطور جداگانه، تحت عنوان جعبههاي اطلاع و در قالب جعبه حاوي همين جمله، ارائه شده است. |
0- 3 مشكلات درس مهندسي نرمافزار ارائهي بسياري از درسها با اين مشكل مواجه است كه بعضي دانشجويان بهدليل عدم اطلاع يا كم تجربگي از علت ضرورت درس با خبر نيستند و درنتيجه انگيزهي لازم براي پيگيري آن را ندارند. مشكل درس مهندسي نرمافزار از اين بيشتر است. چرا كه دانشجويان اين درس، قبلاً در قريب به اتفاق درسهاي تخصصي خود، ناچار به برنامهسازي و توليد نرمافزار بودهاند و به گونهاي ايجاد نرمافزار را تجربه كردهاند. اما با اين حال ضرورت مطالب مهمي از درس(مثل برنامهريزي و مستندسازي) برايشان روشن نيست و آنها را اضافي و حتي اتلاف وقت تصور ميكنند. دلايل متعددي وجود دارد (شكل0-1)، از جمله : قريب به اتفاق پروژههاي دانشجويي كوچك هستند؛ اكثراً با تحويل پروژه به استاد، حيات آن نرمافزار به پايان ميرسد؛ اغلب كاربرد واقعي ندارند؛ كشف خطا يا اصلاح، ارتقا و نگهداري محصول مطرح نيست؛ جنبههاي مادي در آنها مطرح نيست؛ توليد بهصورت انفرادي است. درموارد گروهي نيز جنبههاي رفاقتي حاكم است؛ ضرورت كسب درآمد از محصول، و اساساً سرمايهگذاري و برگشت اين سرمايه براي اكثر دانشجويان محسوس نيست؛ اغلب جنبههاي مديريتي توليد نرمافزار براي دانشجويان مطرح نيست.
0- 4 راه توفيق كليدكار، دنبال كردن و دريافت مطالب كتاب همراه با دنبال كردن يك پروژهي واقعي، يا قرار گرفتن در محيط وشرايط واقعي- از جهت موضوع، كارفرما، محيط توليد و همكاران - است. پس بهتر است سعي كنيد اين محيط را براي خود به وجود آوريد. ممكن است قرارگرفتن در شرايط واقعي براي همهي دانشجويان عملي نباشد. ولي حداقل شبيهسازي شرايط واقعي تقريباً براي همه تا حد زيادي ممكن است. و اين هم ميسّر نيست مگر با خواست عملي شما. بهعنوان مثال درانجام پروژه، مخصوصاً گروهي كار كنيد و در برخورد با دوستان خيلي صميمي هم مشابه يك محيط كاري واقعي، جدي باشيد. اين نكته هم بسيار مهم است كه خود را براي شرايط آينده ببينيد. درشرايطيكه ميخواهيد در يك مؤسسهي توليد نرمافزار معتبر كار حرفهاي قابل توجه و با كيفيت انجام دهيد. چرا كه با وجود امكانات ارتباطي و ويژگيهاي كار توليد نرمافزار، شما ميتوانيد بازار جهاني را در مقابل خود داشته باشيد. بهعبارت ديگر، مطالب اين كتاب براي كار حرفهاي در زمينهي رايانه، حتي فراتر از آن در تمام زندگي تخصصي و شخصي شما ميتواند مورد استفاده قرار گيرد. 0- 5 نحوهي استفاده از كتاب
براي كساني كه ميخواهند كتاب را مستقل از پروژه يا به شكل يك داستان مطالعه كنند، همين ترتيب موجود بسيار كمككننده است؛ براي مديران، به ترتيب بخش اول، بخش دوم و فصل آخر را بيشتر توصيه ميكنم؛ به كساني كه از كتاب به شكل يك خودآموز استفاده ميكنند، قوّياً توصيه ميكنم مطالعهي كتاب را با انجام يك پروژهي نرمافزاري تلفيق كرده و برحسب مورد، مطالب كتاب را در مورد پروژه بهكار برند. با توجه به پيشرفت پروژه ترتيب فصول زير را توصيه ميكنم: فصل1 و 2 براي اشراف عمومي به كل درس؛ فصل23، براي توجه به اهميت پاياندهي و استفادهي هميشگي از آن؛ فصل3 و فصل4، و اگر پروژه را به تنهايي دنبال نميكنيد، 5، 6، 7، 8 و 9 براي امور مديريتي؛ فصل18، براي توجه به اهميت استفاده از رايانه براي مهندسي نرمافزار؛ فصول11 تا 17، براي دنبال كردن فعاليتهاي فرايند نرمافزار (اگر علاقمند به شيءگرايي هستيد، فصول19 و 20 را بين فصول12 و 13 توصيه ميكنم)؛ فصل17، 21، 22، 24؛
براي كساني كه كار پژوهشي ميكنند و بهويژه به كساني كه براي هدايت بهتر پروژههاي كارشناسي ارشد و دكتراي خود از كتاب استفاده ميكنند، مطالعه و استفاده از فصل16 را قبل يا بعد از فصل3 – انتخاب- توصيه ميكنم. استفاده بهعنوان مرجع درس براي همكاراني كه از كتاب به عنوان مرجع درس مهندسي نرمافزار2 استفاده ميكنند، بهكارگيري تجربهي تدريس زير را توصيه ميكنم: دنبال كردن روند توليد يك پروژهي نرمافزاري در اين درس بسيار مؤثر است؛ يك طرح زماني مشخص براي دريافت و كنترل نتايج كار دانشجويان، به ويژه مهلت تحويل نهايي پروژه، در ابتداي درس به دانشجويان اعلام و به طور جدي رعايت گردد. جدول0-1 يك طرح زماني نمونه را نشان ميدهد؛ در اين پروژه نهتنها محصول، بلكه چگونگي كار دانشجويان در مديريت و اجراي اين پروژه نيز لازم است مورد توجه و ارزيابي قرار گيرد؛ بهتر است پروژهها بهصورت تيمي (حداقل سه نفر) برگزار گردد، تا دانشجويان با مشكلات كار گروهي برخورد كنند؛ براي كاهش خطر كمبود وقت، لازم است اعضاي تيمهاي كاري و موضوع پروژهها حداكثر تا آخر هفتهي دوم نهايي گردد؛ در مواردي كه احتمال تأخير در شروع عملي ترم وجود دارد، ميتوان تعيين تيم كاري و تعيين موضوع را بهطور رسمي در زمان ثبت نام به دانشجويان محول كرد؛ مستندسازي و كنترل آنها به شدت مورد تأكيد قرار گيرد؛ الگوهاي مشخصي براي انواع و قالب مستنداتيكه دانشجويان بايد ارائه كنند، براي هدايت دانشجويان و تسهيل ارزيابي آنها در ابتداي درس به دانشجويان ارائه گردد؛ نمونه سازي و كنترل مستقيم محصولات نمونهسازي شدهي دانشجويان (در انتهاي هفتهي ششم) مورد توجه قرار گيرد؛
جدول 0-1 : يك طرح زماني نمونه براي انجام فعاليتهاي دانشجو كار | محصول | مهلت زماني | | انتخاب همكار و موضوع پروژه | سند معرفي همكاران و مدير پروژه؛ نمودار زمينه (براي معرفي مخاطبان محصول و تعاملات اصلي). | انتهاي هفتهي دوم | | تدوين خواستهها | سند مشخصات خواستهها. | انتهاي هفتهي چهارم | | نمونهسازي | نمونهي قابل اجرا. | انتهاي هفتهي ششم | | طراحي مقدماتي | نمودار ساختار؛ طرح مقدماتي مؤلفهها؛ ديكشنري مفاهيم و دادهها. | انتهاي هفتهي هشتم | | طراحي تفصيلي | طرح تفصيلي مؤلفهها؛ سناريوي تعامل كاربر؛ سناريوي همكاري مؤلفهها. | انتهاي هفتهي دهم | | پيادهسازي و آزمايش محصول | محصول نهايي و مجموعه مستندات؛ مديريتي و فني به صورت يك بسته. | اولين روز امتحانات پايانترم | | كارهاي تكميلي روي كد | برگزاري آزمايش قبول | هفتم تا دهمين روز امتحانات پايانترم |
در مورد ترتيب ارائهي فصلها متأسفانه هماهنگ كردن مطالب درس با نيازهاي پروژه چندان ساده نيست و ناچار ميشويم مطالب مديريتي و تخصصي درس را هم ارائه كنيم. جدول0-2 و شكل0-2 يك ترتيب پيشنهادي از فصول و زمان ارائه را نشان ميدهد. علاوه بر دقت در زمان و ترتيب ارائهي مطالب، يك ابزار بسيار مهم، الگوهايي است كه براي انجام گامهاي پروژه، لازم است به موقع به دانشجويان داده شود. براي مثال با ارائهي الگوي مستندسازي مشخص، بدون اينكه به مبحث مستندسازي رسيده باشيم، مستندات پروژه متناسب با پيشرفت پروژه تهيه ميشود. همين نمونههايي كه برمبناي الگوها توسط دانشجو تهيه ميشود، كار تدريس همان بخشها را نيز سادهتر و ملموستر ميكند؛ بهجز فصل انتخاب و فصل پاياندهي، بقيهي مباحث مديريتي را با اين روش ميتوان ديرتر مطرح كرد. جدول 0-2 : يك ترتيب پيشنهادي ارائهي فصول | هفته | عناوين | | اول | معرفي درس، ارتباط با مهندسي نرمافزار1، نحوهي ارزيابي، قرارها، انتخاب معيارهاي عمومي، انتخاب همكار (فصل3) | | دوم | انتخاب پروژه (فصل3)، نرمافزار خوب؛ فرايند نرمافزار (فصل1) | | سوم | دو وجه اصلي (فصل2)، پاياندهي (فصل23)، خواستهها (فصل10) | | چهارم | مؤلفه (فصل11)، مدلسازي و طراحي (فصل12) | | پنجم | ادامهي طراحي (فصل12)، طراحي واسط كاربر (فصل13) | | ششم | مديريت نيروي انساني (فصل4)، برنامهريزي و زمانبندي (فصل5) | | هفتم | مديريت خطر (فصل6)، پيادهسازي (فصل14) | | هشتم | امتحان بينترم، آزمايش (فصل15) | | نهم | ادامهي آزمايش (فصل15)، آزمايش علمي نرمافزار (فصل16) | | دهم | نگهداري (فصل17)، مستندسازي (فصل7) | | يازدهم | ادامهي مستندسازي (فصل7)، كيفيت و استاندارد (فصل8) | | دوازدهم | قيمتگذاري(فصل9)، مهندسي نرمافزار به كمك رايانه (فصل18) | | سيزدهم | مدل شيء (فصل19)، UML (فصل20) | | چهاردهم | ادامهي UML (فصل20)، توليد بر مبناي قطعه (فصل21) | | پانزدهم | سامانههاي بيدرنگ (فصل22)، مهندس نرمافزار كيست (فصل24) |
در صورتي كه كلاسي با مشكل كمبود زمان روبرو باشد، به ترتيب فصول18، 23، 22، 20 و 21 ميتوانند از فهرست مطالب درس كنار گذاشته شود.
|