مهندسی نرم افزار UML ویدیو کلوب بخش یک
نرم افزار ویدئوکلوپ
در این بخش به بررسی کلی سیستم پرداخته شده است و توضیح مختصری از کارهای انجام شده می آید. نرم افزار “ ویدئو کلوپ “ به منظور مدیریت بر سیستم کرایه و اجاره فیلمهای یک ویدئو کلوپ طراحی و پیاده سازی شده است. این سیستم کلیه عملیات مورد نیاز که قبلا در قالب سیستم سنتی که به صورت دستی و کاغذی انجام می گرفت به صورت خودکار و با قابلیتهای بسیار بیشتر در اختیار کاربران قرار می دهد.
قابلیت بارز این نرم افزار منطبق بودن بالای آن بر نوع عملکرد ویدئوکلوپها و رفع کلیه نیازهای موجود در آنها می باشد.
سیستمهای موجود در زمانهای گذشته تماما به صورت دستی بود و این مساله خود موجب بروز اختلالات بسیار زیادی گردیده بود.
در گذشته، عدم وجود استانداردها كار پشتيباني و نگهداري از سيستم را دچار مشكل مينمود .متخصصين سيستمهاي اطلاعاتي به منظور مرتفعساختن مشكلات، به اين نتيجه رسيدند كه ايجاد و توسعه نرمافزار، نيازمند يك روش مهندسي ميباشد.
هدف اين كار، تمركز بر روي ايجاد تكنيكهاي مشترك، متدولوژيهاي استاندارد و ابزارهاي خودكار با روشي مشابه روشهاي مهندسي سنتي بود.
به دلیل وجود برخی از دلایل ، معمولا شرکتها و ادارات به کندی دست از سیتمهای قدیمی خود بر می دارند و به سمت سیستمهای جدید می روند که در ذیل به برخی از آنها اشاره شده است:
1- هزينه نگهداری نسبتا بالا که البته در برابر مزایای این گونه سیستمها قابل مقایسه با سایر سیستمها دستی نمی باشد.
2- فراهمكردن يك ابزار براي يك تحليلگر سيستم مبلغي بين 5000 تا 15000 دلار در سال هزينه دارد.
3- چگونگي ارزيابي سازمانها نسبت به برگشت سرمايه آنها
4- بيشترين فوايد حاصل از بكارگيري این سیستمها ، در آخرين مراحل چرخه به دست ميآيد
5- مشكلات بهرهوري
6- عدم توانايي برخي از ابزارها در به اشتراكگذاري اطلاعات در ميان ابزارهاي مختلف
7- مشكلبودن فراهمآوردن ابزارهاي مختلف براي تمام مراحل تجزیه و تحلیل و طراحی
استفاده از این سیستم مکانیزه ویدئوکلوپ مزایای زیادی دارد. قسمتی از این مزایا عبارتند از:
دقت بالا در محاسبه هزینه ها
سرعت بالا در پیدا کردن اطلاعات مربوط به یک مشتری یا یک فیلم
جلوگیری از اتفاقات ناگهانی
حذف هزینه های اضافی مانند خرید کاغذ و اخقصاص فضای بایگانی
جلوگیری از بایگانی تعداد زیادی کاغذ و زونکن
سرعت در سرویس دهی به ارباب رجوع و . . .
بسیاری از افراد دید بسیار محدودی از نرم افزار دارند و معمولا آن را درک نمی کنند. به خاطر مجازی و نا ملموس بودن نرم افزار، باورهای غلطی بین مردم جا افتاده است. خیلی ها صنعت نرم افزار را بسیار ساده می پندارند و اصلا اهمیتی برای آن قائل نیستند. در کشور ما این موضوع کاملا مشهود است. البته نمی توان از مردم عامی و شاغلین کم سواد در این زمینه انتظار زیادی داشت. اما این موضوع در محیط های دانشگاهی ما نیز بسیار رایج است. به طوری که این رشته را بسیار کم ظرفیت و ساده می دانند.
مهندسی نرم افزار یک نظام مهندسی است که با تمام جنبه های نرم افزاری محصول، از مراحل اولیه تعیین مشخصات سیستم تا نگهداری سیستم، سر و کار دارد. مهندسین نرم افزار اجزای سیستم را وادار به کار می کنند. آنها تئوریها، روش ها و ابزارها را در جاهای مناسبی به کار می گیرند و سعی در تحلیل و تجزیه سیستم نرم افزاری دارند. در یک جمله هدف مهندسی نرم افزار توسعه سیستم های نرم افزاری با کارکرد مناسب و هزینه مناسب است.
مهندسی نرم افزار، تقریبا یک نظام جوان است. نظریه “مهندسی نرم افزار” در سال 1968 در کنفرانسی تحت عنوان “بحران نرم افزار” مطرح شد. در آن زمان بحران نرم افزار ناشی از معرفی نسل سوم سخت افزار کامپیوتر بود که قدرت فوق العاده ای داشت. قدرت آنها منجر به این شد که برنامه های کاربردی که تا آن زمان غیرممکن به نظر می رسیدند، امکان پذیر شوند. نرم افزارهای حاصل نسبت به سیستم های نرم افزاری قبلی پیچیده تر و بزرگتر بودند. تجربیات اولیه در ساخت این سیستم ها نشان داد که رهیافت غیررسمی برای توسعه نرم افزار به اندازه کافی خوب نبوده است. انجام پروژه های بزرگ، سال ها طول می کشید. هزینه آنها بیش از هزینه پیش بینی شده بود، قابل اعتماد نبودند، نگهداری آنها دشوار و کارایی آنها اندک بود. توسعه نرم افزار در بحران به سر می برد. هزینه های سخت افزار در حال کاهش و هزینه های نرم افزار به سرعت در حال افزایش بود. تکنیک ها و روش های جدیدی نیاز بود تا پیچیدگی ناشی از سیستم های نرم افزاری بزرگ را کنترل کند.
این تکنیک ها به عنوان بخشی از مهندسی نرم افزار محسوب می شدند، گرچه امروزه استفاده همگانی ندارند. به هر حال، هنوز در ساخت نرم افزارهایی که خواسته های کاربر را برآورده کند، به موقع تحویل داده شوند و با بودجه پیش بینی شده خاتمه یابند، مشکلاتی وجود دارد. بسیاری از پروژه های نرم افزاری هنوز دارای مشکلاتی هستند و این موضوع منجر به این شد که بعضی از مفسران (پرسمن 1997) گوشزد کنند که مهندسی نرم افزار در حالت وخیمی به سر می برد.
با افزایش توانایی ما در تولید نرم افزار، برپیچیدگی های نرم افزار فائق می آییم. فناوری های ناشی از همگرایی سیستم های کامپیوتری و ارتباطی، تقاضای جدیدی را در مهندسی نرم افزار مطرح کرده است. به همین دلیل و با توجه به این که اغلب موسسات تکنیک های مهندسی نرم افزار را به خوبی به کار نمی گیرند، هنوز مشکلاتی وجود دارد، اما امیدی برای بهبود این وضعیت وجود دارد.
از سال 1967 در زمینه مهندسی نرم افزار پیشرفت زیادی کردیم و از آن زمان توسعه مهندسی نرم افزار، در نرم افزارها تاثیر بسزایی داشته است. درک بهتری از فعالیت های موجود در توسعه نرم افزار پیدا کردیم. روش های موثری برای تعیین مشخصات، طراحی و پیاده سازی نرم افزار ارائه شده است. نشانه گذاری ها و ابزارهای جدید، از تلاش مورد نیاز برای تولید سیستم های نرم افزاری بزرگ و پیچیده کاسته اند.
مهندسین نرم افزار می توانند به موفقیت های خود افتخار کنند. بدون نرم افزارهای پیچیده، فضای تحقیق نخواهیم داشت، از اینترنت و ارتباطات راه دور بی بهره خواهیم بود، و تمام مسافرت ها خطرناک و گران خواهند بود. مهندسی نرم افزار در طول عمر کوتاهش اثرات زیادی روی زندگی تمام انسان ها گذاشته است.
مهندسین نرم افزار فقط با فرآیندهای تکنیکی توسعه نرم افزار سر و کار ندارند، بلکه با فعالیت هایی مثل مدیریت پروژه نرم افزاری و توسعه ابزارها، روش ها و تئوری هایی برای پشتیبانی محصول نرم افزاری سر و کار دارند. به طور کلی مهندسین نرم افزار یک روش نظام مند و سازمان یافته را در کارشان پذیرفته و این روش موثری برای تولید نرم افزار با کیفیت است. اما مهندسی به انتخاب مناسب ترین روش در مجموعه ای از پدیده ها سر و کار دارد، و در بعضی از پدیده ها نیاز به رهیافت خلاق و غیر رسمی است.
بسياري از اشخاص مهندسي نرم افزار را با علم کامپيوتر يکي مي دانند. اين ديد بسيار محدود کننده و غلط است. در واقع مهندسي نرم افزار را مي توان مستقل از علم کامپيوتر دانست. هر چند پيش نياز کاري مهندسين نرم افزار آشنايي با علوم کامپيوتري است اما اساسا، علم کامپيوتر با تئوريها و روش هايي سر و کار دارد که به کامپيوترها و سيستم هاي نرم افزاري مربوط مي شود، در حالي که مهندسي نرم افزار با مسائل عملي تعيين مشخصات، تحليل، پياده سازي و توليد نرم افزار سر و کار دارد. البته بديهي است که مهندسي نرم افزار و علم کامپيوتر رابطه تنگاتنگي با هم دارند و پيشرفت در علم کامپيوتر نياز به پيشرفت علم نرم افزار را مي طلبد. داشتن برخي از علوم کامپيوتر براي مهندسين نرم افزار ضروري است(همان طور که دانش فيزيک براي مهندسين الکترونيک ضرروي است).
در حالت ايده آل، کل مهندسي نرم افزار از تئوري هاي علم کامپيوتر ساخته مي شود، اما واقعيت چيز ديگري است. مهندسين نرم افزار اغلب بايد از رهيافت هاي ذهني براي توسعه نرم افزار استفاده کنند و احتمالا ايده اي که تا به حال شکل نگرفته را عملي کنند. تئوري هاي علم کامپيوتر را هميشه نمي توان به مسائل واقعي پيچيده اي اعمال کرد که نيازمند راه حل های نرم افزاري اند.
در واقع مهندسين نرم افزار بايد مسائل پيچيده واقعي را با تفکر نرم افزاري مبتني بر علم کامپيوتر حل کنند. اين گونه مسائل واقعي کاملا با تئوري هاي علم کامپيوتر در تناقض است و در اين ميان وظيفه مهندسين نرم افزار تحليل و رفع تناقضات مسئله با علوم کامپيوتري و ايجاد سيستم نرم افزاري مبتني بر علم کامپيوتر مي باشد.
به طور مثال ساخت يک نرم افزار اتوماسيون اداري که قرار است تمامي سيستم هاي يک سازمان بزرگ از جمله سيستم حسابداري، توليد ، فروش ، انبارداري وغيره را پياده سازي نمايد، نياز به داشتن دانش مهندسي نرم افزار دارد. چنين سيستمي را نمي توان با تئوري و منطق کامپيوتري پياده سازي نمود چون این گونه سیستم ها نياز به تحليل هاي تشريحي دارند که با علوم کامپيوتر که فقط قادر با حل مسائل منطقي است کاملا در تضاد مي باشد.
در کشور ما صنعت نرم افزار بسیار نوپا و جوان است. هنوز فرهنگ نرم افزاری در بین مردم کشور ما جایی ندارد. میانسالان ما با نرم افزار و تکنولوژی های روز از جمله اینترنت کاملا غریبه اند. هنوز بسیاری از ادارات ، شرکت ها و فروشگاه ها اطلاعات خود را به روش دستی روی کاغذ مدیریت می کنند و به اهمیت و مزایای اتوماسیون اداری پی نبرده اند. امیدوارم نوشتار زیر در درک بهتر موجودیت “نرم افزار” به شما کمک کند.
بسیاری از مردم، نرم افزار را با برنامه های کامپیوتری یکسان می دانند. در واقع این دید، بسیار محدودکننده است. نرم افزار فقط برنامه های کامپیوتری نیست، بلکه تمام مستندات و داده های پیکربندی را که برای حیات این برنامه ها ضروری اند را شامل می شود. سیستم های نرم افزاری معمولا شامل تعدادی برنامه، فایل های پیکربندی جهت حفظ تنظیمات، مستندات سیستم جهت تشریح ساختار نرم افزار، مستندات و راهنمای کاربر برای تشریح چگونگی کار با سیستم می باشد.
محصولات نرم افزاری به دو نوع کلی دسته بندی می شوند :
1- محصولات کلی : این ها سیستم های مستقلی اند که توسط یک شرکت تولیدکننده نرم افزار ساخته می شوند و به بازار عرضه می گردد و مشتریان برحسب نیاز آنها را تهیه می کنند. این گونه محصولات شامل پکیج های آماده نرم افزاری مثل واژه پردازها و نرم افزارهای حسابداری است.
2- محصولات سفارشی : این ها محصولات نرم افزاری هستند که توسط مشتری خاصی سفارش داده می شوند. این گونه محصولات توسط پیمانکاران نرم افزاری برای مشتری سفارش دهنده ایجاد می شوند.
تفاوتی که میان این گونه محصولات وجود دارد این است که شرکتی که محصولات کلی را تولید می کند مشخصات نرم افزار را کنترل می کند، اما در محصولات سفارشی تعیین مشخصات و کنترل نرم افزار توسط سازمان خریدار انجام می شود.
از نظر مجازی، اکنون تمام کشورهای وابسته به سیستم های نرم افزاری پیچیده اند. تمامی سیستم های دولتی و تجاری بر پایه سیستم های کامپیوتری بنا شده اند. نرم افزار در این سیستم ها، بخش بسیار زیادی از هزینه های کل سیستم را به خود اختصاص میدهد. بنابراین، تولید نرم افزار با هزینه مناسب، در عملکرد اقتصاد ملی و بین المللی بسیار موثر است.
نرم افزار انتزاعی و ناملموس است و بوسیله مواد اولیه که ناشی از قوانین فیزیکی یا فرآیندهای ساخت است، محدود نمی شود. چون محدودیت های فیزیکی در نرم افزار وجود ندارد، مهندسی نرم افزار ساده به نظر میرسد. از طرف دیگر عدم وجود محدودیت های طبیعی به معنای این است که نرم افزار می تواند کاملا پیچیده باشد و در نتیجه درک آن بسیار مشکل است.
مدل فرآیند نرم افزار، نمایش انتزاعی فرآیند نرم افزار است. هر مدل فرآیند، فرآیند را از دیدگاه خاصی نمایش می دهد و در نتیجه فقط بخشی از اطلاعات راجع به آن فرآیند را در اختیار قرار می دهد. در این بخش تعدادی از مدلهای کلی فرآیند را معرغی می کنم و آنها را از دیدگاه معماری نمایش می دهدم. یعنی چارچوب فرآیند را خواهیم دید نه جزئیات فعالیت های خاص را.
این مدلهای کلی، توصیف قطعی فرآیند نرم افزار نیستند، بلکه انتزاعهای مفیدی اند که برای توصیف رهیافتهای مختلف توسعه نرم افزار به کار گرفته می شوند. برای بسیاری از سیستم های بزرگ، فقط از یک فرآیند نرم افزار استفاده نمی شود، برای توسعه بخش های مختلف سیستم از فرآیندهای مختلفی استفاده می شود.