چرا نرم افزار مهم است؟
دنیای امروز بدون نرم افزار قابل تحمل نیست. تمامی امکانات و زیرساختهای آنها از سیستم های کامپیوتری تشکیل شده اند . بازیهای کامپیوتری،صنعت،موسیقی،فیلم،تلویزیون و بسیاری از ماشینها در صنایع علمی و … .
یک سیستم نرم افزاری یک سیستم فیزیکی است یا نه؟ «نکته» : سیستمهای نرم افزاری انتزاعی و نا ملموس هستند. آنها توسط خواص مواد که تحت قوانین فیزیکی عمل میکنند محدود نمی شوند.بدین ترتیب مهندسی نرم افزار ساده می شود.
زیرا هیچ محدودیت طبیعی نمی تواند جلوی پتانسیل نرم افزار را بگیرد. از طرف دیگر به دلیل عدم وجود محدودیت های فیزیکی سیستم های نرم افزاری می توانند بسیار پیچیده و پرهزینه باشند.
چالشهای بسیار زیادی در مهندسی نرم افزار وجد دارد که باعث شکست و عدم موفقیت نرم افزار می شود. انتقادی بر مهندسی نرم افزار می شود این است که برای توسعه نرم افزارهای مدرن کافی نیست.در زیر به دو دلیل از شکست های نرم افزار اشاره می شود :
- تقاضاهای روز افزون: هرچند که تکنیکهای مهندسی نرم افزار به شناخت سیستم های بزرگ و پیچیده تر کمک می کنند،تقاضاها نیز روز به روز در حال تغییر هستند و سیستم ها باید با سرعت بیشتری ساخته و تحویل داده شوند و به سیستم های بزرگ و پیچیده تری نیاز است. سیستم ها باید قابلیت های جدیدی داشته باشند که قبلا این قابلیت ها غیرممکن بود. روشهای موجود مهندسی نرم افزار می توانند این تقاضاها را برآورده کنند و نیاز است تکنیکهای توسعه جدیدی مطرح شود.
- انتظارات ناچیز : نوشتن برنامه بدون استفاده از این روشها و تکنیک ها نسبتاً ساده است ولی نرم افزاری که تولید می شود گرانتر بوده و قابلیت اعتماد آن کم است.
تعریف نرم افزار : برنامه کامپیوتری به همراه مستندات مربوط به آنها. این مستندات می توانند مستندات کاربر،فایلهای پیکربندی،سایتهایی جهت راهنمایی و … باشد. نرم افزارها دونوع هستند :
- محصولات عمومی : سیستم هایی هستند که توسط یک سازمان ایجاد شده و در یک بازار عمومی فروخته می شوند.
- محصولات سفارشی : این سیستم ها برای مشتری اص ایجاد می شوند. تفاوت مهم این نرم افزارها این است که در محصلات عمومی سازمانی که نرم افزار را توسعه می دهد،مشخصات آن را کنترل می کند؛ولی برای محصولات سفارشی توسعه و کنترل برعهده سازمان خریدار است.
تفاوت مهم بین نرم افزار حرفه ای و آماتوری در این است که زمانی که برای کد برنامه می نویسید هیچکس آن را نمی بیند. بنابراین نیاز نیست نگران نوشتن راهنمای برنامه و مستندات طراحی برنامه با رابط گرافیکی بالا و … باشید. اما زمانی که کس دیگری از برنامه شما استفاده می کند و یا افراد دیگری آن را تغییر می دهند باید مستنداتی به همراه کد نوشته شود.
صفات یک نرم افزار خوب چیست؟
- قابلیت نگهداری : نرم افزار باید طوری نوشته شود که بتواند ارتقا پیدا کند تا نیازهای جدید کاربران را برآورده نماید.
این ویژگی یک صفت حیاتی محصوب می شود. زیرا در دنیای تجارت تغییرات با سرعت بسیار بالایی در حال انجام می باشد.
- قابلیت اتکا و امنیت : قابلیت اتکا نرم افزار شامل تعدادی از ویژگی هاست؛از جمله قابلیت اعتماد،امنیت و ایمنی .
نرم افزار قابل اعتماد نباید در اثر خرابی منجر به آسیبهای اقتصادی و فیزیکی شود.
ایمنی : کاربران غیرمجاز نباید بتوانند به سیستم دستیابی داشته باشند
- کارایی : نرم افزار نباید منابع سیستم مانند حافظه و چرخه های پردازنده را هدر دهد. بنابراین این کارایی شامل زمان پاسخ،بهره بری از حافظه،زمان پردازش و … می باشد.
- قابلیت پذیرش : نرم افزار باید برای انواه کاربرانی که از آن استفاده می کنند قابل قبول باشد. یعنی باید قابل درک،قابل استفاده و سازگار باشد.
تعریف مهندسی نرم افزار : یک نظام مهندسی که با تمام جنبه های تولید نرم افزار از مراحل اولیه تعیین مشخصات سیستم تا نگهداری سیستم سر وکار دارد.2 مفهوم مهم در این تعریف وجود دارد:1- نظام مهندسی 2-تمام جنبه های محصول نرمافزاری.
- مهندسی اشیا را وادار به کار میکنند.آنها تئوری،روشها؛ابزارها را در جاههای مناسبی به کار میگیرند و سعی می کنند راه حل هایی را برای مسئله انتخاب کنند و محدودیت های موجود را در نظر می گیرند.
- مهندسین نرم افزار فقط با فرآیندهای تکنیکی توسعه نرم افزار سر وکار ندارند. بلکه فعالیت هایی مانند مدیریت پروژه نرم افزاری را باید در نظر بگیرند. با علم مهندسی می توان در یک زمان معین و یک بودجه معین به محصولی با کیفیت دسترسی پیدا کرد.
نکته : 60درصد هزینه های تولید نرم افزار مربوط به هزینه توسعه است و 40درصد مربوط به آزمون نرم افزار می باشد.
به 2 دلیل مهندسی نرم افزار مهم است: 1) افراد و جامعه روز به روز برسیستم نرم افزاری پیشرفته تاکید دارند تا بتوانیم سیستم های قابل اعتماد و امن را با قیمت مناسب و سریعاً تولید کنیم.
2) استفاده از روش ها و تکنیکهای مهندسی نرم افزار درطولانی مدت ارزانتر تمام می شود. زیرا بیشتر هزینه های مربوط به
نرم افزار پس از بکارگیری آن می باشد.
فرآیندهای اصلی نرم افزار : دنباله ای از فعالیت ها که منجر به تولید محصول نرم افزاری می شود. این فعالیت ها شامل 4 مرحله می باشند که در تمامی فرآیندهای نرم افزاری مشترک می باشند.
- تعیین مشخصات نرم افزاری : که در آن مشتریان و مهندسین خواسته های نرم افزاری را که باید تولید شود و محدودیت های آن را استخراج می کنند.
- طراحی و پیاده سازی : در آن نرم افزار طراحی و برنامه نویسی می شود.
- تست و اعتبار سنجی نرم افزار : در آن نرم افزار چک می شود تا تضمین گردد تا خواسته های مشتری را برآورده می کند.
- تکامل نرم افزار : نرم افزار تغییر می کند تا تغییرات مورد نظر مشتری و نیازهای بازار را در بر گیرد.
تفاوت بین علم کامپیوتر و مهندسی نرم افزار در چیست؟ علم کامپیوتر با نظریه ها و روش ها سرو کار دارد. در حالیکه مهندسی نرم افزار با مسئله های علمی تولید محصول در ارتباط است. علم کامپیوتر برای مهندسین نرم افزار یک ضرورت است
تفاوت بین مهندسی سیستم و مهندسی نرم افزار: مهندسی سیستم با جنبه توسعه سیستمهای مبتنی بر کامپیوتر سرو کار دارد از جمله سخت افزار،نرم افزار و مهندسی فرآیند.مهندسی نرم افزار بخشی از این فرآیند کلی محسوب میشود.
تنوع در مهندسی نرم افزار : برنامه های کاربردی را می توان به دسته های متفاوتی تقسیم نمود. دسته بندی که ساموروویل ارایه می دهد به صورت زیر آمده است : 1) برنامه های کاربردی مستقل : سیستم های کاربردی هستند که در یک کامپیوتر محلی مانند PC اجرا می شود و نیاز نیست به شبکه متصل شوند. مانند نرم افزار پردازش تصویر.
موفق باشید
محمد رمضانی گیلده