مدیر کل انجمن
ارسالها : 5
عضویت: 24 /8 /1392
محل زندگی: مشهد
سن: 16
شناسه یاهو: airnasa
مهندس نرم افزار کیست؟
نرمافزار تبدیل به عنصر کلیدی در تکامل محصولات و سیستم های مبتنی بر رایانه شده است. در 60 سال گذشته، نرمافزار از یک ابزار تحلیل اطلاعات و حل مسئله به صنعتی مستقل تکامل یافته است. عملکرد گذشته در توسعه ی نرمافزارهای کاربردی، یک سری مشکلات ایجاد کرده است که هنوز هم آثار آن قابل دیدن است.
نرمافزار به عاملی محدود کننده در ادامه تکامل سیستم های رایانه ای تبدیل شده است. هر نرمافزار شامل مجموعه ای از برنامه ها، داده ها و مستندات است. هر یک از این اجزا در بر دارنده پیکربندی خاص خود هستند که به عنوان بخشی از فرآیند مهندسی نرمافزار به وجود می آیند. هدف مهندسی نرمافزار فراهم آوردن چارچوبی برای توسعه نرمافزارهایی است که دارای کیفیت مطلوب و بالایی باشند.
مهندس کیست؟
مهندس کسی است که یر اساس دانش متکی بر علم خود به تحلیل مسئله می پردازد و سپس راه حلی برای انجام و پیاده سازی ارائه می کند، تولید محصول را مدیریت، درستی و صحت تولید را بررسی و سپس محصول تولید شده را در اختیار کاربران نهایی می گذارد.
تعریف مهندسی نرمافزار
از دیدگاه Pressman: به مجموعه ای از فن آوری ها، روش ها و ابزارهای مبتنی بر اصول مهندسی که در توسعه ی نرمافزار استفاده می شود، مهندسی نرمافزار گفته می شود.
از دیدگاه Sommerville: مهندسی نرمافزار در دهه 1960 در کنفرانسی با نام بحران نرمافزار مطرح می گردد.
مهندسی نرمافزار در ارتباط با توسعه ی سیستم های نرمافزاری به شکل فعالیت گروهی است و از قواعد مهندسی استفاده می کند و شامل جنبه های فنی و غیرفنی است.
از دیدگاه Bauer: مهندسی نرمافزار عبارت از توسعه و استقرار نرمافزار با استفاده از اصول دقیق مهندسی برای دستیابی به نرمافزاری با صرفه اقتصادی است که دو شرط قابل اعتماد و کارا را دارد.
مهندسی نرمافزار هم ارز با برنامه نویسی نیست، بلکه برنامه نویسی فقط جزیی از مهندسی نرمافزار است
مشکلات کنونی نرمافزار
** عدم تطابق نرمافزار با نیتزهای واقعی مشتری و بازار
** عدم امکان رقابت و استفاده کارای نرمافزار از سخت افزار با توجه به پیشرفت سریع سخت افزاری
** عمومی شدن کاربرد رایانه در جامعه و عدم امکان تغییر و تعویض نرمافزار در مدت زمان کوتاه
** فشار عمومی و زیاد برای تولید نرمافزاری قابل اعتماد و دارای کیفیت مناسب
** قدرت محدود در پشتیبانی و نگهداری نرمافزارهای موجود
ویژگی ها و کاربردهای نرمافزار
نرمافزار یک محصول منطقی است و یک محصول فیزیکی نیست.
نرمافزارها بیشتر بر اساس نیاز مشتری ها ساخته می شوند.
نرمافزار دور انداختنی نیست.
محتوای و قطعیت اطلاعاتی در تعیین ماهیت کاربردی یک نرمافزار مطرح هستند. منظور از محتوا معنی و شکل اطلاعات ورودی و خروجی و قطعیت اطلاعاتی به معنای قابلیت پیش بینی ترتیب و زمان بندی اطلاعات است
با این وجود تعیین گروه های کلی بامعنی برای کاربردهای نرمافزاری تا حدی دشوار است. با پیچیده تر شدن نرمافزار، مرزهای صریح و روشن از بین می روند.
به هر حال می توان زکینه های زیر را به عنوان گروه های کاربردی مشخص کرد:
**نرمافزارهای سیستمی
**نرمافزارهای زمان حقیقی
** نرمافزارهای تجاری
**نرمافزارهای مهندسی و علمی
**نرمافزارهای تکار و تعبیه شده
**نرمافزارهای مبتنی بر رایانه های شخصی
**نرمافزارهای مبتنی بر وب
**نرمافزارهای هوش مصنوعی و شبکه های عصبی و... .
در حال حاضر برنامه نویسی گذشته جای خود را به تیمی از کارشناسان و مهندسین نرمافزار داده است که هر یک در بخشی از فن آوری لازم برای تولید یک برنامه کاربردی پیچیده فعالیت می کنند. با این وجود هنگام توسعه سیستم های رایانه مدرن پرسش های زیر مطرح است:
چرا توسعه نرمافزار طولانی است؟
عامل مهم در توسعه نرمافزارها، عدم امکان اندازه گیری مستقیم و عدم استفاده از مولفه های آماده و آزمایش شده در پیاده سازی است. راهکار استفاده از روش توسعه میتنی بر مولفه CBD تا حدی می تواند در رفع این مشکل کمک کند.
چرا هزینه توسعه نرمافزار بالاست؟
به علت تغییرات محیطی، فنی و طولانی شدن زمان توسعه نرمافزار، هزینه ها افزایش می یابد.
چگونه می توان خطاهای نرمافزار را پیش از تحویل شناسایی کرد؟
در مراحل تحلیل و طراحی نرمافزار، بازبینی های مستمر انجام و کد تولید شده به حد کفایت مورد آزمایش قرار گیرد.
چرا در اندازه گیری پیشرفت پروژه های نرمافزاری مشکل وجود دارد؟
چون معیارهای دقیق و خاصی برای سنجش نرمافزار وجود ندارد و این معیارها به پارامترهای بسیاری از تحلیل، طراحی و پیاده سازی وابسته اند.