240 likes | 459 Views
مهندسي نرمافزار ترم اول ) 84 - 83 ( جلسه اول مدرس: محمد داورپناه جزي. مكمل و ادامهي درس تحليل و طراحي ) م ن 1 و م ن 2 ( يادآوري و تكرار بعضي مطالب نحوهي ارائه : - تكليف 10% - پروژه 3 تا 4 مرحله 40 % پياده سازي ، برنامه ريزي ، مديريت پروژه، مستندسازي ، تست
E N D
مهندسي نرمافزارترم اول) 84 - 83 (جلسهاول مدرس: محمد داورپناه جزي • مكمل و ادامهي درس تحليل وطراحي )م ن 1 و م ن 2 ( • يادآوريو تكرار بعضي مطالب • نحوهيارائه: - تكليف 10% - پروژه 3 تا 4 مرحله40% پيادهسازي، برنامهريزي، مديريتپروژه، مستندسازي، تست - امتحانميانترم و پايان ترم50% - ارائهي سركلاسنمرهي اضافي - روز حساب نمرهي اضافي - اهميتحضور دركلاس!! مهندسي نرمافزار محمد داورپناه جزي
مقدمه مديريت فرايندساخت نرمافزار دورهي حيات نرمافزار مديريت پيكربندي طراحينرمافزار پيادهسازي (زبانهاي برنامه نويسي) آزمون نرمافزار قابليت اعتماد نرمافزار ابزارهاي ساخت نرمافزار استفادهي مجدد از نرمافزار نگهداري نرمافزار مهندسي نرمافزار سرفصل مطالب درس مهندسي نرمافزار محمد داورپناه جزي
مهندسي نرمافزارمراجع درس • Software Engineering, principles and practice, Hans van Vliet Wiley, 1997 • Software Engineering, a practitioner’s approach, Roger S Pressman, McGraw-Hill, 1994 • Software Engineering, Ian Sommerville, Addison-Wesley, 1992 مهندسي نرمافزار محمد داورپناه جزي
فصل اول: مقدمه • جوان بودنعلمكامپيوتر - مقايسهيوضعيتقديمبا امروز كاربردهاياوليه: كاربردهايفعلي: - برنامههاي كوچك - برنامههايخيلي بزرگ - انجامسريع كل كار توسطيكنفر - انجامكار توسط تيم در زمانطولاني - كاربرد برنامهتوسط ايجادكننده (متخصص) - كاربر غير از ايجادكننده (هردوغير متخصص) - برنامهها برايحل مسائل تكنيكي - كاربردهايمتنوع درزندگي روزمره - وروديهاو خروجيها كلاً عددي - تنوعدادههايورودي و خروجي - ورودي روي كارت، خروجي رويكاغذ - تنوعوسايلورودي و خروجي - اجراي off-line برنامهها - اجراي محاورهاي - استفادهازدامپوكنسول براي خطايابي - روشهاي اتوماتيك خطايابي مهندسي نرمافزار محمد داورپناه جزي
مقدمه (دنباله) • مشخص شدن وسعت كار ساخت نرمافزارهاي امروزي - چند نمونه - دو ميليونخطاسمبلي سيستم KLM - 3/7 ميليونخط كدسيستمعامل UNIX - 400 ميليونخط كد مقصد شاتل، 1/30ساترن - 5000مرد-سالبرايتوليد OS360 • توجه . . . پيشرفت همچنانادامهدارد! - عدمآشنايي برنامه نويس با زمينهي كار (استفاده ازروشآزمايشو خطا) - افزودنبيرويهينيروي برنامهنويس براي پيشبرد پروژه (MILLION-MONKEY) • نتيجه: - عدم تحويل بهموقع نرمافزار - عدمبرآوردهكردن خواستههاي كاربر - عدم امكان اصلاح و تطبيقبرنامهها با شرايط - خطاهاي زياد بلافاصلهپس ازتحويل مهندسي نرمافزار محمد داورپناه جزي
مقدمه (دنباله) • حاصل كار: اعلام اصطلاح ‹بحران نرمافزار› براياينوضعيت • دو كنفرانس ناتودر 1968 و 1969 تحتهمينعنوان • تولد ‹مهندسي نرمافزار› با دورنمايزير • ساختننرمافزارطبق اصول مهندسيمانندساير رشتهها: مطالعاتتئوريك، تحليل ، طراحي بر مبناي اصول علمي، پياده سازي • مقايسه با ساختن يكپل ياساختمان، ساختن يكقطعهيمكانيكي • ساخت نرمافزاربدونرعايتاصول مهندسي معادل: شروعپروژهيساختمان با كندن زمين، تراشقطعه بدون طرح دقيق مهندسي نرمافزار محمد داورپناه جزي
مقدمه (دنباله) • دلايل سرمايهگذاري در ساخت نرمافزار - استفادهي اجتنابناپدير (عابربانك) - جايگزيني تكنولوژيجديد (حروف چيني، ساختتراشه) - افزايش كيفيت سرويس (كتابخانه) - تقليلهزينهها (كنترل انبار) • بهرهدهي اقتصادي، مهمترين هدف در غالب موارد • آمارمبين درجهياهميتصنعت توليد نرمافزار - 1980: 40 ميليون دلار سرمايهگذاري درآمريكا معادل 2% توليدناخالصملي - 1985: 70 ميليون دلارسرمايهگذاري در آمريكا، 140ميليون دلاردر دنيا - مقايسهيهزينههاينرمافزارو سختافزار، تقليل شديد مورد اخير، ش 1-1 ص 3 - 12% افزايش سالانهيتقاضا - 4% رشدسالانهينيرويمتخصص نرمافزار - ازديادروزافزونفاصله بين عرضه وتقاضا (مثال: . . . ) مهندسي نرمافزار محمد داورپناه جزي
مقدمه (دنباله) • اهميتتوليد نرمافزاركيفي، خطرناك بودنخطاهادر نرمافزار - اخطار اشتباهي حملهيشورويدر 6 و 9ژوئن 1980 در DoD - ضرر 50ميليون دلاريشركتهواپيمايي، اعلام اشتباهي پر شدنصندليهاي ارزان - اعلام اشتباهي بيماري لاعلاج يك زن توسط شركتبيمه، برائتاو در قتلدخترش • افزايش روزبهروز درصد ريسكدراستفاده از كامپيوتردر هرزمينه • اهميتفوقالعادهي مهندسي نرمافزار برايتقليلريسك • نيازبه روشهاو تكنيكهاي پيشرفتهتر در ساخت نرمافزار براي: - صرفهجوييهاياقتصادي - افزايش كارآيي روشها - برآورده كردن دقيقترخواستههاي كاربران - افزايشدرجهي اعتمادكاربرانبه نرمافزارو محيط حاوي آن • كيفيتوسودمندي (Q & P) دو عامل مهمدرمهندسي نرمافزار مهندسي نرمافزار محمد داورپناه جزي
1-1 مهندسي نرمافزار چيست؟ (جلسهدوم) • ناتو: تبيين واستفاده ازاصول مناسب مهندسيبرايتوليد نرمافزارهايمقرون به صرفه، قابل اعتماد و دارايكارآييبالاهنگام استفادهروي ماشينهايواقعي • IEEE: برخورد سيستماتيك با روندتوليد، عملكرد، نگهداريوكنارگذاشتننرمافزار • فازي بودنتعاريف . . . خصوصيات اصلي مهندسي نرمافزار: 1- ارتباطباايجادبرنامههايخيلي بزرگ Programming-In-The- Small در مقابلProgramming-In-the- Large - برنامهي مثلاً 100 خطي - برنامهي مثلاً 50000 خطي - يكنفربرنامهنويس، مدت كوتاه - گروهبرنامه نويس، مدتطولاني (6 ماه) - تكنيكهاوابزارهاي معمولي - عدم امكان تطبيقباتكنيكهاوابزارهاي PITS - مطرح بودن فقط برنامه - يك سيستم متشكل از برنامههاي وابستهبههم مهندسي نرمافزار محمد داورپناه جزي
مهندسي نرمافزار چيست؟ - خصوصيات اصلي (دنباله) 2- تسلطيافتنبرپيچيدگيبه عنوان تم اصلي - نياز به تجزيهيمسئلهيپيچيده براي ايجاد امكان مديريت مسائل محدودتر - پيچيدگينه در ذاتمسئله بلكهدر اثر تعددفاكتورهايي كهبايددرنظرگرفتهشود 3- همكاريمنظم بين افراد - بخشعمدهاز PITL - نيازبه ترتيبات لازمبرايتوزيع كار، روشهايارتباط، مسئوليتها، . . . - نيازبهابزارهاواستانداردهاي مناسببراي كنترل عملكردافراد - نظم و انضباط به عنوانكليد موفقيت پروژههاي نرمافزاري 4- ساخت نرمافزاربهصورت تكامل تدريجي - مدلياز واقعيت، نياز به تكامل منطبقبا جهانواقعبرايادامهي حيات (مثال . . . ) - درنظرگرفتن تكامل وهزينههايآن در دوران بعدازتحويل - نيازبهدرنظرگرفتن تكاملهايآتي در طول ساخت (مثال . . . ) مهندسي نرمافزار محمد داورپناه جزي
خصوصيات اصلي (دنباله) 5- اهميتحياتيكارآييمراحل ساخت نرمافزار - بالا بودن هزينهوزمان برايساخت ونگهداري - تفوقنيازبه نرمافزارهايجديد بر منابع انساني موجود، فاصلهي عرضهبا تقاضا (مثال ...) - نيازبهابزارهاو روشهاي بهتر برايساخت نرمافزارمنطبقبااصول مهندسي 6- نيازبهپشتيباني موثر از كاربران - نيازبه تطبيقعملكرد نرمافزاربا نحوهي كاركاربر (پيشگيري ازاعلام سريعخواستههايجديد يا مقابلهباآن) - نه فقط ساخت درستسيستم بلكهساختسيستمدرست - اهميت دريافتدرستخواستههايعملياتي - درنظرگرفتنقابليت استفاده و اعتماد، پاسخدهي وكاربرپسندي (فاكتورهاي كيفيت) - عدم احتساب فقطبرنامهها بهعنوان نرمافزار، بلكهاحتساب مستنداتكاربر، آموزشو نگهداري، ايجاد شرايط محيط حاوي نرمافزار، آثار جانبي نرمافزار مهندسي نرمافزار محمد داورپناه جزي
خصوصيات اصلي (دنباله) • وجود جنبههايمختلف در مهندسي نرمافزار - برنامهنويسيبخشمهميازآن ولي نه كل آن - جنبههايرياضيبراي اثباطصحت نرمافزار - جنبههاي مهندسيبرايتوليد محصول درست و مفيد - جنبههايروانشناسي براي ارتباط درست انسان و ماشين - جنبههايمديريتيبرايكنترل پروژه باتوجه به حجم كار • مقايسهي ساخت نرمافزار باساخت پل (فهمبهترمهندسي نرمافزار) - مجموعهخواستههايعملياتي - كاربردخلاق روشهايعلمي و مهندسي - انجامكار طي فازهايمختلف - نيازبهبرنامهريزيدقيقانجامفازها - رسيدگيممتد بهروند انجامكار - پياده سازيبر مبناي طرح دقيق و حساب شده • امكانفروريختنپل (استثنا)، ضعفدانشو تخميندوراز واقعيت • قاعده شدن تخمينهايمشابه (بهجاي استثنا) در ساخت نرمافزار مهندسي نرمافزار محمد داورپناه جزي
خصوصيات اصلي (دنباله) • دلايلوجودديدمتفاوت بين ساخت نرمافزار با ساخت محصولفيزيكي - وجود هزينهدرمراحلساخت (development) ونهدرمراحل توليد (production) - غير ملموس (غيرفيزيكي)بودن نرمافزار - امكان تكثير نرمافزارتقريباً بدونهزينه - استهلاك ملموس محصولفيزيكي - هزينههاي نرمافزاردراثر تغييرخواستهها - حصولقابليتاعتماد بر مبناي خطاهاي يافتشده و نهشكستگيوپارگي • دو خصيصهي مهم منتح بهپيچيدهشدن زيادمديريتنرمافزار - قابل رويتنبودن: وجود امكانديدن روندبالا رفتنساختمانولي نه ساخت نرمافزار - بيماري 90% تكميل در ساخت نرمافزار - پيوسته نبودن: تعييراتجزئي درخواستههاي يك پروژهيفيزيكي منجريه تغييرات جزئي در محصولفيزيكيولي نه در محصول نرمافزاري - تاثير وحشتناك خطاهاي جزييدرنتيجهي كار (گم شدنمارينردر زهره) • مهندسي نرمافزارو علمكامپيوتر، ساير مهندسيهاو علوم پايه مهندسي نرمافزار محمد داورپناه جزي
1-2 مراحل ساخت نرمافزار - تحليل خواستهها (جلسهسوم) • مقايسه بامراحل ساختيكخانه - وجود مراحل مشابه در ساختنرمافزارشامل: تعريف مسئله، تبيينوتحليل دقيق خواستهها، طراحيبرمبناي خواستهها، پيادهسازي (برنامهنويسي)، آزمون، نگهداري، . . . - نمايشمراحل بهصورت process model كليدر ش 1-2 ص 10 - وجود مراحل جزئيتر تشكيلدهندهي هر مرحلهي كلي - ترتيبينبودنمراحل، وجود همپوشانيوبرگشتبه عقب - عدم وجودمرزدقيق بين مراحل • جزئيات مرحلهي تبيين و تحليلخواستهها (مهندسيخواستهها) - عملكردموردنيازنرمافزار - توسعههايآتي - نوع و حجم مستندات موردنياز - رمان پاسخ مورددرخواست - امكانسنجي: بررسيوجودراهحل مقرون به صرفه و قابلپيادهسازي ازنظر فني - حاصل اين مرحله: مشخصهيخواستهها (RS) - شرحاين مرحلهدرترم قبل، اهميت درستي آن براي درستي مراحل بعدي مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - طراحي • طراحي برمبناياصول مهندسي - آزار دهنده ترين مرحله براي برنامهنويس - تجزيهيكلكاربه واحد (module)هاي قابل مديريت - تعريف دقيقكارهر واحد - تعيين روابط (interfaces) بين واحدها - جداسازي what ازhow (موارد مربوط به پيادهسازي) - حاصل اين مرحله: مشخصهي فني (technical specification) مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - پيادهسازي • پيادهسازي درزبانهاي برنامهنويسي - تمركز روي واحدهاي مجزا بر مبناي مشخصههاي آنها - انجام يك مرحله شبهكد نويسي قبل از برنامهنويسي - هدف اصلي: ايجاد برنامههاي كاملاً مستندسازي شده، قابل اعتماد، سليس و روان، انعطافپذير و صحيح - مردود بودن برنامههاي كوتاهوجمع وجور حاوي نكات پيچيده (برنامهيقدبلندوباريك بهترازبرنامههايقد كوتاه و چاق!!) - نياز به سازگاري زبان برنامهنويسيبازبان (روش) طراحي: ساختيافته، شيگرا، . . . - محصول اين مرحله: برنامهاي كهكارميكند مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - آزمون • آزمونياتستمرحله به مرحله - اشتباه بزرگ: جداكردنمرحلهيآزمون ازمرحلهيپيادهسازي - نياز به وجودآزموندر كليهي مراحلبراي يافتنخطاها هرچهسريعتر وبا هزينهي كمتر - آزمونانتقال درستازمرحلهي i به مرحلهيi+1 ياverification - آزمون انطباق داشتنباخواستههايكاربرياvalidation - افزوده شدنV&V به هر مرحله - خلاصهياين مرحله: ارزيابي كاراييو سپستنظيموبهينهسازي نرمافزار برمبناي ارزيابيهاي انجام شده، بهعنوان بخشيازآزمون مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - نگهداريومديريت پروژه • نگهدارينرمافزارپسازتحويل - فعاليتهايمربوط به عملياتينگهداشتننرمافزارپسازتحويل - وجود خطاهاي يافتنشده در زماناجراي واقعي - اعلام شدنخواستههايجديدازسويكاربر (اجتنابناپذير) • مديريت پروژه - حصولاطمينان ازتحويل محصولخواستهشده در موعد مقرر وبا هزينهي اعلام شده - وجودآثار، قابل رويت نبودنوعدم پيوستگي روي مديريت پروژه - وجود نمونههاي متعدد پروژههايشكستخورده (مثال . . . ) - توضيحدرفصلهاي بعدي مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - مستندسازي • مستندسازي، فعاليتي موازيباكليهي مراحل - نيازبهبرنامهيپروژهيا project plan - نياز به برنامهيكيفيت يا quality plan - نياز به مشخصهيخواستهها يا requirements specification - نياز به مستنداتطراحي يا design document - نياز بهبرنامهيآزمون يا test plan - مستندسازي ازباء بسما… تاتاء تمت - انجامبابدترين كيفيتدر اثركمبود وقتدرمراحل پايانيو فشار كاربر - وجود هزينهيبالاي نگهداري نرمافزاردرصورتضعف درمستندسازي - اهميت مستنداتكاربر: بهكارگيري نرمافزار طبقعملكردكاربر مهندسي نرمافزار محمد داورپناه جزي
مراحل ساخت نرمافزار - نتايج كلي • درصد فعاليت در مراحل مختلف، ش 1-3 ص 14 - قانون قديمي 40-20-40 (20% برنامهنويسي) - قانون جديد 25-15-60 (60% تحليل وطراحي،15% برنامهنويسي، 25% آزمون) - بدترينوپرهزينهترين خطاها، خطاهايمرحلهيخواستههاكه درمرحلهينگهداري كشفميشوند - در طول عمر نرمافزار: هزينهينگهداري 50% تا 75% مهندسي نرمافزار محمد داورپناه جزي
1-3 نگهدارييا رشد تدريجي • خطاها در ساخت نرمافزارو ارتباط آنبا نگهداري - وجود خطا بهصورت عادي پسازتحويل ونيازبه رفع آنها - نگهداريبه معني رفع اين خطاهاپساز تحويل • خطاهامشتمل برچهارنوع به شرح زير: - تصحيحي (corrective): خطاهاي يافت شدهدربرنامهها - وفقي (adaptive): وفقدادننرمافزار باتغييرات محيط (سختافزارجديد، ويرايش جديد سيستمعامل يا DBMS - تكميلي (perfective): تطبيق نرمافزار باخواستههاي جديدكاربر (عملهاي جديد، عملكرد بهتر، رابط كاربر جذابتر) - پيشگيرانه (preventative): افزايش قابليت نگهداري سيستمدرآينده (بههنگام سازي مستندات، توضيح نويسيدربرنامه، بهبود واحدمندي) مهندسي نرمافزار محمد داورپناه جزي
نگهداري يا رشد تدريجي (دنباله) • درصدانواع خطا در ش 1-4 ص 15 • اجتنابناپذير بودنتغييرخواستهها • سيستمموفق: - خطاي كمتر - خواستههاي جديد بيشتر - كاربرانراضيتر ودرحالازدياد • سيستمناموفق: - خطاي بيشتر - كاربران ناراضي - نياز به اصلاح بيشتر براي راضي نگهداشتن كاربران جاري • حلقويشدن مسير عمليات ساخت، امكان تكرار هر مرحله در مراحل بعد مهندسي نرمافزار محمد داورپناه جزي
1-4 مرزهاي دانش • پيشرفتهاي وسيعدر 25 سالگذشته، ابداع تكنيكهاوابزارمتعدد • نيازبه پژوهشبيشتر برايحل بحران نرمافزار • پروژههايمهم ملي و بينالملليدرزمينهي SE - STARS: سالي 50 ميليون دلار توسطDoD، ايجادابزارمناسب براي توليد نرمافزار بخشاوليه آنAda - Leonardo: تعداد 60نفر توسطMCC، ابزارگرافيكي براي مراحل اوليهيفرايند - SPC: كنسرسيومسودمندي نرمافزار (كمپانيهاي هوافضا)، ايجادابزارمناسببراي افزايش كيفيتوسودمندي، استفادهي مجدد، نمونهسازي، سيستم هايخبره - ESPRIT: توسطEC، تكنولوژي نرمافزاريكياز 5ناحيه، 84 تا 89معادل 1400 مرد- سال، محيطهاي برنامه نويسي قابل حمل، مشخصههاي رسمي، سيستمهاي اطلاعاتي - Alvey: نمونهيانگليسيESPRIT، تاكيد روي مشخصههاي رسمي، محيطهاي يكپارچهيبرنامهنويسيباهوشمنديازطريق پايگاه دانش مهندسي نرمافزار محمد داورپناه جزي
مرزهاي دانش (دنباله) • بهوجودآمدنمراكز خاص پژوهشي SE • SEI بخشي از STARS: تبيينبرنامههاي آموزشي SE • STC درانگليسوSERC درهلند • نيازبه زمانبرايبهكارگيري نتايجپژوهش در صنعت • ساخت اولين UNIX درسال 1971، استفادهيوسيعازچند سال پيش • پيشنهادات بررسي هزينههاينرمافزاردر سال 1960، شروعكاربرد 1980 • ايجاد پلي بينتئوريو عمل در ساخت نرمافزار براي تسريع روندفوق • دونوعمشكل: ذاتي (مثلپيچيدگي سيستمهايفعلي) و اتفاقي، چون به آنها برنخوردهايموجوددارند (سرعتكم، حافظهيناكافي) • اتفاقيها برطرفشده ولي نياز به حل ذاتيها • عدم وجود روش مشخصيبرايايجادجهشبزرگ در حل مشكل • هدف گرفتنيكمشكل توسط هر روش و هرزمينهي پژوهش • نيازبه تحقيقاتبيشترو كار بسيار زيادبرايحل تدريجي مشكلات ذاتي مهندسي نرمافزار محمد داورپناه جزي