مفاهیم و اهداف طراحی نرم افزار

طراحی ‌نرم افزار، فرآیند پیش‌بینی و توضیح راهکارهای نرم‌افزاری در پاسخ‌گویی به یک یا چندین مشکل و نیاز است.

باتوجه به اهمیت نقش و جایگاه استفاده از سیستم‌های کامپیوتری و فناوری‌های تلفن همراه و افزایش استفاده از آن‌ها در فعالیت‌های حرفه‌ای و زندگی روزمره، می‌توان به جایگاه استفاده از انواع نرم‌افزارها نیز پی برد. در این راستا، طراحی و تولید نرم‌افزار که توسط مهندسین نرم‌افزار و برنامه‌نویس‌ها انجام می‌شود نیز از توجه بالایی برخوردار است. در تعریف طراحی ‌نرم افزار می‌توان به فرآیندی که در آن به پیش‌بینی و توضییح راهکارهای نرم‌افزاری در پاسخ‌گویی به یک یا چندین مشکل و نیاز اشاره کرد. در این مقاله سعی داریم به معرفی حوزه طراحی و تولید نرم‌افزار، مفاهیم و اهداف مربوط به آن بپردازیم.

 

 

معرفی فرایند طراحی ‌نرم افزار

 

طراحی، مدل و نمایشی از نرم‌افزار را ایجاد می‌کند. فرآیندی که به‌واسطه آن به تمام نیازهای کاربر پاسخ داده شده و به این شکل، این نیازها به نرم‌افزار قابل استفاده تبدیل می‌شود. همچنین این فرآیند به برنامه‌نویس در زمینه برنامه‌نویسی و تسریع عملیات پیاده‌سازی کمک می‌کند. این مرحله، از مراحل ابتدایی تولید نرم‌افزار است و طبق آن، سند طراحی براساس نیازهای مشتری که در سند SRS ثبت شده است، تولید می‌شود.

 

موارد مهم قابل توجه در طراحی ‌نرم افزار

 

  • وجود نیاز به ماژول‌های مختلف
  • توجه به کنترل روابط بین ماژول‌ها
  • توجه به روابط بین ماژول‌های مختلف
  • توجه به ساختار داده در بین ماژول‌های مختلف
  • توجه به الگوریتم‌های موردنیاز برای پیاده‌سازی در بین ماژول‌های فردی

 

اهداف طراحی ‌نرم افزار

 

در این مسیر بنیادی و تاثیرگذار، باید به یکسری اهداف مهم که در رسیدن هرچه بهتر به محصول نهایی بسیار کمک کننده است، توجه داشت. این اهداف کیفیت محصول نهایی، تسریع در روند کار، عدم نیاز به بازنویسی‌های مجدد و تمرکز بهتر بر تامین نیازها را تامین و تضمین می‌کنند. در ادامه به توضیح مختصری از این اهداف می‌پردازیم.

درستی: یک طراحی خوب باید صحیح باشد یعنی تمام عملکردهای سیستم را به درستی پیاده‌سازی کند.

بهره وری: یک طراحی ‌نرم افزار خوب باید منابع، زمان و مسائل مربوط به بهینه‌سازی هزینه را مدیریت و برطرف کند.

قابل فهم بودن: یک طراحی خوب باید به‌راحتی قابل درک باشد، برای آن باید مدولار باشد و همه ماژول‌ها در لایه‌ها مرتب شده باشند.

کامل بودن: طراحی باید دارای تمام اجزاء مانند ساختار داده، ماژول‌ها، رابط‌های خارجی و... باشد.

انعطاف‌پذیری: یک طراحی نرم‌افزاری خوب باید به‌راحتی قابل تغییر باشد، به‌گونه‌ای که هر زمان مشتری درخواست تغییر یک یا چند قسمت و یا افزودن برخی آیتم‌ها را داشت، به‌راحتی امکان‌پذیر باشد.

 

مفاهیم طراحی ‌نرم افزار

 

مفاهیم به‌عنوان یک ایده یا اختراع اصلی تعریف می‌شود که برای درک چیزی به ذهن یا فکر ما می‌آید. مفهوم طراحی نرم‌افزار به‌سادگی به‌معنای ایده، نیاز یا فکر پشت هر طرح است. این برنامه نحوه برنامه‌ریزی شما برای حل مشکل و همچنین منطق یا تفکر پشت نحوه طراحی نرم‌افزار را مشخص می‌کند. این روش به مهندس نرم‌افزار امکان می‌دهد تا مدل و طرح محصول موردنظر را بسازد. مفهوم طراحی ‌نرم افزار یک ساختار یا مدل پشتیبان برای توسعه نرم‌افزارها ارائه می‌دهد. مفاهیم زیادی در زمینه طراحی نرم‌افزار وجود دارد که به برخی از آن‌ها اشاره می‌کنیم.

 

انتزاع: مفهموم انتزاع در طراحی نرم‌افزار دارای سطوح مختلفی‌ست که در بالاترین سطح آن، مفاهیم به‌صورت عبارت‌های کلان و کلی بیان می‌شوند. ارائه توضیحات و توصیف‌های مشروح و جزئی‌تر از راهکارها، انتزاع در پایین‌ترین سطح را به‌نمایش می‌گذارد. در کنار این موارد، دو سطح دیگر از انتزاع وجود دارد که به آن اشاره می‌کنیم.

انتزاع داده‌ای: شامل مجموعه‌ای از اطلاعات و داده‌هاست که دارای نام مشخصی بوده و شی داده‌ای موردنظر را توصیف می‌کنند.

انتزاع فرآیندی: شامل دستورالعمل‌هایی با وظایف محدود و مشخص است.

معماری: به ساختار کلی نرم‌افزار و روش‌های مربوط به ایجاد ساختار مفهومی سیستم، معماری نرم‌افزار می‌گویند. ایجاد نمای معماری از سیستم موردنظر، چارچوب عملی ایجاد می‌کند که به‌وسیله آـن می‌توان فعالیت‌های جزئی مربوط به طراحی را اجرا کرد.

الگوها: الگوهای طراحی در واقع به توصیف ساختار طراحی می‌پردازد که قصد دارد یک مساله طراحی را در یک حیطه و روش خاص حل کند.

جداسازی دغدغه‌ها: به این موضوع کاربردی اشاره دارد که هر مشکلی را می‌توان به قسمت‌های مستقل قابل حل تقسیم کرد تا با این روش به حل مساله موردنظر برسیم. با جداکردن دغدغه‌ها به موضوعات و قطعات کوچکتر، می‌توان با صرف تلاش و زمان کمتری به حل مساله نزدیک شد.

پیمانه‌بندی: یکی از متداول‌ترین نمودهای جداسازی دغدغه‌ها مفهوم پیمانه‌بندی است. در این مفهوم، نرم‌افزار به مولفه‌های مختلف و مستقلی که دارای نام مشخصی نیز هستند تقسیم می‌شود که به آن‌ها پیمانه گفته می‌شود. در نتیجه انسجام هر کدام از این پیمانه‌ها باهم، نیازهای مساله برآورده می‌شود.

پنهان‌سازی اطلاعات: این مفهوم مهم در طراحی نرم افزار به این نکته اشاره دارد که پیمانه‌ها را باید طوری طراحی و مشخص کرد که اطلاعات هر پیمانه مخفی بوده و در دسترس بقیه پیمانه‌ها قرار نگیرد.

استقلال عملیاتی: این مفهوم، نتیجه مستقیم مفاهیمی چون پنهان‌سازی اطلاعات، انتزاع، جداسازی دغدغه‌ها و پیمانه‌بندی‌ست. در واقع استقلال عملیاتی به‌واسطه توسعه پیمانه‌هایی به‌دست می‌آید که دارای عملکرد یگانه بوده و از تعامل با دیگر پیمانه‌ها دوری می‌کنند.

پالایش: به فرآیند تعیین و مشخص‌سازی جزئیات پالایش می‌گویند. پالایش مرحله‌ای، یک روش طراحی از بالا به پایین است.

بازآرایی: مفهوم بازآرایی به تکنیک سازمان‌دهی مجدد که طراحی یک موضوع را ساده‌تر می‌کند، گفته می‌شود. با تکنیک بازآرایی، قابلیت عملیاتی رفتار تغییر نخواهد کرد. به‌صورت ساده‌تر بازآرایی را می‌توان فرآیندی دانست که با آن سیستم نرم‌افزاری تغییر می‌کند اما رفتار خارجی طراحی و کدها تغییر نکرده و ثابت می‌ماند. با این روش ساختار درونی نیز بهبود می‌یابد.

 

سخن پایانی

 

با توجه به اهمیت نقش و جایگاه طراحی ‌نرم افزار، سعی داشتیم در این مقاله به معرفی و توضیح مفاهیم و اهداف آن بپردازیم.