طراحی نرمافزار: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
FreshmanBot (بحث | مشارکتها) جز اصلاح فاصله مجازی + اصلاح نویسه با ویرایشگر خودکار فارسی |
جز ویرایش بهوسیلهٔ ابرابزار: برچسب: متن دارای ویکیمتن نامتناظر |
||
خط ۱:
{{Software development process}}
'''طراحی نرمافزار''' فرایند [[حل مسئله]] و برنامهریزی در راستای ساختن یک [[نرمافزار]] است.
طراحی نرمافزار فرایندی است که توسط آن یک
طراحی نرمافزار معمولاً شامل حل مسئله و
== بررسی اجمالی ==
طراحی نرمافزار فرایند پیشبینی و تعریف راه حلهای نرمافزاری به یک یا تعدادی از مشکلات است. یکی از اجزای اصلی طراحی
تفاوت اصلی بین تجزیه و تحلیل نرمافزار و طراحی نرمافزار این است که خروجی یک تجزیه و تحلیل نرمافزاری از مشکلات کوچکتر برای حل مسئله تشکیل شدهاست. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروههای
طراحی نرمافزار هم یک فرایند و هم یک مدل است. فرایند طراحی یک دنباله ای از مراحل است که طراح را قادر میسازد که تمام جنبههای ساخت نرمافزار را توصیف کند. مهارت خلاقیت، تجربیات گذشته، حس اینکه چه چیزی نرمافزار «خوب» را
* '''فرایند طراحی نباید از
* '''طراحی باید قابل تبدیل به مدلهای تحلیلی باشد.''' از آنجایی که تنها یک عنصر از مدل طراحی اغلب میتواند به تعدادی از نیازها برگردد، لازم است که وسیله ای برای ردیابی نحوه رعایت الزامات مدل طراحی داشته باشیم.
* '''طراحی نباید چرخ را دوباره اختراع کند.
* '''طراحی باید فاصله فکری بین نرمافزار و مشکلی را که به عنوان آن را در دنیای واقعی وجود
* '''طراحی باید یکنواخت و یکپارچه شود.
* '''طراحی باید متناسب با تغییر باشد.'''
* '''طراحی باید طوری ساختاریافته باشد که به راحتی تخریب شود، حتی هنگامی که با دادههای غیرمعمول، حوادث یا شرایط عملیاتی مواجه میشوند.'''
* '''طراحی برنامهنویسی نیست، برنامهنویسی طراحی نیست.
* '''طراحی باید براساس کیفیت درهنگام یه وجود آمدنش ارزیابی شود، نه بعد از تمام شدنش.'''
* '''طراحی باید بررسی شود تا خطاهای مفهومی (معنایی)، به حداقل برسد.
== مفهوم طراحی ==
مفاهیم طراحی ارائه دهنده طراح نرمافزار بر اساسی است که از روشهای
# [[چکیده]]-چکیده فرایند یا نتیجه تعمیم با کاهش محتوای اطلاعاتی یک مفهوم یا یک پدیده قابل مشاهده است، بهطور معمول برای حفظ تنها اطلاعاتی که به یک هدف خاص مرتبط است. در واقع نمایانگر ویژگیهای مهم بدون بیان جزییات است.
# [[اصلاح]]-این روند تکامل است. یک سلسله مراتب به وسیلهٔ تجزیه یک بیانیه ماکروسکوپیک از عملکرد به صورت گام به گام تا رسیدن به اظهارات زبان برنامهنویسی به دست
# پیمانه ایی-معماری نرمافزار به اجزای به نام ماژول تقسیم میشود.
# [[معماری نرمافزار]]-این مورد به ساختار کلی نرمافزار اشاره دارد و راههایی که این ساختار یک سیستم یکپارچه مفهومی را فراهم میکند. معماری نرمافزار خوب با بازدهی خوب، سرمایهگذاری را با توجه به نتیجه مطلوب پروژه، مثلاً از نظر عملکرد، کیفیت، برنامه و هزینه انجام
# سلسله مراتب کنترل-یک ساختار برنامه ای که نشان دهنده سازمان یک جزء برنامه است و یک سلسله مراتب کنترل را نشان میدهد.
# تقسیم سازه-ساختار برنامه را میتوان به صورت افقی و عمودی تقسیم کرد. پارتیشنهای افقی، شاخههای جداگانه سلسله مراتبی ماجولها را برای هر تابع برنامه اصلی تعریف میکنند.
# [[ساختار
# رویکرد نرمافزار-در این مورد تمرکز بر پردازش هر یک از ماژولها به صورت جداگانه است.
# مخفی کردن اطلاعات-ماژولها باید طوری مشخص و طراحی شوند تا اطلاعات موجود در یک ماژول برای ماژولهای دیگری که نیازی به چنین اطلاعاتی ندارند، غیرقابل دسترسی باشد.
Grady Booch در مدل شیء خود،
== ملاحظات طراحی ==
در طراحی یک قطعه نرمافزاری، جنبههای بسیاری وجود دارد. اهمیت هر بررسی باید نشان دهنده اهداف و انتظارات برنامهنویسی برای دیدار باشد. برخی از این جنبهها عبارتند از:
* '''سازگاری'''- نرمافزار قادر به کار با سایر محصولات است که برای قابلیت همکاری با یک محصول دیگر طراحی شدهاند.
* '''توسعه پذیری'''-قابلیتهای جدید میتواند به نرمافزار بدون تغییرات عمده در معماری پایه اضافه شود.
* '''ماجول بودن'''-نرمافزار در نتیجه مستقل از اجزای مستقل است که منجر به بهبود قابلیت نگهداری میشود. سپس اجزاء میتوانند قبل از اینکه یک سیستم نرمافزاری مورد نظر یکپارچه شوند، بهطور انفرادی اجرا و آزمایش شوند که اجازه میدهد تا تقسیم کار در یک پروژه توسعه نرمافزار رخ دهد.
* '''[[تحمل خطا]]'''-نرمافزار مقاوم است و قادر به بازیابی
* '''قابلیت نگهداری'''-اندازهگیری اینکه چگونه رفع اشکالات
* '''قابلیت اطمینان'''(دوام نرمافزار)- نرمافزار قادر به انجام یک تابع مورد نیاز در شرایط مشخص شده برای یک دوره مشخص از زمان است.
* '''قابل استفاده مجدد'''-توانایی استفاده از برخی یا تمام جنبههای نرمافزار پیشین در پروژههای دیگر با اصلاحات کمی و بدون تغییر.
* '''نیرومندی'''-این نرمافزار قادر به اجرا تحت فشار است
* '''[[امنیت]]'''-این نرمافزار قادر به مقاومت در برابر اقدامات خصمانه است.
* '''قابلیت استفاده'''-نرمافزار [[رابط کاربر]] باید برای کاربر و مخاطب هدف مورد استفاده قرار گیرد. مقادیر پیش فرض برای پارامترها باید انتخاب شوند به طوری که برای اکثریت کاربران انتخاب خوبی باشد.
سطر ۴۷ ⟵ ۴۸:
* '''قابل حمل بودن'''-نرمافزار باید در شرایط مختلف و محیطهای مختلف قابل استفاده باشد.
* '''[[مقیاس پذیری]]'''- نرمافزار به خوبی به افزایش دادهها یا تعداد کاربران کمک میکند.
== زبان
زبان مدلسازی یک زبان مصنوعی است که میتواند برای بیان اطلاعات، دانش یا سیستمها در یک ساختار تعریف شده توسط مجموعه ای از قوانین ثابت استفاده شود. این قوانین برای تفسیر اجزای موجود در ساختار استفاده میشوند. زبان مدلسازی میتواند گرافیکی یا متنی باشد. نمونههایی از زبانهای مدلسازی گرافیکی برای طراحی نرمافزار عبارتند از:
* [[زبان توصیف معماری]] (ADL) زبان مورد استفاده برای توصیف و نمایندگی [[معماری نرمافزار]] یک سیستم نرمافزاری است.
* نشانه گذاری مدلسازی فرایند کسب و کار (BPMN) نمونه ای از زبان مدلسازی پردازش است.
* EXPRESS
* زبان مدلسازی سازمانی توسعه یافته (EEML) است معمولاً برای مدلسازی فرایند کسب و کار در لایههای زیادی استفاده میشود.
* [[فلوچارت]] نمایش شماتیک از الگوریتم یا فرایند محاسبات است.
* مفاهیم اساسی مدلسازی (FMC) زبان مدلسازی برای سیستم فشرده نرمافزار است.
* IDEF خانواده ایی از
(Service-oriented modeling framework (SOMF
== الگوهای طراحی ==
طراح نرمافزار یا معمار ممکن است به مشکلی برخورد کنند که قبلاً توسط افراد دیگری دید شده و حل شدهاستیک تمپلیت یا الگو که راه حل این مشکل مشترک شناخته را توضیح
.<ref>{{cite web
| url = http://msdn.microsoft.com/en-us/vstudio/ff729657
سطر ۶۷ ⟵ ۷۰:
| accessdate = 2012-05-15
}}</ref>
== استفاده ==
سند طراحی نرمافزار ممکن است مورد بررسی قرارگیرد و اجازه میدهد محدودیتها و مشخصات و حتی نیازهای قبل از [[
== جستارهای وابسته ==
|