วันจันทร์ที่ 22 พฤศจิกายน พ.ศ. 2553

วิวัฒนาการซอฟต์แวร์ (Software Evolution)

 Lehman  และ Belady ได้ทำการศึกษาการเปลี่ยนแปลงของระบบซอฟต์แวร์หนึ่ง  ที่ต้องการบำรุงรักษาในลักษณะที่ขนาดของโปรแกรมจะใหญ่ขึ้นตามเวลา  และได้สร้างกฎเกณฑ์เกี่ยวกับวิวัฒนาการของซอฟต์แวร์ได้ดังนี้

     1). Law of Contining Change
     2). Law of lncreasing Complexity
     3). Law of Program Evolution
     4). Law of Invariant Work Rate
     5). Law of Incremental Growth Limit
     6). อุตสาหกรรมซอฟต์แวร์ (Software Factory)

     1). Law of Contining Change หมายถึง ซอฟต์แวร์จะต้องมีการเปลี่ยนแปลงอย่างต่อเนื่องตลอดเวลาที่ใช้งาน  จนกระทั่งจะมีการรื้อปรับระบบใหม่  หรือไม่ก็เปลี่ยนเวอร์ชั่นใหม่  (คุ้มกว่าที่จะต้องแก้ไข)    
     2). Law of lncreasing Complexity หมายความว่า  โปรแกรมยิ่งเปลี่ยนแปลงแก้ไขมาก  ความเป็นโครงสร้างของโปรแกรมก็จะลดลง (Entropy เพิ่ม) ซึ่งเป็นต้นเหตุของความซับซ้อนของโปรแกรม การหลีกเลี่ยงความซับซ้อนที่เกิดขึ้นจากกรณีนี้ ก็จะต้องมีการกระทำที่ถี่ถ้วนรอบคอบ  และจริงจังเป็นพิเศษ    
     3). Law of Program Evolution หมายถึง  การเปลี่ยนแปลงที่เกิดขึ้นตลอดเวลาในการใช้งานของโปรแกรมเป็นวิวัฒนาการที่เราสามารถบอกแนวโน้นได้    
     4). Law of Invariant Work Rate หมายถึง ความก้าวหน้าในการพัฒนาโครงการซอฟต์แวร์  ไม่มีการเปลี่ยนแปลง    
     5). Law of Incremental Growth Limit หมายถึง  ระบบซอฟต์แวร์จะเสริมสร้างคุณลักษณะของการเติบโตของมันเอง  เมื่อคุณลักษณะนี้ขยายเกินขีดจำกัดปัญหาเกี่ยวกับคุณภาพและการใช้งานก็จะเกิดขึ้น
  จากการวิวัฒนาการทั้ง 5 ข้อของซอฟต์แวร์  สิ่งที่เราได้คือ  เราจะต้องตระหนักอยู่ตลอดเวลาระหว่างการบำรุงรักษา  เราจะต้องรักษาหรือคงสภาพของคุณภาพของซอฟต์แวร์เอาไว้ในทุกขั้นตอนการเข้าไปมีส่วนร่วมในทุกกิจกรรมอย่างใกล้ชิดเป็นสิ่งจำเป็น  เวลาที่ใช้ในแต่ละวงจรการพัฒนาของการแก้ไขโปรแกรมจะสั้นกว่าปรกติ  ย่อมก่อให้เกิดความผิดพลาดได้ง่าย
    

     6). อุตสาหกรรมซอฟต์แวร์ (Software Factory) บริษัทที่สร้างซอฟต์แวร์เพื่อการขยายส่วนใหญ่มักจะแบ่งแยกช่วงเวลาการพัฒนาและช่วงเวลาการบำรุงรักษาออกจากกันอย่างเด็ดขาด  โดยถือว่าการพัฒนาสิ้นสุดเมื่อได้จัดส่งซอฟต์แวร์ให้กับลูกค้าไปแล้ว  การเปลี่ยนแปลงหลังจากนั้นถือว่า  เป็นการบำรุงรักษา
  ผลก็คือ  ทำให้ทีมพัฒนาซอฟต์แวร์พยายามทุกวิถีทางที่จะทำให้ลูกค้ายอมรับซอฟต์แวร์โดยเร็ว  กิจกรรมหลายอย่างอาจชะลอไว้ในช่วงการบำรุงรักษา  แน่นอนที่ทีมพัฒนาจะนึกถึงว่า  โปรแกรมต้องสามารถทำงานได้ก่อน  ส่วนการพัฒนาเพื่อให้โปรแกรมง่ายต่อการแก้ไขนั้น  คงเป็นเรื่องรองลงไป  ซึ่งเป็นสิ่งที่ไม่ถูกต้องนัก
  การประเมินผลซอฟต์แวร์ไม่ใช่จะจำกัดอยู่เฉพาะในช่วงของการพัฒนาเท่านั้น  ควรจะกระทำตลอดอายุการใช้งานของซอฟต์แวร์  โดยเฉพาะอย่างยิ่ง  การประเมินว่า  สนองความต้องการของผู้ใช้หรือไม่  ค่าใช้จ่ายคุ้มค่ากับผลทีได้หรือไม่ เหล่านี้เป็นต้นมากไปกว่านั้นการสร้างซอฟต์แวร์ในลักษณะที่เป็นลำดับของเวอร์ชั่น (Program Family) จำเป็นที่จะต้องใช้เวอร์ชั่นเดิมเป็นพื้นฐานเพื่อสร้างเวอร์ชั่นใหม่
  แนวคิดไปในลักษณะของการทำอุตสาหกรรมซอฟต์แวร์  คือ  การนำโมดูลเท่าที่เหมาะสมมาใช้งานใหม่  (Software Reuse) การทำเช่นนี้  นับว่าเป็นการบริหารซอฟต์แวร์อย่างมีประสิทธิภาพ  นับว่ามีความจำเป็นเช่น  การสร้างหอสมุดซอฟต์แวร์  การจัดการเอกสารอย่างมีระบบ  เป็นต้น อย่างไรก็ดีการสร้างซอฟต์แวร์ที่ให้สามารถนำมาใช้ใหม่ได้  จะต้องใช้เทคนิค  ความรู้และความพยายามอย่างสูงมากกว่าปรกติ  ผลตอบแทนจะยังไม่เกิดขึ้นในการพัฒนาครั้งแรก  แต่จะเกิดขึ้นเมื่อมีการนำซอฟต์แวร์เหล่านี้มาใช้ใหม่

ขอขอบคุณ http://www.siamvision.com/