پرش به محتوا

نمونه سوالات مهندسی نرم افزار با پاسخ تشریحی

  • از

سوالات مهندسی نرم افزار

دانلود فایل

 

 

 

استخدامی علمی کاربردی دانشگاه پیام نور کارشناسی ارشد پرسمن

 

 

 

اصلاح گام به گام، یک استراتژی طراحی از بالا به پایین است که در ابتدا ‌‌()، ‌()، () “()” –()، () : “‌[طرح] ” “”

“‌: ”
: : :
(“” )
: ؟
: ‌: : ‌: : (): ً : : ‌: : ً “” ” : ‌: : : ً نمونه سوالات

–(). ً ؛ ()، ‌‌:
: ‌()، (-)، ‌: (-) () : (-)، ً -: ()، داشته باشد. این محدودیت ، که قانون دمیتر نامیده می شود، بیان می کند که یک روش، تنها باید به روش های طبقات مجاور، پیام ارسال کند.

“خانه‌ی امن: اصلاح یک طبقه تجزیه و تحلیل، به یک طبقه طراحی”
صحنه: اتاقک اد، همزمان با شروع مدل سازی طراحی.
گفتگوکنندگان: وینود و اد، اعضای
تیم مهندسی نرم افزار SafeHome.
مکالمه:
[اد روی طبقه FloorPlan کار می کند (مبحث فرعی در بخش 3-3-8 و تصویر 4-8 را ببینید) و آن را برای مدل طراحی اصلاح کرده است.]
اد: خب، طبقه FloorPlan رو یادتونه، درسته؟ از این طبقه، به عنوان بخشی از نظارت و عملکردهای مدیریت خانه استفاده میشه.
وینود (سر تکان می دهد): درسته، فکر می کنم یادمه که ازش به عنوان بخشی از بحث CRC برای مدیریت خانه استفاده کردیم.
اد: درسته، در هر صورت، دارم برای طراحی اصلاحش می کنم.می خوام نحوه پیاده سازی طبقه FloorPlan رو نشون بدم.به نظرم بهتره تحت عنوان مجموعه‌ای از فهرست های پیوندی [یک ساختار داده خاص]،
اجراش کنیم. بنابراین باید طبقه تحلیل FloorPlan (تصویر 4-8) رو اصلاح کنم و به نوعی تسهیلش کنم.
وینود: طبقه تجطیه و تحلیل، فقط مسائل مربوط به فضای مشکل رو ارائه کرد، خب در واقع، ؟
: ()، ()،
: (-)
: ؛ (): : -()، ()،  

+

 

 

-‌‌؛ ً () –()، ‌:
: ‌: ()، : ً : () : داخلی آن، جامعیت ساختار داده های آن، و نحوه طراحی معماری آن، یک طراحی رابط ضعیف، اغلب منجر به
ایجاد تصوری “بد” از نرم افزار می شود.
اصل 6: طراحی اجزاء باید از نظر عملکرد، مستقل باشد. استقلال عملکردی، معیاری برای “تمرکز فکری” اجزاء یک نرم افزار است. عملکردی که توسط هر جزء ارائه می شود، باید منسجم باشد؛ یعنی باید روی یک و تنها یک عملکرد متمرکز شود.
اصل 7: اجزاء باید کمابیش و به صورت ناپایدار، به یکدیگر و به محیط خارجی متصل شوند. این اتصال، به طرق مختلف انجام می شود؛ از طریق رابط اجزاء،
پیام رسانی و داده های سراسری. با افزایش سطح اتصال، احتمال انتشار خطا نیز افزایش می یابد و قابلیت نگهداری کلی نرم افزار
کاهش می دهد. بنابراین ، اتصال اجزاء باید تا حد معقول، پایین نگه داشته شود.
اصل 8: طرح های نمایشی (مدل ها) باید به راحتی جزوه مهندسی نرم افزار درک باشند. هدف از طراحی این است که اطلاعات را به کارشناسان تولید کننده کد، آزمایش کنندگان نرم افزار و افراد دیگری که ممکن است در حفظ برنامه نقش داشته باشند، انتقال دهد. اگر درک طراحی دشوار باشد، طرح موردنظر، به عنوان یک رسانه ارتباطی مؤثر عمل نخواهد کرد.
اصل 9: طرح، باید به صورت تکرارشونده، توسعه یابد. با هر تکرار، طراح باید برای سادگی بیشتر تلاش کند. تقریباً مانند تمام فعالیت های سازنده، طراحی نیز به صورت تکرارشونده اتفاق می افتد. اولین تکرارها باعث اصلاح طرح و خطاهای آن می شوند اما در تکرارهای بعدی، تلاش می شود تا طراحی، تا حد امکان، ساده‌تر شود.
اصل 10: ایجاد یک مدل طراحی، مانع رویکرد ماهرانه نمی شود. برخی از طرفداران توسعه ماهرانه نرم افزار (فصل 3)، اصرار دارند که این کد، تنها سند طراحی مورد نیاز است. با این حال، هدف از یک مدل طراحی، کمک به افرادی است که مسئول حفظ و تکامل سیستم هستند. درک هدف بالاتر یک قطعه کد یا تعاملات آن با سایر ماژول ها در محیط زمان اجرا چند ریسه ای مدرن، بسیار دشوار است.
مستندات طراحی ماهرانه، باید با طراحی و توسعه هماهنگ باشد، به طوری که در پایان پروژه، طرح در سطحی مستند شود که کد، قابل درک و نگهداری باشد. مدل طراحی بسیار کمک کننده است؛ زیرا در سطحی از انتزاع ایجاد می شود که جزئیات فنی غیر ضروری در آن وجود ندارد و ارتباط زیادی با مفاهیم و الزامات برنامه دارد. اطلاعات طراحی مکمل، می تواند منطق طراحی را که شامل توضیحات مربوط به جایگزین های طراحی معماری است، رد کند.

سوالات نرم افزار

سوالات نرم افزار

2-4-9 اجزای طراحی داده
مانند سایر فعالیت های مهندسی نرم افزار، طراحی داده ها (گاهی اوقات به عنوان معماری داده نیز نامیده می شود) نیز یک مدل از داده ها و/یا اطلاعات ایجاد می کند که در بالاترین سطح انتزاع(دیدگاه مشتری یا کاربر از داده ها)، نمایش داده می شود. سپس این مدل داده، اصلاح شده و به نماهای اجرایی در حال تکاملی تبدیل می شود که می تواند توسط سیستم های مبتنی بر رایانه، پردازش شود. در بسیاری از نرم افزارهای کاربردی، معماری داده ها تأثیر عمیقی بر معماری نرم افزار پردازنده آن دارد. ساختار داده ها همیشه بخش مهمی از طراحی نرم افزار بوده است. در سطح اجزاء برنامه، طراحی ساختارهای داده و الگوریتم های مرتبط لازم برای دستکاری آن‌ها، برای ایجاد برنامه های با کیفیت بالا، ضروری است. در سطح کاربرد، ترجمه یک مدل داده (به عنوان بخشی از مهندسی الزامات) به یک پایگاه داده، برای دستیابی به اهداف تجاری مهم است. در سطح تجاری، جمع آوری اطلاعات ذخیره شده در پایگاه های اطلاعاتی متفاوت و سازماندهی مجدد آن به “انبار داده”، امکان استخراج داده یا اطلاعات مؤثر بر موفقیت کسب و کار را فراهم می کند. در هر مور ،
طراحی داده ها نقش مهمی ایفا می کند. در مورد طراحی داده ها، جزئیات بیشتری در فصل 10 مطرح شده است.

3-4-9 عناصر طراحی معماری
طراحی معماری نرم افزار معادل نقشه ساختمان یک خانه است. نقشه ساختمان، طرح کلی اتاق ها را به تصویر می کشد؛ اندازه، شکل و رابطه آن‌ها با یکدیگر، و درها و پنجره هایی که به نمونه سوالات مهندسی نرم افزار و خارج اتاق ها باز می شوند را نشان می دهد نقشه طبقه نمای کلی خانه را نشان می دهد. طراحی معماری عناصر، یک دید کلی از نرم افزار ارائه می دهد. مدل معماری از سه منبع مشتق شده است: (1) اطلاعات مربوط به حوزه کاربردی نرم افزار در حال ساخت، (2) عناصر مشخصی از مدل الزامات، مانند موارد کاربری یا طبقات تجزیه و تحلیل، روابط و همکاری‌های آن‌ها برای مشکل موجود، و (3) در دسترس بودن سبک های معماری (فصل 10) و الگوها (فصل 14). عنصر طراحی معماری، معمولاً به عنوان مجموعه ای از زیر سیستم های به هم پیوسته به تصویر کشیده می شود که اغلب از بسته های تجزیه و تحلیل در مدل الزامات به دست می آید. هر زیر سیستم می تواند معماری خاص خود را داشته باشد (به عنوان مثال، یک رابط کاربری گرافیکی ممکن است با توجه به سبک معماری قبلی موجود برای رابط های کاربری، ساختار یافته باشد). در فصل 10، تکنیکی برای استخراج عناصر خاص مدل معماری ارائه شده است.

4-4-9 عناصر طراحی رابط
طراحی رابط کاربری نرم افزار، مشابه مجموعه ای از نقشه های دقیق (و مشخصات) برای دره ، پنجره ها و امکانات خارجی یک خانه است. نقشه های (و مشخصات) دقیق درها، پنجره ها و ابزارهای جانبی بیرونی، چگونگی جریان اشیاء و اطلاعات به داخل و خارج از خانه و در اتاق هایی که بخشی از نقشه ساختمان هستند را نشان می دهد. عناصر طراحی رابط برای نرم افزار، جریان اطلاعات به داخل و خارج از یک سیستم و نحوه ارتباط آن بین اجزایی که به عنوان بخشی از معماری تعریف شده‌اند را نشان می دهد. سه عنصر مهم در طراحی رابط وجود دارد: (1) رابط کاربری (UI)؛ (2) رابط های خارجی؛ به سایر سیستم ها، دستگاه ها، شبکه ها یا سایر تولید کنندگان یا مصرف کنندگان اطلاعات؛ و (3) رابط های داخلی بین اجزای مختلف طراحی. این عناصر طراحی رابط، به نرم افزار اجازه می دهد تا ارتباط خارجی داشته باشد و ارتباطات داخلی و همکاری بین اجزای اشغال کننده معماری نرم افزار را تسهیل می کنند. طراحی UI (که معمولاً UX یا طراحی تجربه کاربر نامیده می شود)، یک اقدام مهندسی نرم افزار اصلی است و به تفصیل در فصل 12 مورد بررسی قرار گرفته است. طراحی UX، بر اطمینان از قابلیت استفاده از طراحی UI تمرکز می کند. یک طراحی قابل استفاده، شامل عناصر ظریفی که با دقت انتخاب شده‌اند (به عنوان مثال، طرح، رنگ، گرافیک، طرح بندی اطلاعات)، عناصر ارگونومیک (به عنوان مثال، ساز و کارهای های تعامل، استقرار اطلاعات، استعاره ها، جهت یابی UI) و عناصر فنی (به عنوان مثال، الگوهای UX، اجزای قابل استفاده مجدد) می باشد. به طور کلی، UI، یک زیر سیستم منحصر به فرد در معماری کلی برنامه است که برای ارائه تجربه نهایی رضایت بخش به کاربر نهایی طراحی شده است. طراحی رابط های خارجی نیاز به اطلاعات قطعی در مورد ورودی دارد که اطلاعات، به آن ارسال یا از آن، دریافت می شود. در هر صورت، این اطلاعات باید در طول مهندسی الزامات (فصل 7) جمع آوری شده و همزمان با آغاز طراحی رابط، یکبار رابط، تأیید شود.در طراحی رابط های خارجی، باید بررسی خطا و ویژگی های امنیتی مناسب را در نظر گرفت. طراحی رابط های داخلی با طراحی اجزا (فصل 11) سازگار است.

تصویر 5-9
تحقق طراحی طبقات تجزیه و تحلیل، نشان دهنده تمام عملیات و طرح های پیام رسانی است که برای برقراری ارتباط و همکاری بین عملیات های طبقات مختلف، لازم است. هر پیام باید طوری طراحی شود که انتقال اطلاعات لازم و الزامات عملکردی خاص عملیات مورد نظر را در بر گیرد. در برخی موارد، یک رابط، تقریباً شبیه یک طبقه، مدل سازی می شود. رابط، مجموعه ای از عملیات‌هایی است که بخشی از کارکرد یک طبقه را توصیف می کند و دسترسی به این عملیات را فراهم می کند. به عنوان مثال ، عملکرد امنیتی SafeHome، از صفحه کنترلی استفاده می کند که به صاحب خانه اجازه می دهد تا ویژگی های خاصی از عملکرد امنیتی را کنترل کند. در یک نسخه پیشرفته از سیستم، عملکردهای صفحه کنترل ممکن است از طریق یک سیستم عامل تلفن همراه (به عنوان مثال، تلفن هوشمند یا رایانه لوحی)، اجرا شود و این موضوع، در تصویر 5-9 نشان داده شده است.

5-4-9 عناصر طراحی اجزاء
طراحی اجزاء برای نرم افزار، معادل مجموعه ای از نقشه های دقیق (و مشخصات) برای هر اتاق در یک خانه است. این نقشه ها، سیم کشی و لوله کشی داخل هر اتاق، محل پریزهای برقی و کلیدهای دیواری، شیرها، سینک ها، دوش ها، وان ها، فاضلاب ها، کابینت ها و کمد ها و سایر جزئیات مربوط به یک اتاق را نشان می دهند. طراحی اجزاء برای نرم افزار، به طور کامل جزئیات داخلی هر جزء نرم افزاری را توصیف می کند. برای این کار، طراحی اجزاء، ساختار داده ها را برای همه اشیاء داده داخلی و جزئیات الگوریتمی مربوط به همه پردازش های موجود در یک جزء را تعریف می کند و رابطی را فراهم می کند که امکان دسترسی به تمام عملیات‌های (کارکردهای) جزء موردنظر را می دهد.
تصویر 6-9
مطابق تصویر 6-9، در زمینه مهندسی نرم افزار شیء گرا، هر جزء، به شکل نمودار UML نشان داده می شود. در این تصویر، یک جزء به نام SensorManagement (بخشی از عملکرد امنیتی SafeHome)، نشان داده شده است. یک پیکان به صورت خط چین، جزء موردنظر را به طبقه‌ای با نام Sensor که به آن اختصاص داده شده، متصل می کند. جزء SensorManagement تمام عملکردهای مرتبط با سنسورهای SafeHome از جمله نظارت و پیکربندی آن‌ها را انجام می دهد. بحث بیشتر در مورد طراحی اجزاء، در فصل 11 ارائه شده است. جزئیات طراحی یک جزء را می توان در بسیاری از سطوح مختلف انتزاع، مدل سازی کرد. برای نمایش منطق پردازش، می توان ( ) ()، ً –( )، ( ). -(: تلفن همراه). زیر سیستم های (قابلیت های) موجود در هر عنصر محاسباتی، نشان داده شده است. به عنوان مثال ، رایانه شخصی دارای زیرسیستم هایی است که امنیت، نظارت، مدیریت خانه و قابلیت های ارتباطات را پیاده سازی می کند. علاوه بر این، یک زیر سیستم با دسترسی خارجی نیز طراحی شده است که تمام تلاش های انجام شده برای دسترسی به سیستم SafeHome از یک منبع خارجی را مدیریت می کند. هر زیر سیستم، برای نشان دادن اجزایی که پیاده سازی می کند، ایجاد می شود. نمودار نشان داده شده در تصویر 7-9، به صورت توصیف کننده است. این بدان معناست که نمودار استقرار، محیط محاسبات را نشان می دهد، اما به صراحت جزئیات پیکربندی را نشان نمی دهد. به عنوان مثال، مشخصات بیشتری در مورد “رایانه شخصی” ارائه نشده است و این رایانه، می تواند یک مک، یک رایانه مبتنی بر ویندوز، یک جعبه Linux، یا یک پلتفرم تلفن همراه، با سیستم عامل مرتبط با آن باشد. این جزئیات، هنگام اصلاح نمودار استقرار به عنوان نمونه، در مراحل آخر طراحی یا همزمان با شروع ساخت و ساز، مورد بررسی قرار می گیرد. هر نمونه از استقرار (یک پیکربندی سخت افزاری مشخص و شناخته شده)، شناسایی می شود.
تصویر –“” ؛ ؛ ؛ ؛ ؛ ؛ ؛ ؛ ‌؛ () -“” ؟ ؟
-()، ؟

–“”، ؟ ‌()، ؟
-‌-؟ -‌”” : () ً () () -؟ ؟
-: – شده است که در آن، به کمک اطلاعات موردنیاز، نمایی از داده ها و ساختار برنامه، ویژگی های رابط و جزئیات رویه ای، ارائه می شود. همان طور که در فصل 9 اشاره کردیم، طراحی، مبتنی بر اطلاعات است. روش های طراحی نرم افزار، حاصل بررسی هر یک از سه حوزه مدل تجزیه و تحلیل، می باشد. تصمیم گیری های انجام شده حین بررسی داده ها، حوزه های عملکردی و کارکردی، راهنمای ایجاد طراحی معماری نرم افزار خواهند بود.

نگاهی سریع
طراحی معماری، چیست؟ طراحی معماری نشان دهنده ساختار داده ها و اجزای برنامه است که برای ایجاد یک سیستم ؟ “” ؟ ؟ ؛ ‌؛