نگاه کوتاه
از ویکیپدیا، دانشنامهٔ آزاد
مهندسی نرمافزار (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و برروی ماشینهای واقعی به طور کارآمدی عمل کند.
مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است.
مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با به کارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار
مهم ترین شاخص در مهندسی نرمافزار تولید نرمافزار با کیفیت مناسب در جهت «نیازهای مشتری» است.
اصطلاح مهندسی نرمافزار پس از سال ۱۹۶۸ میلادی شناخته شد. این اصطلاح طی نشست «مهندسی نرمافزار ناتو ۱۹۶۸» (که در گارمیش-پارتنکیرشن، آلمان برگزار شد) توسط ریاست نشست فریدریش ال باوئر معرفی شد و از آن پس بهطور گسترده مورد استفاده قرار گرفت.
اصطلاح مهندسینرمافزار عموماً به معانی مختلفی بهکار میرود:
- بهعنوان یک اصطلاح غیر رسمی امروزی برای محدوده وسیع فعالیتهایی که پیش از این برنامهنویسی و تحلیل سامانهها نامیده میشد.
- بهعنوان یک اصطلاح جامع برای تمامی جنبههای عملی برنامهنویسی رایانه، در مقابل تئوری برنامهنویسی رایانه، که علوم رایانه نامیده میشود.
- بهعنوان اصطلاح مجسمکننده طرفداری از یک رویکرد خاص نسبت به برنامهنویسی رایانه که اصرار میکند، مهندسی نرمافزار، بهجای آنکه هنر یا مهارت باشد، باید بهعنوان یک رشته عملی مهندسی تلقی شود و از جمعکردن و تدوین روشهای عملی توصیهشده به شکل متدولوژیهای مهندسی نرمافزار طرفداری میکند.
- مهندسی نرمافزار به مفهوم توسعه و بازبینی یک سامانه نرمافزاری مربوط میباشد. این رشته علمی با شناسایی، تعریف، فهمیدن و بازبینی خصوصیات مورد نیاز نرمافزار حاصل سر و کار دارد. این خصوصیات نرمافزاری ممکن است شامل پاسخگویی به نیازها، اطمینانپذیری، قابلیت نگهداری، در دسترس بودن، آزمونپذیری، استفاده آسان، قابلیت حمل و سایر خصوصیات باشد.مهندسی نرمافزار ضمن اشاره به خصوصیات فوق، مشخصات معین طراحی و فنی را آماده میکند که اگر بهدرستی پیادهسازی شود، نرمافزاری را تولید خواهد کرد که میتواند بررسی شود که آیا این نیازمندیها را تأمین میکند یا خیر.مهندسی نرمافزار همچنین با خصوصیات پروسه توسعه نرمافزاری در ارتباط است. در این رابطه، با خصوصیاتی مانند هزینه توسعه نرمافزار، طول مدت توسعه نرمافزار و ریسکهای توسعه نرمافزار درگیر است.
- نرمافزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای نوین قابل مقایسه هستند. بهعنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرمافزارِ هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.با توجه به گسترش روزافزون دنیای رایانه امروزه بیش از هر زمان دیگری نیاز به متخصصان رایانه احساس میشود. متاسفانه این رشته در ایران بازار کار خوبی ندارد طبق آمارها ۶۳٫۲۷ درصد از فارغالتحصیلان در سال ۹۰ مشغول به کار در سایر مشاغل هستند. اما برای مهندسان سختافزار هم امکان کار در شرکتهای تولیدکننده قطعات و دستگاهها و مراکز صنعتی – تولیدی بسیار فراهم است و از نظر سطح درآمدی هم با توجه به دانش و پشتکار شخصی در حد متوسط قرار دارند. به طور کلی این رشته در ایران با استقبال چندانی رو به رو نیست؛ این نیز حاکی از نبود برخی از زیرساختها در ایران هست.
- نرمافزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای نوین قابل مقایسه هستند. بهعنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرمافزارِ هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.با توجه به گسترش روزافزون دنیای رایانه امروزه بیش از هر زمان دیگری نیاز به متخصصان رایانه احساس میشود. متاسفانه این رشته در ایران بازار کار خوبی ندارد طبق آمارها ۶۳٫۲۷ درصد از فارغالتحصیلان در سال ۹۰ مشغول به کار در سایر مشاغل هستند. اما برای مهندسان سختافزار هم امکان کار در شرکتهای تولیدکننده قطعات و دستگاهها و مراکز صنعتی – تولیدی بسیار فراهم است و از نظر سطح درآمدی هم با توجه به دانش و پشتکار شخصی در حد متوسط قرار دارند. به طور کلی این رشته در ایران با استقبال چندانی رو به رو نیست؛ این نیز حاکی از نبود برخی از زیرساختها در ایران هست.
رئوس مطالب
مراحل تولید محصولات نرم افزاری – اجزاء مدل نرم افزاری – روشهای مهندسی نرم افزار- ارکان شی گرایی – ویژه گیهای نرم افزاری و سخت افزاری – انواع محصولات نرم افزاری – فرآیند نرم افزار – مدل های فرآیند نرم افزار – مدل گام به گام- مدل مارپیچی – تبدیل رسمی – روش مبتنی بر مولفه – Agile Development Method – روش برنامه نویسی افراطی – CASE) Computer-Aided Software Engineering) – متدولوژی های(روشمندی در تولید) مهندسی نرم افزار – فرآیند مهندسی سیستم – نیازهای عملکردی و غیر عملکردی – چهار فعالیت عمومی مهندسی نیازها – کشف نیارها (خواسته ها) – مورد کاربرد use case – اصول و مفاهیم طراحی نرم افزار – مفهوم طراحی معماری – ویژه گیهای طراحی معماری – پیمانه ها در نرم افزار – مدلهای سیستم در طراحی نرم افزار – دیکشنری داده ها – طراحی شی گرا – (Unified Modeling Language(UML – ویژه گیهای طراحی شی گرا – ارتباط تناظر – فرآیند طراحی شی گرا – تعریف حالتهای کاربرد سیستم – شناسایی کلاسهای اشیاء سیستم – توسعه مدلهای طراحی با استفاده از زبان UML – مدلهای زیر سیستم – مدلهای توالی و همکاری – مدل ماشین حالت – شناسایی واسطهای شی (مجموعه متدهای عمومی) – تکامل طراحی – انواع دیاگرامها – فرایند توسعه (ساخت محصول) – سناریو Use case – نمودار کلاس Class diagram – انواع کلاسها در UML – انواع ارتباطات در نمودار کلاس – ارتباط تعمیم – ارتباط تناظر – ارتباط تجمیع – ارتباط ترکیب – ارتباط وابستگی – مثال های کلاس دیاگرام – نمودار توالی – نمودار حالت – نمودار فعالیت