730 likes | 930 Views
كارگاه آموزشي معماري نرمافزار www.esoa.ir. دكتر فريدون شمس سيد شروين استادزاده. جلسه اول. فهرست مطالب. يك مثال: عمارت وينچستر مقدمهای بر معماری معماري نرمافزار چيست؟ چرخه کاری معماری ساختارها و ديدها صفات کيفيتی. يك مثال: عمارت وينچستر. نمونهاي از عدم معماري.
E N D
كارگاه آموزشي معماري نرمافزارwww.esoa.ir دكتر فريدون شمس سيد شروين استادزاده جلسه اول
فهرست مطالب • يك مثال: عمارت وينچستر • مقدمهای بر معماری • معماري نرمافزار چيست؟ • چرخه کاری معماری • ساختارها و ديدها • صفات کيفيتی
يك مثال: عمارت وينچستر نمونهاي از عدم معماري
هزينه ساخت = 5/5 ميليون دلار مدت ساخت = 38 سال (از 1884 تا 1922) تعداد اطاقها = 160 تعداد طبقات = 2 تعداد راه پلهها = 40 تعداد آسانسور = 3 تعداد دربها = 467 تعداد پنجرهها = 1257 (10000 قطعه شيشه) تعداد بخاري = 47 تعداد دودكش = 17 سيستم گرمايي = كانال بخار، هواي گرم، بخاري تعداد دربهايي كه به جايي باز نميشود = 950 يك مثال: عمارت وينچستر
يك واقعيت اگر سازههاي بلوكي و زيرساختهاي اكثر سيستمهاي نرمافزاري امروزي را با معادلهاي آنها در ساختمان جايگزين كنيم به عمارتهايي نظير عمارت وينچستر خواهيم رسيد. عمارتهايي كه هر چند هزينه و زمان زيادي صرف ساخت آنها شده است، ولي چون بر اساس معماري مشخصي بنا نشدهاند، اثربخشي لازم را ندارند.
عدم وجود يك راهبرد مشخص نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول حضور نسلهاي مختلفي از سبكها و سيستمها نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول حضور نسلهاي مختلفي از سبكها و سيستمها غير قابل توسعه نکاتی درباره عمارت وينچستر
معماري چيست؟ معماري يعني ارايه توصيفي فني از يك سيستم كه نشان دهنده ساختار اجزاء آن، ارتباط بين آنها، و اصول و قواعد حاكم بر طراحي آن، و تكامل آنها در گذر زمان باشد.
مفاهيم اوليه مقدمهاي بر معماري نرمافزار
ساخت يك لانه سگ • ميتواند توسط يك نفر ساخته شود. • نيازمنديها: • كمترين مدلسازي • فرآيند ساخت ساده • ابزارهاي ساده
ساخت يك خانه • ميتواند توسط يك تيم ساخته شود. • نيازمنديها: • مدلسازي • فرآيندهاي خوش ساخت • ابزارهاي قدرتمند
ابعاد بزرگ چه زمانی معماری لازم است؟
ابعاد بزرگ پيچيدگی زياد چه زمانی معماری لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص چه زماني معماري لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص طول عمر زياد چه زماني معماري لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص طول عمر زياد انعطاف پذيری در برابر تغييرات چه زماني معماري لازم است؟
مفاهيم اوليه معماري نرمافزار چيست؟
تعريف معماري • معماري يعني • هنر يا علم ساخت هر نوع عمارت كه مورد استفاده بشر قرار گيرد. • عمل يا فرآيند ساخت • كار وابسته به معماري؛ ساختار، ساخت و ساز • ساختمان يا ساختار عمومي • سازمان كلي و ساختار مفهومي يك كامپيوتر يا يك سيستم كامپيوتري از ديد استفاده يا طراحي آن؛ يك عينيت بخش از آن - به نقل از فرهنگنامه آكسفورد
تعريف معماري (ادامه) • معماري نرمافزار كاري است كه معماران نرمافزار انجام ميدهند. - Beck
تعريف معماري (ادامه) • يك مجموعه از عناصر معماري (يا طراحي) كه داراي يك شكل مشخص باشند. - Perry and Wolf, 1992. • يك معماري سيستم نرمافزار تشكيل شده از ... • مجموعهاي از مولفهها، ارتباطات، و قيدهاي نرمافزاري و سيستمي • مجموعهاي از نيازمنديهاي ذينفعان سيستم • اصولي كه نشان دهد اين مولفهها، ارتباطات، و قيدها، سيستمي را تعريف ميكند كه نيازمنديهاي سهامداران را برآورده ميسازد. - Boehm et al., 1995.
تعريف معماري (ادامه) • معماري نرمافزار يك برنامه يا يك سيستم محاسباتي ساختار يا ساختارهايي از سيستم است كه عناصر نرمافزاري، خصوصيات قابل مشاهده از بيرون آن عناصر، و ارتباطات بين آنها را شامل ميشود. - Clements et al., 1997.
تعريف معماري (ادامه) بخشهاي مشترك در تعريف معماري • معماري مولفههاي اصلي را نشان ميدهد. • معماري ارتباطات (ساختارهاي) مولفهها و تعامل بين آنها را نشان ميدهد. • معماري اطلاعات محتوايي درباره مولفهها را كه مربوط به تعامل آنها نباشد، حذف ميكند. • رفتار مولفهها بخشي از معماري است. • هر سيستمي داراي يك معماري است، حتي اگر تنها از يك مولفه تشكيل شده باشد. • معماري اصول پشت پرده هر مولفه و ساختار را بيان ميكند. • تعاريف معماري نميگويند يك مولفه چيست؟ • معماري يك ساختار منفرد نيست. هيچ ساختار منفردي نيز معماري نيست.
تعريف معماري (ادامه) • معماري نرمافزار با موارد زير نيز سروكار دارد : • وظيفهمندي • قابليت استفاده • قابليت استفاده مجدد • پايداري • قابليت درك • قيدها و محدوديتهاي فنآوري و اقتصادي • زيبايي شناسي
معماري، طراحي، و پيادهسازي • معماري مفاد طراحي و پيادهسازي را مشخص ميكند. Analysis Architecture Design Implementation CODE
مثالي از معماري آيا اين نمودار يك معماري است؟ Control Card Interface Cash Dispenser Keyboard Interface
مثالي از معماري چه نكات مبهمي در نمودار قبل وجود داشت؟ • ماهيت عناصر (فرآيند، كلاس، شيء، واحد، وظيفه، پردازنده، ...) • مسووليت عناصر • نوع ارتباطات (فراخواني، درخواست، بكارگيري، سيگنال، ارسال داده، كنترل، زيركلاس، ...) • مفهوم طرحبندي • عمليات زمان اجراي سيستم
مثالي از معماري چه بخشهايي در نمودار قبل جا مانده است؟ • ماهيت هر يك از عناصر چيست؟ • مسووليت هر يك از عناصر چيست؟ • مفهوم هر يك از ارتباطات چيست؟ • مفهوم هر يك از طرحبنديها چيست؟ • جز در مواقعي كه ما دقيقاً بدانيم هر عنصر چيست و چگونه با ديگر عناصر همكاري دارد تا يك وظيفه سيستم انجام شود، نمودار قبلي هيچ استفادهاي ندارد.
نظراتي درباره معماري • معماري تنها بر روي كاغذ است. • معماري همان طراحي است. • معماري همان زيرساخت است. • معماري همان ساختار است. • فنآوري مورد علاقه من يك معماري است. • معماري نتيجه كار تنها يك معمار است. • معماري ميتواند توسط يك نوع خروجي نمايش داده شود (تك ديدي است). • معماري سختافزار مقدم بر معماري نرمافزار است. • معماري قابل ارزشيابي و يا اعتبارسنجي نيست. • معماري يك علم است. • معماري يك هنر است.
چرخه كاري معماري چه مواردي بر معماري تاثير ميگذارند؟ چه مواردي از معماري تاثير ميگيرند؟
مشتريان و كاربران نهايي • نيازمنديها (+ صفات كيفيتي مثل كارايي، قابليت نگهداشت، ...) • محدوديتهاي بودجهاي • محدوديتهاي زماني • رعايت قواعد خاص سازمان مثل رعايت يك فنآوري خاص
سازمان توسعه • موارد كاري • سرمايهگذاري و استهلاك زيرساختها • كاهش هزينهها • ساده بودن پيادهسازي • موارد سازماني • استفاده از ساختار سازماني موجود • استفاده بهينه از كارمندان
محيط فنآوري • گرايش غالب امروزي (مثلاً نرمافزارها تحت وب باشد) • فنآوري موجود (مثلاً تصميم در استفاده از يك سيستم متمركز يا توزيعشده بستگي به هزينه پردازندهها و سرعت خطوط ارتباطي دارد)
پيش زمينه معمار • معماران كارشان را با توجه به مجموعه تجربيات گذشتهشان انجام ميدهند. • تجربه موفق باعث تكرار آن در معماري جديد ميشود. • تجربه ناموفق باعث عدم استفاده از آن در معماري جديد ميشود.
معماري بر روي سازمان توسعه تاثير دارد • ساختار و منابع سازماني • واحدهاي كاري • زمانبندي • بودجه • اهداف سازماني • تخصص در زمينه ساخت يك نوع از سيستمها • موفقيت در بازار • ارزيابي بازار • داراييهاي خط توليد
معماري بر روي نيازهاي مشتريان تاثير دارد • دانش مشتريان • ارتقاء سيستم، انطباق پذيري، ...
معماري بر روي تجربه معمار و محيط فنآوري تاثير دارد • ساخت يك سيستم بر روي تجربه معمار تاثير خواهد داشت. • معمولاً، يك سيستم يا يك معماري بر روي محيط فنآوري تاثير دارد.
فعاليتهای چرخه كاري معماري • ايجاد يک مورد کاری برای سيستم • فهم نيازمنديها • ايجاد يا انتخاب معماری • تعامل با معماری • تحليل يا ارزيابی معماری • پياده سازی بر مبنای معماری • حصول اطمينان از انطباق محصول با معماری
تعريف • ساختار يك مجموعه از عناصر همگن به همراه ارتباط بين آنها است. براي هر ساختار ميتوان موارد زير را مشخص كرد. • نوع عناصر • نوع ارتباطات • مجموعهاي از قيدهاي نحوي • معني نمودار • اصول، قواعد، و راهبردها • براي چه هدفي قابل استفاده است؟ • ديد نمايشي از معماري نرمافزار بر پايه يك ساختار است كه توسط معمار ترسيم شده و دينفعان آن را ميخوانند. (نمونهاي از يك ساختار) • معماري نرمافزار توسط تعدادي ديد مستند ميشود.
چارچوب مفهومي معماري (IEEE Std. 1471-2000) ماموريت انجام مي دهد 1..* دارد يك تاثير دارد بر محيط سيستم معماري قرار دارد در توصيف مي شود با 1..* دارد 1..* تعيين هويت مي كند 1..* حمايت مي كند مهم است براي 1..* توصيف معماري عقلانيت (منطق) صاحب نقش - ذينفع مشخص مي كند 1..* شركت مي كند در دارد 1..* انتخاب مي كند 1..* سازمان مي يابد با 1..* تبيين مي كند 1..* مطابق دغدغه ديدگاه ديد استفاده مي شود تا پوشش دهد 1..* شركت مي كند در 1..* انتخاب مي شود از 0 .. 1 جمع شده 1..* شامل 1..* كتابخانه ديدگاه روشي را براي تبيين ايجاد مي كند مدل
طبقهبندي ساختارها • ساختارهاي ماژول (Module) • ساختارهاي مولفه و اتصال (Component & Connector) • ساختارهاي تخصيص (Allocation) اين طبقه بندی ها متعامد هستند.