چرا پروژه های نرم افزاری شکست می خورند؟ – قسمت دوم

برای خواندن این مطلب پیشنهاد می کنم پست قبلی را مطالعه کنید.

3. مدیریت چرخه عمر نرم افزار (ALM – Application Lifecycle Management)

“Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, software maintenance, change management, continuous integration, project management, and release management.”

WIKIPEDIA

هر نرم افزار تولید شده ای یک چرخه عمر دارد و مدیریت صحیح آن چرخه، ارزش تولید و نگهداری نرم افزار نسبت به هزینه های آن را توجیه می کند. یکی از مهم ترین مواردی که پروژه های نرم افزاری را به سمت شکست می کشاند یا هزینه های توسعه آن را توجیه نمی کند “عدم کیفیت” است. تولید نرم افزار در یک چرخه عمر ناصحیح آن را نسبت به تغییرات انعطاف ناپذیر خواهد کرد و چرخه عمر آن به پایان خواهد رسید. بطور خلاصه برای داشتن نرم افزارهایی که کار می کنند باید آن را با کیفیت تولید کرد و تولید با کیفیت نیاز به مدیریت چرخه عمر دارد.

مسایلی که در ALM معمولا مورد توجه قرار نمی گیرد:

• بازنگری ALM با توجه به استانداردهای مدرن توسعه نرم افزار

• عدم وجود تست های واحد (Unit Test)

• عدم وجود تست های ادغامی (Integration Test)

• عدم وجود محیط تست کاربر (UAT – User Acceptance Test)

• عدم ثبت تمام تسک های کاری

• عدم وجود ارتباط بین تسک های کاری و کدها تولید شده یا تغییرات آن

• عدم وجود Release Management

• عدم استفاده عملیاتی از Version Control

• عدم وجود Availability, Recoverability Reliability, و Security در Database Server

• عدم وجود Authentication & Authorization قابل قبول

• عدم وجود مقیاس پذیری (Scalability)

• انجام برخی تغییرات در محیط عملیاتی

• تغییرات اطلاعات در بانک های اطلاعاتی عملیاتی

• کدهای کثیف (Clean Code)*

• …

“Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.”

Robert Cecil Martin

4. Load and Performance Test

نیاز است تا تست عملکردی و بار برای نرم افزارها طراحی و انجام شود تا میزان کارایی و عملکرد آنها سنجیده شود. از کار افتادن سرویس هایی که سازمان ها و شرکت ها از طریق نرم افزار به مشتریان خود ارایه می دهد، هزینه های مالی و اعتباری فراوانی را متوجه سازمان خواهد کرد. تست بار سیستم ها این قابلیت را می دهد تا منابع مورد نیاز آنها بررسی و برنامه ریزی شود و قابلیت مقیاس پذیری (Scalable) داشته باشد و به این صورت منابع مورد نیاز آن نیز مدیریت شوند. به عنوان نمونه اضافه شده سرورهای مورد نیاز در زمان هایی که بار برروی سیستم ها بالاست.

5. Security Test

بررسی های اولیه توسط کارشناسان امنیت نشان می دهد که در محصولات تولید شده در کشور مسایل امنیتی جدی وجود دارد. مسایل امنیتی می تواند در هر لحظه سازمان یا شرکت را در برابر نفوذ خرابکاران آسیب پذیرکند و منافع آن را به خطر اندازد. مانند تست عملکردی و بار، از کار افتادن سرویس هایی که از طریق نرم افزار به مشتریان ارایه می شود، هزینه های مالی و اعتباری فراوانی دارد. هیچگاه نمی توان امینت صددرصدی را در این حوزه انجام داد ولی می توان نفوذپذیری آن را به حداقل رساند و آسیب پذیری را به کمترین میزان کاهش داد.

تمام مسایلی که مطرح شد می تواند یک پروژه نرم افزاری را با شکست روبرو کند و عدم توجه به آن نیز هزینه های جبران ناپذیر برای سازمان ها و شرکت ها در بر خواهد داشت.

پایان


So, what do you think ?