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

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

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

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

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

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

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

farasun.wordpress.com

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

farasun.wordpress.com

مطالب مرتبط :

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

زمان بندی پروژه های نرم افزاری

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

farasun.wordpress.com

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

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

فرآیند زمان بندی پروژه های نرم افزاری

فرآیند زمان بندی پروژه های نرم افزاری

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

farasun.wordpress.com

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

farasun.wordpress.com

مطالب مرتبط :