در عصر اطلاعات نمی توان علم یا صنعتی را یافت که آثار فن آوری اطلاعات در آن دیده نشود . فن آوری اطلاعات علاوه بر این که به عنوان یک فن آوری زیر بنایی قادر است که ابعاد دیگر زمینه ها را دگرگون کند ( به گونه ای که نگرش فعلی به این زمینه ها را با دگرگونی کامل رو به رو سازد) ، بلکه به عنوان یک فن آوری مستقل و قدرتمند نیز قادر به خودنمایی است. به طور کلی می توان این فن آوری را در قالب پنج رکن اساسی آن در نظر گرفت که هر یک به نوبه خود از اهمیت و جایگاه ویژه ای برخوردارند . از این میان نرم افزار می تواند به عنوان یک رکن اساسی با اهمیت ویژه ای مطرح باشد . در چند سال اخیر شاهد رشد مناسب این صنعت در کشور بوده ایم (هر چند که با اخذ تصمیمات و سیاست های صحیحی می توانستیم با هدف مند کردن این رشد، جایگاه واقعی این صنعت را حتی در تجارت جهانی به خوبی نشان دهیم و از آن به بهترین نحو استفاده کنیم ). با وجود این ، اگر چارچوب دقیق و کارآیی برای آن در کلیه ابعاد به وجود نیاوریم، فرصت خوبی را برای فراهم آوردن بسترهای مناسب در رشد و بهره برداری لازم از آن ،از دست خواهیم داد . حجم زیاد فعالیت های نرم افزاری در کشور و داشتن پتانسیل های کافی برای رونق بخشیدن به این صنعت در راستای گرفتن سهم مناسبی از بازارهای خارجی ، ضرورت تولید صحیح و بهینه را در این صنعت مطرح می کند .
توسعة روزافزون فن آوری اطلاعات در ابعاد مختلف ، سبب شده است که در ارکان خود این فن آوری نیز دگرگونی شگرفی پدید آید و آن را با جهش های غیر قابل تصوری پیشرفته سازد. در حقیقت رشد این فن آوری سبب تولید ابزرهای جدید و سریعتر ، حتی تغییر نگرش در تولید محصولات نرم افزاری شده است . از این میان می توان به تولید ابزارهای مهندسی نرم افزار در طیف وسیع اشاره کرد .این ابزارها در هر یک از مراحل و بخش های تحلیل ، طراحی، پیاده سازی ،آزمایش ، نگه داری ، مدیریتی و غیره تأثیر بسیار گذاشته است .
با استفاده از هر یک از این ابزارها دقت و سرعت تولید محصولات نرم افزاری بسیار زیاد شده است ، در جامعة کنونی که پروژه های یک ساله از پروژه های بلند مدت نرم افزاری محسوب می شود و پروژه های بیشتر از یک سال را محکوم به شکست می دانند ( با توجه به تغییرات سریع و بنیادین فن آوری اطلاعات و آثاری که بر روی دیگر زمینه ها دارد )، این ابزار توانسته است با سرعت بخشیدن به انجام هر یک از مراحل فوق بتواند تمهیداتی فراهم کند که پروژه های ملی و بزرگ در چارچوب های زمانی مشخص و معقول تعریف و انجام شوند .
با توجه به مطالب ارائه شده واهمیت موضوع نرم افزار و تولید بهینه آن در کشور ، دبیرخانه شورای عالی انفورماتیک برای ترویج فرهنگ به کارگیری مفاهیم و ابزارهای نوین در کلیة زمینه های فن آوری اطلاعات و آشنا سازی جامعة انفورماتیک( به خصوص دانشجویان و تولید کنندگان جوان ) به اهمیت مهندسی نرم افزار و اصول آن و ابزارهای توسعة نرم افزار اقدام به تهیةمطالبی در این زمینه کرد . به همین منظور از شرکت های مهم نرم افزاری کشور خواسته شد اطلاعات مربوط را به دبیر خانه ارسال کنند .( توجه کارفرمایان در ضرورت به کارگیری ابزارهای کمکی برای تولید و توسعة نرم افزار به خصوص در پروژه های بزرگ بسیار حائز اهمیت است که امیدواریم این مهم نیز با ارائه مطالب مختصر فوق ، برآورده شود ).
در این جا نیز از کلیة استادان ، صاحب نظران، دیگر شرکت ها و مؤسسات تولیدی نرم افزار می خواهیم که با ارسال اطلاعات مربوط در این زمینه به دبیرخانه شورا ، ما را در هر چه بهتر عرضه کردن ابزار مهندسی نرم افزار و شناساندن توان واقعی تولید نرم افزار کشور به جامعه ، یاری دهند .
در همین راستا طی سلسله مقالاتی ، پس از بیان مقدمه ای بر ابزار های مهندسی نرم افزار ، به معرفی ابزارهایی که بوسیلة شرکت های داخلی به کار گرفته می شوند ، خواهیم پرداخت . این معرفی شامل کلیات زیر است :
ـ معرفی ابزار و شرکت تولید کننده و ارائه دهندة آن
ـ تاریخچة کاربرد یا عرضة ابزار در شرکت
ـ امکانات قابل ارائه ابزار ( چه فعالیتی را انجام می دهد و چگونه و غیره )
ـ مشخصات فنی ( بستر عملیاتی و غیره )
ـ مختصری از نحوة کار با ابزار
ـ پروژه های انجام شده با این ابزار
لازم به ذکر است که اطلاعات بیان شده با توجه به مجموعه اطلاعاتی است که از طریق شرکت ها به این دبیرخانه ارسال شده است ( با ذکر نام فرستنده ).بنابراین میزان بررسی و عمق مطالب مطرح شده بستگی به اطلاعاتی دارد که شرکت ها در مورد نرم افزار مورد استفاده یا عرضة کردة خود برای ما فرستاده اند ( با تشکر فراوان از کلیه شرکت هایی که اطلاعات خود را برای این دبیرخانه ارسال داشته اند ). از طرف دیگر ، ابزار های مطرح شده فقط در قالب ابزارهایی هستند که در چارچوب مراحل تحلیل ، طراحی و پیاده سازی مورد استفاده یا عرضة شرکت قرار گرفته اند .به همین خاطر از میان ابزارهایی که صرفاً جهت مدیریت پروژه ها ،آزمایش ، برنامه سازی و غیره در شرکت ها مورد استفاده قرار گرفته است ، خودداری کرده ایم . حال به عنوان اولین نوشته از این مجموعه به معرفی اجمالی ابزارهای مهندسی نرم افزار خواهیم پرداخت . در این مقوله سعی بر آن است که با ارائه مطالبی پیرامون این ابزار از جهت تعریف ، دسته بندی ، نحوة کلی عملکرد و غیره ، مختصر شناختی از آنها عرضه شود .
1ـ معرفی
به گفتة فرهنگ لغات نیوتن تله کام « ابزار مهندسی نرم افزار یا مهندسی نرم افزار به کمک کامپیوتر ، روش جدید مؤثر تر و سریع تر برای تهیة نرم افزارها در کاربرد های متفاوت است ». این ابزار در مراحل مختلف تولید سیستم های طلاعاتی از جمله تحلیل ، طراحی و برنامه سازی به کارگرفته می شوند . برای مثال فرهنگ های داده و ابزار های نمودار کشی به تحلیل کمک می کنند و در مرحله طراحی ، ابزارهای طراحی و تولید سیستم های کاربردی ، مرحله برنامه سازی را سریع تر می سازند . علاوه بر آن به وسیلة این ابزارها مرحلة سخت ،زمان گیر و غیر دوست داشتنی مستند سازی می تواند به راحتی انجام شود . روند تولید این ابزارها به سمتی است که بتواند کلیة مراحل تولید نرم افزار بالاخص برنامه سازی را پشتیبانی کند . ابزارهای جدید برنامه سازی مانند :Visual Basic وpower builder و… که به (Rapid application development)RAD معروف هستند ، از نسل های جدید این ابزارها محسوب می شوند.
امتیازات استفاده از ابزار ها بسیار زیاد و متنوع است ، اما مهم ترین آن ها
را می توان به صورت زیر خلاصه کرد :
1ـ افزایش بهره وری
2ـ بهبود کنترل کیفیت
3ـ مستند سازی بهتر
4ـ سرعت استفاده از استانداردها
5ـ محدود کردن افزونگی ( زیرا تغییرات اصلی می تواند به راحتی اعمال شود)
6ـ به اشتراک گذاشتن نمودارهای گردش داده و فرهنگ داده ها و… در بیشتراز یک سیستم
7ـ توانایی شناسایی توافق ها در طراحی یک سیستم
2ـ انواع ابزارها ( از دیدگاه های مختلف )همان طور که گفته شد ابزارها می توانند در محدودة وسیعی از تولید و نگه داری یک سیستم ( یا مجموعه ای از سیستم ها ) مفید واقع شوند ، اما به کارگیری این ابزارها در مراحل تحلیل و طراحی سیستم ها بالاخص سیستم های بزرگ بسیار حائز اهمیت و گاه ضروری است . به طور کلی ابزارهایی را که در این مراحل به کار گرفته
می شوند، می توان به دو گروه عمده تقسیم کرد :
الف ـ ابزارهای وابسته به یک فراروش یا روش خاص،
ب ـ ابزارهای غیر وابسته به یک فراروش یا روش خاص ، گروه اول ابزارهایی هستند که به تولید کننده نرم افزار کمک می کنند که در راستای به کارگیری یک فراروش در تهیه نرم افزار ، بتوانند از امکانات این ابزار برای تسریع در عمل ، سهولت کار و غیره کمک بگیرند . بنابراین ابزارهای مربوط هنگامی مفیدند و به کار گرفته می شوند که تولید نرم افزار بر اساس فراروش یا روش مربوط پیش می رود . البته توجه به این نکته ضروری است که این ابزارها می توانند بخش با بخش هایی از فعالیت های فراروش را برای انجام کار مد نظر داشته باشند . به عبارت دیگر ، اگر ابزاری بر اساس فراروش خاصی تهیه شده باشد ( یعنی این که بتواند تکنیک های به کار رفته دراین فراروش را پشتیبانی کند )، به این مفهوم نیست که کلیة مراحل ، تکنیک ها ، علایم و… این فراروش را پشتیبانی کند ( می تواند برخی از آن ها را در بر داشته باشد )
گونه ای دیگر از ابزارها هستند که بدون در نظر گیری فراروش یا روش خاصی ، تنها می توانند امکاناتی در اختیار تولید کنندة نرم افزار قرار دهند که بتواند در مراحل اجرای پروژه از تکنیک ها، علایم و دیگر امکانات این ابزارها استفاده کند . برای مثال ابزارهایی که می توانند نمودار گردش داده یا DFD تهیه کنند ، می توانند در مقاطع مختلف و برای فراروش ها و پروژه های گوناگون به کار گرفته شوند .از طرف دیگر ابزارهای مهندسی نرم افزار را می توان بر اساس این که در چه مقطعی از چرخة حیات نرم افزار به کار گرفته می شود ،تقسیم بندی کرد . از این دیدگاه ، ابزارهایی که قسمت های اولیة چرخة عمر نرم افزار را پشتیبانی می کنند ( در انجام این قسمت از پروژه ها به کار می آیند )، به ابزارهای Upper-CASE و ابزارهایی که قدم های نهایی چرخة عمر را پشتیبانی می کنند ، به ابزارهای Lower-CASE معروف هستند .
اسمیت و امان نیز به گونه ای دیگر ابزارها را تقسیم کرده اند . آن ها نام های ابزارهای افقی و عمودی را برگزیده اند .
ابزارهای افقی : این ابزارها ارتباط خودکار بین مراحل مختلف چرخة عمر را پشتیبانی می کنند و شامل مدیریت پروژه ، ابزارهای مدیریت ساختاربندی ، سرویس های مجتمع و غیره هستند . این ابزارها دو مرحله ( یا بیشتر ) ازمراحل چرخة عمر نرم افزار را به هم متصل می کنند و جریان اطلاعات از یک مرحله به مرحلة دیگر را به راحتی امکان پذیر می کنند و نشان می دهند .
ابزارهای عمودی : دو نوع ابزار عمودی وجود دارد . اولی ، مجموعه ای از ابزارهاست که در یک مرحله از چرخة عمر نرم افزار به کار می آید . این ابزار ها به دلیل تسریع درعملکرد یک مرحله از چرخة عمر نرم افزار مفید هستند . دستة دوم ابزارهایی هستند که در بیشتر از یک مرحله به کار گرفته می شوند . ( دومی برای انتقال اطلاعات ذخیره از یک مرحله به مرحلة دیگر به کار می آید) مانند ویراشگرهای تصویری که در مراحل تحلیل و طراحی به کار گرفته می شوند .
به
طور کلی هرگروه از ابزارهای مهندسی نرم افزار می تواند فعالیت های : ویرایش ،
برنامه سازی ، وارسی و صحت سنجی ،اندازه گیری ، مدیریت پروژه ، مدیریت پیکربندی را
انجام دهد که در ادامه ، به شرح مختصر هر یک از آن ها می پردازیم .
ویرایشگرها :به طور کلی این ابزارها برای ویرایش اطلاعات به کار می روند . ویرایشگرها به دو گروه متنی و تصویری تقسیم می شوند . گروه اول برای کار با متن ها مانند مستندات و برنامه ها به کار می آیند . امروزه این گروه از ابزارها برای تهیة برنامه ها و نوشتن کد برنامه دارای امکانات ویژه ای هستند که برنامه نویس را به نحوة نوشتن برنامه راهنمایی می کنند ( برای مثال کلمات کلیدی ، توضیحات و … را با رنگ های متفاوتی از یکدیگر مجزا می کنند ). ویرایشگرهای تصویری نیز قسمتی از نرم افزارهای مهندسی نرم افزار را برای تهیة مراحل مختلفی از چرخة عمر نرم افزار تجهیز می کنند .
برای مثال محیط ویرایشگر طراحی IDE به نام Software-throught-pictures نمونة خاصی از ابزارهای گرافیکی ویرایش است که تنها برای پشتیبانی از مراحل طراحی و تحلیل در چرخة عمر نرم افزار برای استفاده از تکنیک های متفاوت به کار می آید .
اغلب این گونه ویرایشگرها با ابزارهای دیگری نیز تجهیز می شوند که مراحل بیشتری از چرخة عمر را پشتیبانی کنند . برای مثال ویرایشگر تصویری IDE دارای یک تولید کنندة متن و یک تجزیه کننده است . برخی دیگر از این ویرایشگرها برای دستکاری رابط کاربر گرافیکی (GUI) تهیه شده اند و اغلب آن ها متن های برنامه را برای GUI های تعریف شده ، تهیه می کنند . یکی از نمونه های این گونه ویرایشگرهاKhoros Software Development Environment است . زبان های برنامه نویسی تصویری نمونه دیگری از ویرایش گرهای تصویری هستند . مانند کانتاتا و ای وی اس . این گونه برنامه ها به صورت محاوره ای به کاربر اجازه می دهند که نمادهای (icons) نمایانگر عملکرد روی داده ها را با یکدیگر برای تهیة نرم افزار ترکیب کرده به کار گیرند .
برنامه سازی : ابزارهای برنامه سازی به چند گروه تقسیم می شوند : برای نوشتن متن ـ برای غلط گیری ـ تولید کننده های متن و تجدید ساختار کننده های متن که همگی جزو ابزارهای سطح پایین (Lower-CASE) محسوب می شوند . به طور کلی برنامه نویسان ( و گاهی طراحان ) با این گونه ابزارها کم و بیش آشنایی دارند . از این میان اشاره به ابزارهای تجدید ساختار کننده بی فایده نیست . این ابزارها شکل متن برنامه ها و مستندات را به گونه ای که مشخص تر ، خواناتر و قابل فهم تر باشند، تغییر می دهند .
وارسی و اعتبار سنجی : این ابزارها برای بررسی کیفیت نرم افزار در طول دورة عمر نرم افزار به کار می آیند . این گروه از ابزارها به بخش های مختلفی تقسیم می شوند از جمله : تحلیل گران ، مقایسه کنندگان ، شبیه سازها و مدیریتی و جزو ابزارهای افقی و عمودی هستند .
سنجیده ها : این ابزارها برای تعیین میزان کیفیت و یا مشکلات و نارسایی های نرم افزارها به کار گرفته می شوند . به دلیل این که آن ها در هر مرحله از تولید نرم افزار ممکن است به کار گرفته شوند ، در گروه ابزارهای افقی قرار می گیرند .
مدیریت پروژه ها : این ابزارها به طور کلی برای مدیریت پروژه های نرم افزاری به کار گرفته می شوند و می توانند شامل اجزاء گوناگونی برای برطرف کردن نیاز مدیران در هر قسمت و موضوع باشند . ( مانند ابزارهایی که دارای بخش قیمت سنجی ، طراحی پروژه ، ابزارهای ارتباطی و پی گیر مراحل و غیره هستند ) .
مدیریت پیکربندی : مدیریت
پیکربندی نرم افزار(SCM) مجموعه ای از
روال ها هستند که تولید نرم افزار را مدیریت می کنند . این روال ها هریک برای ساخت
سیستم و نظارت و کنترل در تغییرات انجام شده درسیستم در طی مدت تولید آن ، تنظیم
شده اند .
وظایف SCM به چندین گروه شکسته می شود ( برای مثال ، کنترل تغییرات ، مدیریت نسخه های تولید شده از نرم افزار ، مدیریت توابع کتابخانه ای و غیره ).
ابزارهای CASE موضوعات مختلفی را تحت پوشش قرار می دهند که در این نوشته به موارد در حد امکان اشاره شد لازم به ذکر است که برای آشنایی با مقوله های مربوط به آن ابزارها فهرستی از آنها را ( براساس حروف الفبا ) به تدریج در هر مقاله ذکر می کنیم . اسامی برخی از این ابزارها و آدرس و مشخصات تولید و عرضه کنندگان آن ها نیز به همین ترتیب درشماره های بعدی به تدریج ذکر خواهد شد . امید است اطلاعات مختصری که برای آشنایی با ابزارهای مهندسی نرم افزار در قسمت اول این مجموعه ارائه شد به همراه توضیحات بیشتر در ارتباط با تاریخچه و روند رو به رشد آن ها در مقالات بعدی زمینه های مناسب را فراهم آورده باشیم تا بتوانیم با دریافت اطلاعات بیشتری از شرکت ها به تشریح کامل ابزارهای مهندسی نرم افزار مورد استفاده در ایران بپردازیم .
موضوعات ابزارهای CASE ( تا حرفD )
intelligent OOA /RD modeling tool
2D charting and graphing widget
2D /3D charting and graphing
3-tier CS/TP Application Generator
3D charting widget
4th Generation
ActiveX Controls
Activity Based Costing Support
Ada
Ada 2D /3D Graphics
Ada and C code generators
Ada dynamic testing
Ada LSE and automatic style compliance
Ada X window