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