مهندسی نرمافزار یک فرآیند مشخص با بکارگیری اصول مهندسی برای توسعه نرمافزار است، از تدوین استراتژی تا طراحی و توسعه و در نهایت نگهداری تا بهبود و توسعه بیشتر که بیش از کدنویسی را خود جای می دهد.
ما در مورد مهندسی نرم افزار (Software Engineering) صحبت می کنیم، که یک تخصص معروف در زمینه فناوری اطلاعات و علوم مرتبط با کامپیوتر است. قبل از شروع صحبت در مورد مهندسی نرم افزار، بیایید ابتدا بدانیم که نرم افزار چیست و چگونه طراحی و ساخته می شود و چه ارتباطی با مهندسی نرم افزار دارد.
برنامه یا Program مجموعه ای از خطوط در یک زبان برنامه نویسی خاص است که برای انجام یک کار خاص به کامپیوتر هدایت می شود. معمولا یک برنامه قطعه کوچکی است که توسط یک شخص به تنهایی ایجاد شده است.
اصطلاح دیگر نرم افزار یا Software است که یک خودش یک برنامه است، اما پیچیده تر است و به صدها خط کد نیاز دارد و برای ایجاد، آزمایش، تجزیه و تحلیل و پیاده سازی نرم افزار به همکاری بیش از یک نفر نیاز دارد.
با افزایش پیچیدگی پروژه و تبدیل شدن آن به نرم افزار، به بیش از یک نفر برای کار روی آن نیاز است و گاهی اوقات حتی به بیش از یک زبان برنامه نویسی نیاز می شود، نقش مهندسی نرم افزار یا Software Engineering ظاهر می شود.
تعاریف زیادی از مهندسی نرم افزار وجود دارد و در بین این تعاریف، مهندسی نرم افزار شاخه ای است که به طراحی، تولید و ساخت نرم افزارهای با کیفیت، ارزان و به موقع مشغول است.
نرم افزار هزینه و تلاش زیادی دارد و در پروژه های بزرگ به فردی نیاز داریم که کارها را سازمانده کرده و استراتژی های حساب شده ای را تدوین کند تا از تلاش ها استفاده کرده و پروژه را در کوتاه ترین زمان به اتمام برساند و از بالاترین کیفیت اطمینان حاصل کند. آن شخص مهندس نرم افزار است یا اینطور بگوییم که به این علم مهندس نرم افزار می گویند.
مهندس نرم افزار (Software Engineer)، شخص مسئول سازماندهی کار گروهی از برنامه نویسان است که در ساخت برنامه کاربردی یا پروژه نرم افزاری یا طراحی یک وب سایت مشارکت دارند.
مهندس نرم افزار باید موارد زیر را داشته باشد:
مانند دانش برنامه نویسی، ریاضیات، نگهداری برنامه، تجزیه و تحلیل برنامه و آزمایش.
به عنوان مثال توانایی برقراری ارتباط با اعضای تیم، رهبری، شخصیت و انعطاف پذیری
برنامه ها یا پروژه های نرم افزاری از جهات مختلف متنوع هستند، به دلیل تنوع زیاد انواع نیاز ها و درخواست های مشتری و هچنین روش های پیاده سازی، علم مهندسی نرم افزار (Software Engineering) باید توانایی پاسخ به نیازهای مشتریان و صاحبان محصول را در هر نوع به گونه ای دهد که نیاز های بیزینسی به خوبی در تحلیل، توسعه و پیاده سازی شکل بگیرد. به عنوان مثال:
یک اصل مهم این است که نرم افزار همانطور که از نامش پیداست نرم است و یک صنعت نرم محسوب می شود، باید به صورتی مهندسی شود که نیاز های نرم افزاری خود را به شکل کسب و کار در بیایند، نه اینکه بیزینس خود را شبیه به نرم افزار کند و فرایند خود را تغییر دهد.
از نظر کاربرد دو نوع نرم افزار وجود دارد:
که نرم افزار هایی هستند که در جهت اهداف عمومی برای استفاده افراد یا شرکت ها تولید می شوند. نمونه هایی از این نرم افزار ها برنامه های مایکروسافت مانند مایکروسافت Word و سایر برنامه های شرکت Adobe مانند Photoshop هستند.
اینها نرم افزار هایی هستند که به طور خاص برای مشتری مطابق خواسته های وی آماده می شوند.
نیاز هر کسب و کار متفاوت است و این نیاز مستلزم توسعه نرم افزار بصورت اختصاصی و پیاده سازی جریان کاری خاص آن بیزینس می باشد که با نرم افزار های موجود مطابقت ندارد و باید شخصی سازی و طراحی شود.
یکی از موارد مهمی که باید در نظر گرفته شود، مانند تعیین مدت زمان مورد نیاز برای اتمام نرم افزار، و همچنین تاریخ تحویل نرم افزار
کیفیت را می توان از چند جهت به شرح زیر مشاهده کرد:
با توجه به موارد فوق، می توان نتیجه گرفت که معیارهایی که بر اساس آنها می توان نرم افزار را خوب یا بهتر ارزیابی کرد عبارتند از:
سیستم پیاده سازی شده باید به گونه ای باشد که نگهداری و پشتیبانی از آن نیاز به دانش تخصصی نداشته باشد و برای سلامت نگه داشتن آن تدابیری دیده شده باشد.
یک نرم افزار باید به گونه ای طراحی شده باشد که موجب افزایش بهره وری گردد و برای سازمان ارزش آفرینی کند، اینکه دقیقا همان کار انسانی و دستی را پیش ببرد کفایت نمی کند.
Reliability به این معنی است که نرم افزار عاری از خطا است و در شرایط خاص دچار مشکل نشود.
به این معنی است که چگونه سیستم به راحتی می تواند مورد استفاده قرار گیرد.
پروژه های نرم افزاری که از اصول مهندسی نرم افزار پیروی می کنند، تکامل نرم افزار یا software evolution نامیده می شوند و این شامل توسعه اولیه پروژه، نگهداری و به روز رسانی تا رسیدن به محصول نهایی است که نیازهای مشتری را برآورده می کند.
تکامل با فرایند جمع آوری نیازهای مشتری آغاز می شود. سپس توسعه دهندگان نمونه اولیه پروژه مورد نیاز را ایجاد کرده و آن را به کاربران نشان می دهند تا بازخورد اولیه خود را در مورد پروژه دریافت کنند. کاربران تغییراتی را پیشنهاد می دهند که طی چندین به روزرسانی متوالی و نگهداری مداوم انجام می شود. تا برنامه مورد نیاز تکمیل شود.
حتی پس از دستیابی به برنامه مورد نیاز مشتری، توسعه مداوم فناوری نیاز به تغییر برنامه و افزودن ویژگی های جدید به آن برای همگام شدن با جهان دارد. ایجاد برنامه ای که از ابتدا با علم روز همگام باشد، از نظر اقتصادی یک پروسه بسیار پرهزینه است و در اینجا نقش به روزرسانی ها و مفهوم اساسی “تغییر “وجود دارد، یعنی ارائه پروژه نرم افزاری با آخرین به روز رسانی ها برای همگام شدن با الزامات.
این مدل ها، روش ها و مراحل انجام شده در هنگام طراحی برنامه را نشان می دهد. روشهای پیشنهادات زیادی وجود دارد و هیچ روشی مشخصی وجود ندارد که بهترین باشد، اما هر پروژه ویژگی خاص خود را دارد، اما با استفاده از آن می توانیم این مدلها را که می توان از آنها استفاده کرد یا با یکدیگر ترکیب کرد، شناسایی کنیم و از وجود همگی آنها بهره ببریم.
بعنوان نمونه مدل ترتیبی خطی (linear sequential model) در 1970 برای ایجاد ساده تر شدن فرآیند توسعه نرم افزار توسعه یافت. این مدل یکی از قدیمی ترین و پرکاربردترین مدل ها در مهندسی نرم افزار محسوب می شود. این مدل از مهندسی، نیاز به یک رویکرد متوالی یا ترتیبی برای توسعه نرم افزار دارد که با تجزیه و تحلیل نیازها از طریق برنامه ریزی، طراحی، کدگذاری، آزمایش و تحویل آغاز می شود.
در زیر هر مرحله از این مدل توضیح داده شده است:
در این مرحله، الزامات سیستم نرم افزاری مشخص می شود. الزامات مشتری به طور دقیق تعیین شده است و این مرحله بسیار مهم است و اساس فرآیند توسعه برنامه است.
در این مرحله، طراحی منطقی الزامات مشتری و پاسخ به این سوال که سیستم چگونه برنامه ریزی می شود، انجام خواند شد، این مرحله نقطه اتصال نیازهای مشتری و کد برنامه است.
در این مرحله از مدل، کد نوشته می شود. طرح مرحله قبل به مجموعه ای از برنامه ها تبدیل می شود.
در این مرحله، برنامه از نظر آزمایش قسمتهای مختلف برنامه و همچنین تست نرک افزار به طور کلی و مشارکت کاربران در آزمایش برنامه برای اطمینان از اینکه برنامه از همه نظر تست می شود که برای خواسته های کاربران مناسب است و به خوبی کار می کند.
در این مرحله، برنامه اجرا می شود. برنامه نیز نگهداری می شود و خطاها در کد تصحیح می شوند تا برنامه کارآمدتر شود.
در این مدل از مهندسی نرم افزار، هر مرحله پس از پایان مرحله قبلی شروع می شود، بنابراین به آن ترتیبی خطی یا پی در پی گفته می شود
راه های بسیار دیگری نیز برای توسعه نرم افزار وجود دارد، ممکن است بعدا در این مقاله در مورد برخی از آنها صحبت کنیم و فعلا فقط به عناوین آنها بسنده میکنیم:
شرکت پایدار سامانه، نشاندهنده رویایی جذاب و پر احساس در دنیای فناوری و خدمات دیجیتال است. ما با آتشی برافروخته از انگیزه و تعهد، تمام تلاش خود را به کار میگیریم تا برای مشتریان عزیزمان، تجربهای بینظیر از خدمات بیمانند را فراهم آوریم. تیم متخصص و پرانرژی ما، همیشه در حال جلب رضایت شما و بهبود پیوسته خدماتمان است. ما اعتقاد داریم که موفقیت ما به واسطه موفقیت شماست و همچنین با تکیه بر مفهوم برد-برد، مسیر مشترکی را با شما طی میکنیم. اینجاست که ما نه تنها شرکتی هستیم، بلکه یک خانوادهی پایدار و احساسی که در کنار شماست. ما برای پیوستن به مسیر موفقیت شما و ایجاد تفاوت واقعی در دنیای دیجیتال همراه شما هستیم.
نظرات کاربران
saber
مهندسی نرم افزار بهتره یا علوم کامپیوتر چه فرقی دارن راهنمایی میکنید؟
مهندس آینده
مهندسی نرم افزار خیلی جذابه من تازه به اهمیتش رسیدم دوست دارم تعریف مهندسی نرم افزار و هرچی که شامل میشه رو از صفر برم توی دلش و یادبگیرم احساس میکنم کار درست همینه عالی بود و واقعا خسته نباشید
دیدگاه شما
از همین دسته بندی