مهندسی خواسته ها

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

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

خواسته های عملکردی
خواسته های عملکردی مربوط به نرم افزار ، عملکرد یا خدماتی را توصیف می کند که سیستم باید انجام دهد. در حقیقت نرم افزار برای برآورده کردن این خواسته ها بوجود آمده است. این خواسته ها به نوع نرم افزار و کاربران آن بستگی دارد. این خواسته ها امکانات خاصی را تعریف می کنند که باید توسط سیستم نرم افزاری ارائه شوند. این ها از اسناد خواسته های کاربر استخراج می شوند. خواسته های عملکردی، عملکرد تفضیلی سیستم، ورودی ها و خروجی ها و احیاناً استثناها را شامل می شود. این خواسته ها امکانات خاصی را تعریف می کنند که باید توسط سیستم ارائه شوند.

خواسته های غیر عملکردی
خواسته هایی هستند که مستقیماً به عملکردهای مشخص شده سیستم نرم افزاری مربوط نمی شوند. وجود یا عدم وجود هر کدام از خواسته های غیرعملکردی در ماهیت اصلی پروژه و هدف کلی آن تاثیر گذار نخواهد بود اما این جمله معنیش این نیست که این خواسته ها اهمیت ندارند. به طور مثال ممکن است رابط کاربری برای یک نرم افزار به عنوان خواسته های غیر عملکردی مطرح شود اما اگر رابط کاربری نداشته باشد استفاده از آن بسیار مشکل خواهد بود (مانند سیستم عامل یونیکس/لینوکس). در برخی مواقع ممکن است برآورده نکردن یک خواسته غیر عملکردی به فلج شدن کل سیستم منجر شود.

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

پ.ن : یکی از دوستان باگ کوچکی در برنامه Darkpad پیدا کرده بود که خوشبختانه رفع شد. (با تشکر از امیرحسین عزیز) بنده به اشتباه کتابخانه Qt را در برنامه include کرده بودم که Darkpad هیچ نیازی به آن نداشت. به همین خاطر در هنگام اجرا با خطایی مبنی بر یافت نشدن فایل qtintf70.dll دریافت می کردید. نسخه جدید (0.5 آزمایشی) چنین مشکلی ندارد و در همه سیستم عامل های ویندوز بدون نیاز به نصب اجرا خواهد شد. Darkpad 0.5 را از اینجا دریافت کنید.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

نوشته های دیگر من درباره مهندسی نرم افزار

مسئولیت های تخصصی و اخلاقی یک مهندس نرم افزار

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

  • محرمانگی : یک مهندس نرم افزار، بدون توجه به این که آیا توافق هایی بر سر میزان محرمانگی حاصل شده است یا نه، باید به کارکنان و مشتریان خود احترام بگذارد.
  • صلاحیت : یک مهندسن نباید سطح صلاحیت خود را متفاوت از آن چه که واقعیت دارد، نشان دهد. نباید کارهایی را بپذیرد که در حد صلاحیت او نیست و قادر به انجام آن ها نخواهد بود.
  • حقوق معنوی : یک مهندس نرم افزار باید از قوانین دولتی در استفاده از حقوق معنوی مثل کپی رایت، حق انحصاری اختراع و غیره با خبر باشد (البته در ایران فعلاً صادق نیست). باید توجه داشته باشد که حقوق معنوی مشتریان و کارکنان محفوظ است.
  • عدم سوء استفاده از کامپیوتر : یک مهندس نرم افزار نباید با استفاده از تخصص و تکنیک ها و مهارت های خود از کامپیوتر های دیگران سوء استفاده کند. مثل استفاده از منابع سیستم دیگران و یا ویروسی کردن آن ها.

بدین ترتیب، موسسات و سازمان های تخصصی نقش مهمی دارند. سازمان هایی مثل ACM ، IEEE و BCS دستورالعمل های اخلاقی و رفتاری را منتشر کرده اند و اعضای این سازمان ها هنگام عضویت، تعهد می دهند که این اصول را رعایت کنند. ACM و IEEE سعی کردند دستورالعمل های اخلاقی و تخصصی را بوجود آورند. هدف این دستورالعمل را در زیر شرح می دهیم.

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

اصول اخلاقی مهندسی نرم افزار (ACM/IEEE-1999) مشاهده نسخه اصلی

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

  1. Public : مهندسین نرم افزار به نفع عموم کار می کنند.
  2. Client and Employer : مهندسین نرم افزار طوری عمل می کنند که به نفع کارکنان و مشتریان باشد و با نفع عمومی سازگاری داشته باشد.
  3. Product : مهندسین نرم افزار تضمین می کنند که محصولات و اصلاحات آن ها از بالاترین استاندارد تخصصی پیروی می کنند.
  4. Judgement : مهندسین نرم افزار جامعیت و استقلال را در قضاوت تخصصی خود حفظ می کنند.
  5. Management : مدیران و رهبران مهندسین نرم افزار، توسعه و نگهداری نرم افزار را بر اساس اصول اخلاقی انجام می دهند.
  6. Profession : مهندسین نرم افزار جامعیت و شهرت را مطابق با منافع عموم گسترش می دهند.
  7. Colleagues : مهندسین نرم افزار حامی همکاران خود هستند و با آن ها با عدالت برخورد می کنند.
  8. Self : مهندسین نرم افزار سعی در آموزش بیشتر در حرفه خود دارند و اخلاقیات را نیز رعایت می کنند.

حالا به من بگید چند تا مهندس نرم افزار با مشخصات بالا سراغ دارید؟