بعضی اوقات فیلمهای مستندی در مورد نحوه تولید بسیاری از محصولات از رسانهها پخش میشود. این نوع مستندها معمولا علاقهمندان خاص خود را دارد. دیدن مراحل ساخت محصولاتی كه ما هر روز از آنها استفاده میكنیم جالب توجه است. نرمافزارها هم مانند سایر محصولات چرخه تولید خاص خود را دارند و برای تولید آنها از روشهای مختلفی استفاده میشود. انتخاب یك روش خوب برای تولید نرمافزار به مواردی مانند نوع، حجم و پیچیدگی آن بستگی دارد. در این بخش قصد داریم چند روش تولید نرمافزار را معرفی كنیم.
ساختن یك نرمافزار مانند ساختن یك خانه به نقشه نیاز دارد و باید از قبل همه چیز را پیشبینی كرد. برای ساختن خانهای یك طبقه و كوچك شاید محاسبات پیچیده و نقشههای حرفهای ضروری نباشد، در نرمافزارهای كوچك نیز همین طور است؛ مثلا برای ساختن یك نرمافزار ماشین حساب فقط لازم است عملیاتی را كه میخواهیم ماشین حساب انجام دهد، در ذهن داشته باشیم و با یكی از زبانهای برنامهنویسی آشنا باشیم تا بتوانیم یك نرمافزار ساده بسازیم. طراحی و پیادهسازی نرمافزارهای متوسط و بزرگ مانند ساختن مجتمع مسكونی و برج است. برای ساختن آنها محاسبات و پیشبینیهای بیشتری نیاز است؛ مثلا برای تولید یك سیستمعامل یا یك سیستم یكپارچه مدیریتی لازم است همه چیز دقیق محاسبه و اهداف نرمافزار تعیین شود.
در اینجا تولید نرمافزار را با ساختن ساختمان مقایسه كردیم، ولی یك فرق اساسی بین این دو وجود دارد و آن، اینكه در تولید نرمافزار به دلیل قابل مشاهدهنبودن روند رشد پروژه به صورت فیزیكی به ابزارهای خاصی برای اندازهگیری روند پیشرفت پروژه نیاز داریم. در ادامه به معرفی چند روش تولید نرمافزار میپردازیم.
روش آبشاری
روش آبشاری، روشی سنتی است. در این روش مراحل به صورت ترتیبی انجام میشود، ابتدا نیازها برآورد شده، سپس طراحی نرمافزار انجام میشود. در مرحله بعد پیادهسازی به وسیله زبانهای برنامهسازی صورت میگیرد و نرمافزار تست میشود و در نهایت بهدست مشتری میرسد، تجربه نشان داده است كه این روش میتواند برای نرمافزارهای كوچك جوابگو باشد. با پیشرفت روشهای تولید، این روش منتقدان زیادی پیدا كرد و امروزه در كمتر پروژهای با دید مهندسی از آن استفاده میشود.
روش افزایشی
در این روش یك نمونه با استفاده از روش آبشاری تهیه و در ادامه سعی میشود با توجه به نظرات مشتری، نرمافزار تكمیل شود. در واقع تا كامل شدن محصول چند روش آبشاری كوچك اجرا میشود.
روش سریع
همانطور كه از نام این روش پیداست تولید یكنمونه از محصول نرمافزاری در كمترین زمان، هدف روش سریع است. در این روش كمتر به مباحث قبل از تولید پرداخته میشود و این موضوع اجازه میدهد تا نرمافزار با سرعت بالایی تولید شود؛ ولی ممكن است همین موضوع باعث وجود نقصهای فراوان در محصول شود؛ بنابراین آشنایی قبلی از نیازهای كاربر یك امر مهم در این روش است.
روش نمونهای
در این روش سعی میشود در ابتدا یك نسخه از نرمافزار تهیه شود و با توجه به نیازمندیها نسخه اولیه اصلاح شود و نسخههای كاملتر تهیه شود. این روش به تنهایی قابل استفاده نیست؛ ابتدا باید كار را با یكی از روشهای دیگر شروع كرد سپس وارد روش نمونهای شد. از ویژگیهای روش نمونهای علاوه بر اینكه از نظرات كاربر استفاده میكند، این است كه سعی دارد با تقسیم پروژه به قسمتهای كوچكتر ـ كه راحت تر قابل تغییر است ـ ریسك پروژه را كمتر كند.
روشهایی كه در بالا ذكر شد بیشتر برای نرمافزارهای كوچك مورد استفاده قرار میگیرد و كمتر از مستندسازی در آنها استفاده میشود. امروزه مستندسازی یك از بخشهای مهم مهندسی نرمافزار به حساب میآید. مستندسازی میتواند در مواردی همچون شناخت صحیح نیازمندیها، پیشبینی ریسكها، چگونگی كیفیت مورد نظر، استفاده مجدد از تجربیات یك پروژه و... مفید واقع شود.در ادامه به معرفی دو نوع متدولوژی كه امروزه بیشتر برای تولید نرمافزار استفاده میشود، میپردازیم.
متدولوژیهای سنگین
شناختهشدهترین متدولوژی سنگینRational Unified Process است. RUP توسط شركت رشنال برای مدیریت پروژههای نرمافزاری ارائه شد و هم اكنون پركاربردترین فرآیند تولید و توسعه سیستمهای نرمافزاری است، این متدولوژی برای انواع پروژه با اندازههای كوچك تا بسیار بزرگ قابل استفاده است، ولی به دلیل وجود مستندسازیهای فراوان بیشتر در پروژههای بزرگ استفاده میشود. از محاسن این روش میتوان به تحلیل دقیق ریسكهای پیش روی پروژه، بررسی دقیق نیازمندیها و فازبندی دقیق پروژه اشاره كرد.
مستندسازی در RUP به حدی دقیق است كه در صورت انجام صحیح كمتر به ایجاد تغییر نیاز خواهد بود، برخی این مستندسازی زیاد را مفید نمیدانند ولی در پروژهایی با اندازههای خیلی بزرگ نبود مستندات مشكلساز خواهد بود.
متدولوژیهای سبك (Agile)
متدولوژی سبك، گروهی از متدهای توسعه نرمافزار است كه در واقع در مقابل متدولوژیهای سنگین به وجود آمد و بر اساس تكرار و افزایش بنا نهاده شده است. ویژگی این متدها انعطافپذیری آنها در برابر تغییرات، قابلیت بالای كار گروهی و همچنین مستندسازی كمتر نسبت به RUP است. دو نمونه از این متدولوژیها عبارتند از:
(XP (eXtended Programming: در XP تاكید بر رضایت مشتری و كار تیمی است، برنامهنویسان، مشتری و مدیر پروژه جزئی از تیم هستند. مشتری با ارائه بازخورد خود از محصول، در تكمیل آن كمك میكند.
Scrum: این روش امروزه بسیار مورد استقبال بوده و خیلی از شركتهای بزرگ به سمت آن رفتهاند؛ زیرا برای پروژههای بزرگ و كوچك قابل اجراست و مانند XP توانسته رضایت مشتری را جلب كند.
ابزارها
با استفاده از روشها و متدولوژیها مسیر كلی پروژه معلوم و تحلیلها انجام میشود. در این میان ابزارهایی وجود دارد كه میتواند با ارائه دیاگرامهای دیداری و مفهومی مسیرها و تحلیلها را به صورتی قابل فهم مدل كند.
UML یك زبان مدلسازی است كه با استفاده از آن میتوان همه سناریوهای موجود در نرمافزار را مدل كرد و طرحی دقیق از نحوه پیادهسازی سیستم ارائه داد.
انتخاب زبان برنامهنویسی
انتخاب زبان برنامهنویسی و در صورت نیاز سیستم مدیریت پایگاه داده مناسب برای تولید نرمافزار یكی از تصمیمهای مهم به شمار میرود. هر زبان ویژگیهای خاص خود را دارد؛ مثلا اگر قرار است برنامهای بنویسید كه محاسبات ریاضی انجام دهد، بهتر است بروید سراغ Prolog یا ++C زیرا ابزارهای خوبی در این زمینه دارد. اگر قصد تولید نرمافزار اداری دارید Visual Studio مایكروسافت ابزارهای مناسبی در اختیارتان قرار میدهد. انتخاب زبان مناسب به متغیرهای زیادی وابسته بوده و برای هر پروژه متفاوت است. یك انتخاب غلط میتواند به شكست پروژه منتهی شود.
حمید خدابندهلو