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