عکس پیش‌فرض نوشته

نرم افزار به عنوان پایه و اساس بسیاری از پروژه های فناوری اطلاعات در نظر گرفته میشود و اکثر پروژه های فناوری اطلاعات شامل توسعه نرم افزار بوده و حتی در بعضی از پروژه ها، توسعه نرم افزار به عنوان فعالیت اصلی پروژه در نظر گرفته میشود.

تکنیک های توسعه نرم افزار

 

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

بدون نرم افزار، فناوری اطلاعات امکان بهره برداری و استفاده بهینه از کامپیوتر (ابزار اصلی فناوری اطلاعات) را نخواهد داشت و نیز توسعه و گسترش سریع فناوری اطلاعات امکان پذیر نخواهد بود.

 

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

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

توسعه نرم افزار شامل مجموعه ای از فعالیت ها و فرآیندهاست که بعد از تکمیل، در نهایت به تولید یک محصول نرم افزاری منجر میشوند.

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

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

 

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

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

 

 

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

نرم افزارها معمولاً به واسطه اجرای مجموعه ای از فعالیت ها انجام میگیرند.

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

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

– تعیین نیاز

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

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

تعیین نیازها باید با توجه به محدودیت ها، به خصوص محدودیت های در رابطه با توسعه انجام گیرد.

 

– توسعه نرم افزار

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

 

– تأیید توسعه نرم افزار

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

 

– تکامل توسعه نرم افزار

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

در این فرآیند، تغییرات لازم با توجه به تغییرات احتمالی در نیازمندی ها و یا ایجاد نیازمندی های جدید (پتانسیل بالا در صنعت فناوری اطلاعات) در نرم افزار ایجاد میشود.

 

 

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

1- فرآیند های توسعه (که در بالا به آن اشاره شد)

2- برنامه نویسی نرم افزار

3- کیفیت نرم افزار

4- روش های توسعه نرم افزار

 

 

روش های توسعه نرم افزار

توسعه نرم افزار یک فرآیند نسبتاً پیچیده است، به خصوص وقتی نیازمندی های سیستم نسبتاً زیاد باشد.

از طرف دیگر نرم افزارها به طور کل غیر کامل در نظر گرفته میشوند؛ به دلیل آنکه توسعه آنها طبق قوانین ریاضی و فیزیک قابل انجام نیست، به عبارت دیگر توسعه نرم افزارها با قطعیت امکان پذیر نیست.

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

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

– مدل توسعه آبشاری (Waterfall Development Model)

– مدل توسعه تدریجی (توسعه پله ای ، توسعه افزایشی یا توسعه تکراری) (Incremental Development Model)

– مدل نمونه اولیه

– مدل توسعه شی گرا (Object Oriented Development Model)

– مدل توسعه مبتنی بر اجزا (Component Based Development Model)

– مدل توسعه چابک (Agile Development Model)

– مدل توسعه حلزونی (Spiral Development Model)

– مدل توسعه کلین روم (Cleanroom Development Model)

 

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

 

به دلیل اینکه هر مدل توضیحات مفصلی داشته و نمیتوان در یک مطلب تمام مدل های توسعه نرم افزار و تکنیک های توسعه نرم افزار را بیان کرد؛ به ذکر توضیحات مختصری از چند مدل مهم تر در این مطلب بسنده میکنیم.

1- مدل آبشاری (Waterfall Model)

در مدل توسعه آبشاری فعالیت های توسعه نرم افزار به صورت فازهایی با ترتیب مشخص، برنامه ریزی و اجرا میشوند.

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

بازبینی و تجدید نظر صرفاً قبل از اتمام هر فاز امکان پذیر است و این یک مشکل اساسی برای مدل مذکور است؛ لذا خطای تخمین ابعاد پروژه، اشتباه در فهم درست و تحلیل نیازمندی ها، خطای ریسک پروژه و نیز امکان انتخاب نابجای معماری بسیار بالا است.

 

2- مدل تدریجی (Incremental Model)

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

روش مدل تدریجی باعث میشود در حین اجرای برنامه، مشکلات مهم، قبل از اینکه باعث خراب شدن کل سیستم شوند شناسایی و حل شوند.

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

 

3- مدل چابک (Agile Model)

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

مدل چابک اکنون بسیار مورد استقبال است به دلیل آنکه نتایج خوب و قابل توجهی ارائه میکند؛ به همین دلیل بر اساس آن روش های متنوعی ایجاد شده اند که از جمله آنها میتوان الگو اسکرام را نام برد.