تحلیل نیازمندیها در مهندسی سیستمها و نرمافزار (system requirement)، تحلیل و تعیین نیازها یا شرایط لازم برای انجام یک پروژه نو را دربرمیگیرد. تحلیل سیستماتیک نیازمندیها را مهندسی نیازمندیها میگویند. تحلیل نیازمندیها از ملزومات مهم موفقیت در یک پروژه محسوب میگردد. نیازمندیهای تحلیل شده باید: مستند، عملی، قابل اندازهگیری، قابل تست و ارزیابی، قابل ردیابی، مربوط به نیازها یا فرصتهای همان کسبوکار باشند که به صورت مشروح با جزئیات کافی بیان شده باشند.
میتوان نیازمندیهای یک سازمان و سیستم را به دو دسته اصلی کارکردی و غیرکارکردی تقسیم نمود. نیازمندی کارکردی (Functional Requirement)، کارکردها و وظایف یک سیستم و اجزای آن را مشخص میکند، کارکرد به عنوان مجموعهای از ورودیها، رفتار و خروجیها تعریف میشود؛ در واقع نیازمندیهای کارکردی وظایفی است که یک سازمان موظف به انجام آن میباشد. از طرفی نیازمندیهای غیر کارکردی (Non-Functional Requirement) به ویژگیهای کیفی، محدودیت و قیود سیستم اطلاق میشود که در توسعه معماری و طراحی سیستم باید مدنظر قرار گیرند.
نیازمندیهای کارکردی
نیازمندیهای کارکردی عملکرد و عملیات خاصی را که نرمافزار باید انجام دهد، توصیف میکنند. این نیازمندیها بر روی اقدامات و فعالیتهایی که سیستم باید انجام دهد، تمرکز دارند، مانند محاسبات، پردازش دادهها و تعامل با کاربران یا سایر سیستمها.
نمونهای از نیازمندیهای کارکردی عبارتند از:
کاربران باید بتوانند با استفاده از نام کاربری و رمز عبور وارد سیستم شوند
سیستم باید به کاربران اجازه ورود اطلاعات به فیلدهای تعریف شده را بدهد
سیستم باید گزارشهای ماهانه فروش را به صورت پیدیاف تولید کند
نیازمندیهای غیرکارکردی
نیازمندیهای غیرکارکردی، گاهی به عنوان “ویژگیهای کیفی” یا “محدودیتها” نیز شناخته میشوند، ویژگیها یا ویژگیهایی را تعیین میکنند که سیستم باید داشته باشد یا نشان دهد. این نیازمندیها بر روی نحوه عملکرد سیستم تمرکز دارند تا اینکه سیستم چه کاری انجام میدهد.
نمونههایی از نیازمندیهای غیرکارکردی عبارتند از:
سیستم باید به درخواستهای کاربر در دو ثانیه زمان بیشینه در شرایط بار مشترک پاسخ دهد
رمزهای عبور کاربر باید با استفاده از الگوریتمهای رمزنگاری استاندارد صنعتی رمزگذاری شوند
رابط کاربری سیستم باید ساده و آسان برای ملاحظه و مرور با برچسبها و پیامهای خطا واضح باشد
تفاوت نیازمندیهای کارکردی و غیرکارکردی
- تمرکز: الزامات عملکردی بر آنچه سیستم انجام می دهد تمرکز می کنند، در حالی که الزامات غیر عملکردی بر نحوه عملکرد سیستم تمرکز می کنند
- ماهیت: الزامات عملکردی اعمال یا رفتارهای خاصی هستند که سیستم باید انجام دهد، در حالی که الزامات غیرعملکردی کیفیت ها یا ویژگی هایی هستند که سیستم باید داشته باشد
- ملموس بودن: الزامات عملکردی اغلب صریح و به راحتی قابل مشاهده هستند، در حالی که الزامات غیرعملکردی اغلب ضمنی هستند و ممکن است نیاز به تفسیر یا توضیح داشته باشند
- قابلیت اندازهگیری: الزامات عملکردی را می توان به راحتی بر حسب اینکه آیا آنها به درستی اجرا می شوند یا نه اندازه گیری کرد، در حالی که الزامات غیر عملکردی ممکن است به ارزیابی ذهنی یا معیارهای خاصی برای ارزیابی نیاز داشته باشند
Alain Abran, James W. Moore; editors Pierre Bourque, Robert Dupuis, ed. (March 2005). “Chapter 2: Software Requirements”. Guide to the software engineering body of knowledge. Los Alamitos, CA: IEEE Computer Society Press.
- Bass, L. (2007), Software architecture in practice. Pearson Education India
- Shaukat, k. (2014). Non Functional Requirement. Slideshare.net