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