آموزش مهندسی نرم افزار یک — مرور مفاهیم

 

ماهیت نرم افزار

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

 

ماهیت نرم افزار

امروزه نقشی دو گانه دارد:

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

نرم افزار از سه قسمت تشکیل شده است:

  • دستورالعمل ها
  • ساختمان داده ها
  • اطلاعات توصیفی

نرم افزار یک چیز منطقی است.

خصوصیات نرم افزار

  • فرسوده نمی شود.
  • مهندسی و بسط داده نمی شود.
  • اکثر نرم افزار ها سفارشی است.

دامنه های کاربرد نرم افزار

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

نرم افزار سیستمی: مجموعه ای از برنامه ها که برای سرویس دهی به برنامه های دیگر نوشت شده اند.

مثال: Operating System

  • تعامل سنگین با سخت افزار
  • استفاده سنگین توسط چند کاربر
  • عمل کنونی مستلزم زمان بندی است.
  • اشتراک منابع و مدیریت فرایند
  • ساختمان داده های پیچیده و واسط های خارجی

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

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

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

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

نکات مهم

پیش از آنکه برای مسأله راهکاری بیابید آن را درک کنید.

طراحی یکی از فعالیت های محوری در مهندسی نرم افزار است.

کیفیت و قابلیت نگهداری هر دو نتیجه طراحی خوب است.

تعریف مهندسی نرم افزار: وضع اصول مهندسی بجا و مناسب و استفاده از آن ها برای به دست آوردن یک نرم افزار مقرون به صرفه، کارامد و قابل اطمینان است.

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

متضمن پشتیبانی خودکار و نیمه خودکار برای فرایند ها و روش ها ابزار
شیوه های فنی برای ساخت نرم افزار را فراهم می کند. متد – روش
بنیاد مهندسی نرم افزار لایه فرایند است. فرایند
سنگ بنای نگهدارنده مهندسی نرم افزار است. تمرکز بر کیفیت

فرایند تعیین می کند چه کسی چه کاری را در چه زمانی و چگونه انجام دهد تا به هدفی معین برسد.

چهارچوب فرایند کلی برای مهندسی نرم افزار شامل پنج فعالیت می باشد:

  • ارتباطات(communication)
  • برنامه ریزی(planning)
  • مدل سازی(modeling)
  • ساخت(construct)
  • استقرار

در طی فعالیت های فرایند باید فعالیت های چتری را هم داشته باشیم:

مدیریت پروژه نرم افزاری، مدیریت ریسک، تضمین کیفیت، بازبینی های فنی، اندازه گیری، مدیریت پیکر بندی نرم افزار، مدیریت قابلیت استفاه مجدد و تهیه و تولید محصول کاری.

مهندسی نرم افزار

مهندسی نرم افزار به مثابه چسبی عمل می کند که لایه های فناوری را به هم نگه می دارد و بسط موجه و به موقع نرم افزارهای کامپیوتری را میسر می سازد.

فرایند، چارچوبی را تعریف می کند که باید برای تحویل موثر فناوری مهندسی نرم افزار وضع می شود.

فرایند نرم افزار، مجموعه ای از فعالیت ها و کنش ها و وظایف است که هنگام ایجاد یک محصول کاری اجرا می شوند. (مثل: برقراری ارتباط با افراد ذی نفع)

فعالیت کوششی است در جهت رسیدن به هدفی گسترده و دانه کاربرد.

مدل فرایند چابک

بر سرعت تاکید دارد و مجموعه ای از اصول را دنبال می کنند که به یک روش غیر رسمی تر برای فرایند نرم افزار منجر می شود. این مدل بر قابلیت مانور و انطباق تاکید دارد و برای انواع بسیاری از پروژه ها مناسب است.

جوهر عمل

  • شناخت مسأله (برقراری ارتباط و تحلیل)
  • طرح ریزی برای یک راه حل (مدل سازی و طراحی)
  • اجرای برنامه ریزی (ایجاد کد)
  • بررسی نتیجه برای صحت (آزمایش و تضمین کیفیت)

چرا فرایند نرم افزار اهمیت دارد:

زیرا باعث ثبات، کنترل و سازماندهی فعالیتی می شود که اگر به حال خود گذاشته شود ممکن است باعث آشوب شود.

هر فرایند به نرم افزاری که می خواهید بسازید بستگی دارد.

جریان فرایند

  • خطی

  • مبتنی بر تکرار

 

  • جریان فرایند موازی

 

 

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

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

  • مدل آبشاری
  • مدل های فرایند افزایش
  • مدل های فرایند تکاملی
  • مدل توسعه همروند

تجویز موارد زیر برای هر پروژه

  • مجموعه ای از عناصر فرایند
  • فعالیت های چارچوبی
  • عمیات مهندسی نرم افزار
  • وظایف
  • محصولات کاری
  • تضمین کیفیت
  • سازوکارهای کنترل تغییر

مدل آبشاری

در مرحله مدل سازی تحلیل و طراحی صورت می گیرد و در مرحله استقرار تحویل نرم افزار صورت می گیرد.

شکل زیر یک شکل از نمایش مدل آبشاری است. مدل ترتیب خطی قدیمی ترین و پرکاربرد ترین الگو برای مهندسی نرم افزار است.

 

مشکلاتی که هنگام اجرای مدل ترتیب خطی پیش می آید.

مشکلات:

  • پروژه های واقعی به ندرت جریان ترتیبی پیشنهاد شده توسط این مدل را دنبال می کنند.
  • غالباً برای مشتری دشوار است که همه نیاز خود را به وضوح بیان می کند.
  • مشتری باید حوصله داشته باشد.

مدل فرایند افزایشی

یک نسخه ابتدایی می دهیم و بعد همان را کامل تر می کنیم. وقتی که باید یک نرم افزار را تحویل دهیم اما نمی توانیم از این مدل استفاده کنیم یک ساخت اولیه می دهیم سپس آن را در مراحل بعد تکمیل می کنیم.

مدل فرایند تکاملی

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

 

نمونه اولیه مورد ارزیابی مشتری قرار گرفته و از آن برای پالایش نرم افزار مورد نظر استفاده می شود.

در اکثر روژه ها نخستین سیستمی که ساخته می شود، چندان قابل استفاده نیست، زیرا ممکن است بیش از حد آهسته باشد و یا استفاده از آن دشوار باشد و یا بیش از حد بزرگ باشد و یا هر سه را با هم داشته باشد.

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

دلایل مشکل ساز بودن ساخت نمونه اولیه

  • افراد ذی نفع نمی دانند که کیفیت کلی نرم افزار پایین است و قابلیت نگهداری دراز مدت را ندارد.
  • مهندسان نرم افزار غالباً در پیاده سازی نمونه اولیه کوتاهی می کنند. ممکن است از یک سیستم عامل یا زبان برنامه نویسی نامناسب استفاده شود یا یک الگوریتم ناکارامد مورد استفاده قرار گیرد.

 

 

مدل مارپیچی

یک مدل فرایند نرم افزار تکاملی است که ماهیت تکراری مدل ساخت نمونه اولیه را با جنبه های کنترلی و سیستماتیک مدل ترتیبی خطی (آبشاری) تلفیق می کند. این مدل پتانسیل لازم برای بسط سریع نسخه های تکاملی نرم افزار را داراست.

با استفاده از مدل مارپیچی نرم افزار به صورت یکسری نگارش های تکاملی توسعه می یابد.

طی نخستین دوره های تکرار نگارش تکاملی ممکن است یک مدل کاغذی یا یک نمونه اولیه باشد.

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

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

با این مدل هم نمی توان گفت همه مشکلات حل شد. همچنین سخت است مشتری را قانع کردن که مدل مارپیچی تحت کنترل است.

مدل توسعه همروند

شبکه از رویداد ها را تعریف می کند.

نقاط ضعف فرایندهای تکاملی

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

مدل های فرایند تخصصی

این مدل ها شامل بسیاری از ویژگی های یک یا چند مدل سنتی ارائه شده در بخش های قبلی می شوند. ولی این مدل ها را معمولاً هنگامی به کار می برند که یک روش مهندسی تخصصی یا روشی با مشخصات دقیق انتخاب می شود.

این سه موضوع را با هم بررسی می کنیم:

  •  توسعه ی مبتنی بر مولفه (component)
  •  مدل روش های رسمی
  •  توسعه نرم افزار جنبه گرا

توسعه مبتنی بر مؤلفه

مولفه های نرم افزاری (component) آماده توسط عده ای از فروشندگان این مولفه ها توسعه داده می شوند. به طوری که این مولفه ها (component) ها را می توان به خوبی در سیستم در حال ساخت الحاق کرد. توسعه مبتنی بر مؤلفه ها بسیاری از خصوصیات مدل مارپیچی را در بر می گیرند.

مدل روش های رسمی

در این مدل سوء برداشت و ابهام نداریم. به وسیله ریاضیات بیان می شود. مدل روش های رسمی گرچه چندان عمومیت نخواهند یافت، اما نوید بخش نرم افزاری عاری از نقص است.

قابلیت اجرای آن در محیط تجاری چنین اعلام شده است:

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

فرایند یکپارچه

از جهاتی تلاش می کند بهترین ویژگی ها و خصوصیات مدل های فرایند سنتی را گرد هم آورد. ولی آن ها را به شیوه ای مشخص کند که بسیاری از بهترین اصول توسعه نرم افزار چابک را پیاده سازی می کند.

در فرایند یکپارچه اهمیت برقراری ارتباط با مشتریان و روش های ساده برای توصیف دیدگاه مشتریان.

تاکید بر اهمیت نقش معماری است.

جریان فرایندش یک جریان فرایند مبتنی بر تکرار و افزایشی پیشنهاد می شود.

سیستم UML حاوی یک نماد گذاری قدرتمند برای مدل سازی و توسعه سیستم های شیء گرا است.

 

 

آنچه مطالعه کردید، توسط جناب آقای امین صابره ایوبی به عنوان پیاده سازی و برداشت متنی بخش هایی از آموزش «مهندسی نرم افزار ۱» تهیه شده و جهت استفاده مخاطبین گرامی در متلب سایت منتشر می شود.

 

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *