وضعيت به كار گيري ابزار مهندسي نرم افزار در ايران

در عصر اطلاعات نمي توان علم يا صنعتي را يافت كه آثار فن آوري اطلاعات در آن ديده نشود . فن آوري اطلاعات علاوه بر اين كه به عنوان يك فن آوري زير بنايي قادر است كه ابعاد ديگر زمينه ها را دگرگون كند ( به گونه اي كه نگرش فعلي به اين زمينه ها را با دگرگوني كامل رو به رو سازد) ، بلكه به عنوان يك فن آوري مستقل و قدرتمند نيز قادر به خودنمايي است. به طور كلي مي توان اين فن آوري را در قالب پنج ركن اساسي آن در نظر گرفت كه هر يك به نوبه خود از اهميت و جايگاه

ويژه اي برخوردارند . از اين ميان نرم افزار مي تواند به عنوان يك ركن اساسي با اهميت ويژه اي مطرح باشد . در چند سال اخير شاهد رشد مناسب اين صنعت در كشور بوده ايم (هر چند كه با اخذ تصميمات و سياست هاي صحيحي مي توانستيم با هدف مند كردن اين رشد، جايگاه واقعي اين صنعت را حتي در تجارت جهاني به خوبي نشان دهيم و از آن به بهترين نحو استفاده كنيم )

. با وجود اين ، اگر چارچوب دقيق و كارآيي براي آن در كليه ابعاد به وجود نياوريم، فرصت خوبي را براي فراهم آوردن بسترهاي مناسب در رشد و بهره برداري لازم از آن ،از دست خواهيم داد . حجم زياد فعاليت هاي نرم افزاري در كشور و داشتن پتانسيل هاي كافي براي رونق بخشيدن به اين صنعت در راستاي گرفتن سهم مناسبي از بازارهاي خارجي ، ضرورت
توليد صحيح و بهينه را در اين صنعت مطرح مي كند .

توسعة روزافزون فن آوري اطلاعات در ابعاد مختلف ، سبب شده است كه در اركان خود اين فن آوري نيز دگرگوني شگرفي پديد آيد و آن را با جهش هاي غير قابل تصوري پيشرفته سازد. در حقيقت رشد اين فن آوري سبب توليد ابزرهاي جديد و سريعتر ، حتي تغيير نگرش در توليد محصولات نرم افزاري شده است . از اين ميان مي توان به توليد ابزارهاي مهندسي نرم افزار در طيف وسيع اشاره كرد .اين ابزارها در هر يك از مراحل و بخش هاي تحليل ، طراحي، پياده سازي ،آزمايش ، نگه داري ، مديريتي و غيره تأثير بسيار گذاشته است .

با استفاده از هر يك از اين ابزارها دقت و سرعت توليد محصولات نرم افزاري بسيار زياد شده است ، در جامعة كنوني كه پروژه هاي يك ساله از پروژه هاي بلند مدت نرم افزاري محسوب مي شود و پروژه هاي بيشتر از يك سال را محكوم به شكست مي دانند ( با توجه به تغييرات سريع و بنيادين فن آوري اطلاعات و آثاري كه بر روي ديگر زمينه ها دارد )، اين ابزار توانسته است با سرعت بخشيدن به انجام هر يك از مراحل فوق بتواند تمهيداتي فراهم كند كه پروژه هاي ملي و بزرگ در چارچوب هاي زماني مشخص و معقول تعريف و انجام شوند .

با توجه به مطالب ارائه شده واهميت موضوع نرم افزار و توليد بهينه آن در
كشور ، دبيرخانه شوراي عالي انفورماتيك براي ترويج فرهنگ به كارگيري مفاهيم و ابزارهاي نوين در كلية زمينه هاي فن آوري اطلاعات و آشنا سازي جامعة انفورماتيك( به خصوص دانشجويان و توليد كنندگان جوان ) به اهميت مهندسي نرم افزار و اصول آن و ابزارهاي توسعة نرم افزار اقدام به تهيةمطالبي در اين زمينه كرد . به همين منظور از شركت هاي مهم نرم افزاري كشور خواسته شد اطلاعات مربوط را به دبير خانه ارسال كنند .( توجه كارفرمايان در ضرورت به كارگيري ابزارهاي كمكي براي توليد و توسعة نرم افزار به خصوص در پروژه هاي بزرگ بسيار حائز اهميت است كه اميدواريم اين مهم نيز با ارائه مطالب مختصر فوق ، برآورده شود ).

در اين جا نيز از كلية استادان ، صاحب نظران، ديگر شركت ها و مؤسسات توليدي نرم افزار مي خواهيم كه با ارسال اطلاعات مربوط در اين زمينه به دبيرخانه شورا ، ما را در هر چه بهتر عرضه كردن ابزار مهندسي نرم افزار و شناساندن توان واقعي توليد نرم افزار كشور به جامعه ، ياري دهند .
در همين راستا طي سلسله مقالاتي ، پس از بيان مقدمه اي بر ابزار هاي مهندسي نرم افزار ، به معرفي ابزارهايي كه بوسيلة شركت هاي داخلي به كار گرفته مي شوند ، خواهيم پرداخت . اين معرفي شامل كليات زير است :
ـ معرفي ابزار و شركت توليد كننده و ارائه دهندة آن
ـ تاريخچة كاربرد يا عرضة ابزار در شركت
ـ امكانات قابل ارائه ابزار ( چه فعاليتي را انجام مي دهد و چگونه و غيره )
ـ مشخصات فني ( بستر عملياتي و غيره )
ـ مختصري از نحوة كار با ابزار
ـ پروژه هاي انجام شده با اين ابزار

لازم به ذكر است كه اطلاعات بيان شده با توجه به مجموعه اطلاعاتي است كه از طريق شركت ها به اين دبيرخانه ارسال شده است ( با ذكر نام فرستنده ).بنابراين ميزان بررسي و عمق مطالب مطرح شده بستگي به اطلاعاتي دارد كه شركت ها در مورد نرم افزار مورد استفاده يا عرضة كردة خود براي ما فرستاده اند ( با تشكر فراوان از كليه شركت هايي كه اطلاعات خود را براي اين دبيرخانه ارسال داشته اند ). از طرف ديگر ، ابزار هاي مطرح شده فقط در قالب ابزارهايي هستند

كه در چارچوب مراحل تحليل ، طراحي و پياده سازي مورد استفاده يا عرضة شركت قرار گرفته اند .به همين خاطر از ميان ابزارهايي كه صرفاً جهت مديريت پروژه ها ،آزمايش ، برنامه سازي و غيره در شركت ها مورد استفاده قرار گرفته است ، خودداري كرده ايم . حال به عنوان اولين نوشته از اين مجموعه به معرفي اجمالي ابزارهاي مهندسي نرم افزار خواهيم پرداخت . در اين مقوله سعي بر آن است كه با ارائه مطالبي پيرامون اين ابزار از جهت تعريف ، دسته بندي ، نحوة كلي عملكرد و غيره ، مختصر شناختي از آنها عرضه شود .

۱ـ معرفي
به گفتة فرهنگ لغات نيوتن تله كام « ابزار مهندسي نرم افزار يا مهندسي نرم افزار به كمك كامپيوتر ، روش جديد مؤثر تر و سريع تر براي تهية نرم افزارها در كاربرد هاي متفاوت است ». اين ابزار در مراحل مختلف توليد سيستم هاي طلاعاتي از جمله تحليل ، طراحي و برنامه سازي به كارگرفته مي شوند . براي مثال فرهنگ هاي داده و ابزار هاي نمودار كشي به تحليل كمك مي

كنند و در مرحله طراحي ، ابزارهاي طراحي و توليد سيستم هاي كاربردي ، مرحله برنامه سازي را سريع تر مي سازند . علاوه بر آن به وسيلة اين ابزارها مرحلة سخت ،زمان گير و غير دوست داشتني مستند سازي مي تواند به راحتي انجام شود . روند توليد اين ابزارها به سمتي است كه بتواند كلية مراحل توليد نرم افزار بالاخص برنامه سازي را پشتيباني كند . ابزارهاي جديد برنامه سازي مانند :Visual Basic وpower builder و… كه به (Rapid application development)RAD معروف هستند ، از نسل هاي جديد اين ابزارها محسوب

مي شوند . امتيازات استفاده از ابزار ها بسيار زياد و متنوع است ، اما مهم ترين آن ها
را مي توان به صورت زير خلاصه كرد :
۱ـ افزايش بهره وري
۲ـ بهبود كنترل كيفيت
۳ـ مستند سازي بهتر
۴ـ سرعت استفاده از استانداردها

۵ـ محدود كردن افزونگي ( زيرا تغييرات اصلي مي تواند به راحتي اعمال شود)
۶ـ به اشتراك گذاشتن نمودارهاي گردش داده و فرهنگ داده ها و… در بيشتراز يك سيستم
۷ـ توانايي شناسايي توافق ها در طراحي يك سيستم

۲ـ انواع ابزارها ( از ديدگاه هاي مختلف )
همان طور كه گفته شد ابزارها مي توانند در محدودة وسيعي از توليد و نگه داري يك سيستم ( يا مجموعه اي از سيستم ها ) مفيد واقع شوند ، اما به كارگيري اين ابزارها در مراحل تحليل و طراحي سيستم ها بالاخص سيستم هاي بزرگ بسيار حائز اهميت و گاه ضروري است . به طور كلي ابزارهايي را كه در اين مراحل به كار گرفته

مي شوند، مي توان به دو گروه عمده تقسيم كرد :
الف ـ ابزارهاي وابسته به يك فراروش يا روش خاص،
ب ـ ابزارهاي غير وابسته به يك فراروش يا روش خاص ، گروه اول ابزارهايي هستند كه به توليد كننده نرم افزار كمك مي كنند كه در راستاي به كارگيري يك فراروش در تهيه نرم افزار ، بتوانند از امكانات اين ابزار براي تسريع در عمل ، سهولت كار و غيره كمك بگيرند . بنابراين ابزارهاي مربوط هنگامي مفيدند و به كار گرفته مي شوند كه توليد نرم افزار بر اساس فراروش يا روش مربوط پيش مي رود . البته توجه به اين نكته ضروري است كه اين ابزارها مي توانند بخش با بخش هايي از

فعاليت هاي فراروش را براي انجام كار مد نظر داشته باشند . به عبارت ديگر ، اگر ابزاري بر اساس فراروش خاصي تهيه شده باشد ( يعني اين كه بتواند تكنيك هاي به كار رفته دراين فراروش را پشتيباني كند )، به اين مفهوم نيست كه كلية مراحل ، تكنيك ها ، علايم و… اين فراروش را پشتيباني كند ( مي تواند برخي از آن ها را در بر داشته باشد )

گونه اي ديگر از ابزارها هستند كه بدون در نظر گيري فراروش يا روش خاصي ، تنها مي توانند امكاناتي در اختيار توليد كنندة نرم افزار قرار دهند كه بتواند در مراحل اجراي پروژه از تكنيك ها، علايم و ديگر امكانات اين ابزارها استفاده كند . براي مثال ابزارهايي كه مي توانند نمودار گردش داده يا DFD تهيه كنند ، مي توانند در مقاطع مختلف و براي فراروش ها و پروژه هاي گوناگون به كار گرفته شوند .از طرف ديگر ابزارهاي مهندسي نرم افزار را مي توان بر اساس اين كه در چه مقطعي از چرخة حيات نرم افزار به كار گرفته مي شود ،تقسيم بندي كرد . از اين ديدگاه ، ابزارهايي كه قسمت هاي اولية چرخة عمر نرم افزار را پشتيباني مي كنند ( در انجام اين قسمت از پروژه ها به كار مي آيند )، به ابزارهاي Upper-CASE و ابزارهايي كه قدم هاي نهايي چرخة عمر را پشتيباني مي كنند ، به ابزارهاي Lower-CASE معروف هستند .

اسميت و امان نيز به گونه اي ديگر ابزارها را تقسيم كرده اند . آن ها نام هاي ابزارهاي افقي و عمودي را برگزيده اند .

ابزارهاي افقي : اين ابزارها ارتباط خودكار بين مراحل مختلف چرخة عمر را پشتيباني مي كنند و شامل مديريت پروژه ، ابزارهاي مديريت ساختاربندي ، سرويس هاي مجتمع و غيره هستند . اين ابزارها دو مرحله ( يا بيشتر ) ازمراحل چرخة عمر نرم افزار را به هم متصل مي كنند و جريان اطلاعات از يك مرحله به مرحلة ديگر را به راحتي امكان پذير مي كنند و نشان مي دهند .

ابزارهاي عمودي : دو نوع ابزار عمودي وجود دارد . اولي ، مجموعه اي از
ابزارهاست كه در يك مرحله از چرخة عمر نرم افزار به كار مي آيد . اين ابزار ها به دليل تسريع درعملكرد يك مرحله از چرخة عمر نرم افزار مفيد هستند . دستة دوم ابزارهايي هستند كه در بيشتر از يك مرحله به كار گرفته مي شوند . ( دومي براي انتقال اطلاعات ذخيره از يك مرحله به مرحلة ديگر به كار مي آيد) مانند ويراشگرهاي تصويري كه در مراحل تحليل و طراحي به كار گرفته مي شوند .

به طور كلي هرگروه از ابزارهاي مهندسي نرم افزار مي تواند فعاليت هاي : ويرايش ، برنامه سازي ، وارسي و صحت سنجي ،اندازه گيري ، مديريت پروژه ، مديريت پيكربندي را انجام دهد كه در ادامه ، به شرح مختصر هر يك از آن ها
مي پردازيم .

ويرايشگرها :به طور كلي اين ابزارها براي ويرايش اطلاعات به كار مي روند . ويرايشگرها به دو گروه متني و تصويري تقسيم مي شوند . گروه اول براي كار با متن ها مانند مستندات و برنامه ها به كار مي آيند . امروزه اين گروه از ابزارها براي تهية برنامه ها و نوشتن كد برنامه داراي امكانات ويژه اي هستند كه برنامه نويس را به نحوة نوشتن برنامه راهنمايي مي كنند ( براي مثال كلمات كليدي ، توضيحات و … را با رنگ هاي متفاوتي از يكديگر مجزا مي كنند ). ويرايشگرهاي تصويري نيز قسمتي از نرم افزارهاي مهندسي نرم افزار را براي تهية مراحل مختلفي از چرخة عمر نرم افزار تجهيز مي كنند .

براي مثال محيط ويرايشگر طراحي IDE به نام Software-throught-pictures نمونة خاصي از ابزارهاي گرافيكي ويرايش است كه تنها براي پشتيباني از مراحل طراحي و تحليل در چرخة عمر نرم افزار براي استفاده از تكنيك هاي متفاوت به كار مي آيد .

اغلب اين گونه ويرايشگرها با ابزارهاي ديگري نيز تجهيز مي شوند كه مراحل بيشتري از چرخة عمر را پشتيباني كنند . براي مثال ويرايشگر تصويري IDE داراي يك توليد كنندة متن و يك تجزيه كننده است