วิชา itsc2301 วิศวกรรมซอฟต์แวร์ ·...
TRANSCRIPT
วศวกรรมระบบ (System Engineering)
การบรหารโครงการผลตซอฟตแวร
การประมาณการซอฟตแวร (Software Estimation)
วชา 04720303
วศวกรรมซอฟตแวร (Software Engineering)
วศวกรรมระบบ (System Engineering)
วศวกรรมระบบ ไมไดมงเนนในเรองของซอฟตแวรอยางเดยว แตใหความส าคญกบสวนประกอบอนๆ ดวย
วศวกรรมระบบ หมายถง กระบวนการศกษาและวเคราะหของระบบทมความสลบซบซอน เพอสนบสนนการท างานในสวนของวศวกรรมซอฟตแวร กจกรรมของวศวกรรมระบบ จะถกด าเนนการไปพรอมๆ กบกจกรรมของวศวกรรมซอฟตแวร
วศวกรรมระบบ (System Engineering)
กจกรรมของวศวกรรมระบบ มดงน
ก าหนดวตถประสงคของระบบ
ก าหดนขอบเขตของระบบ
แบงระบบออกเปนสวนๆ ตามฟงกชนงานหรอคณสมบตระบบ
พจารณาความสมพนธของสวนประกอบตางๆ ทเกยวของทงหมด
ก าหนดความสมพนธของปจจยน าเขา ประมวลผล และผลลพธ
วศวกรรมระบบ (System Engineering)
พจารณาปจจยทมสวนเกยวของในระบบ
ก าหนดความตองการในสวนของการด าเนนการและฟงกชนงานทงระบบ
สรางแบบจ าลอง เพอใชวเคราะหและพฒนาใหสอดคลองกบแบบจ าลองซอฟตแวรทสรางขน
น าเสนอและแลกเปลยนขอคดเหนกบผใชระบบ
วศวกรรมระบบ (System Engineering) กระบวนการวศวกรรระบบ ประกอบไปดวยขนตอน 7 เฟส ดงน
การก าหนดความตองการ (Requirement Definition)
การออกแบบระบบ (System Design)
การพฒนาระบบยอย (Sub-system Development)
การผนวกรวมระบบ (System Integration)
การตดตงระบบ (System Installation)
การเปลยนแปลงระบบ (System Evolution)
การปลดระวางระบบ (System Decommission)
วศวกรรมระบบ (System Engineering)
วศวกรรมระบบ (System Engineering) การก าหนดความตองการ (Requirement Definition)
เพอก าหนดนยามความตองการของระบบใหชดเจน ก าหนดหนาทวาระบบควรจะท าอะไรไดบาง เปนเพยงขอก าหนดเบองตน
การออกแบบระบบ (System Design) เปนการก าหนดรายละเอยดของฟงกชนในแตละสวนประกอบของระบบ มดงน แบงสวนความตองการ ก าหนดระบบยอย ก าหนดความตองการในแตละระบบยอย ก าหนดฟงกชนของแตละระบบยอย ก าหนดสวนประสานของระบบยอย
วศวกรรมระบบ (System Engineering)
การออกแบบระบบ (System Design)
วศวกรรมระบบ (System Engineering)
การพฒนาระบบยอย (Sub-system Development) เปนการน าเอาระบบยอยทถกก าหนดรายละเอยดไวในระยะออกแบบ มาสรางดวย
กระบวนการทเหมาะสม
การผนวกรวมระบบ (System Integration) ระบบยอยทพฒนาเสรจแลว จะน ามาผนวกรวมเขาดวยกนจนเปนระบบทสมบรณ
หลงจากรวมระบบแลว ทมงานตองท าการทดสอบการท างานของระบบอกครง
วศวกรรมระบบ (System Engineering)
การตดตงระบบ (System Installation) น าระบบทพฒนาเรยบรอยแลวมาตดตง เพอใชงาน
การเปลยนแปลงระบบ (System Evolution) ในชวงการใชงานระบบ อาจเกดการเปลยนแปลงตางๆ อาจตองการการแกไข
ขอผดพลาดตางๆ
การปลดระวางระบบ (System Decommission) หมายถง การเลกใชงานหลงจากพบวาระบบไมสามารถใชประโยชนไดอกตอไป
การจ าลองระบบ (System Modeling)
แบบจ าลอง แฮทลย-เพอรไบ (HatLey-Pirbhai Modeling) ขอมลเขา (Input)
ประมวลผล (Processing)
ขอมลออก (Output)
การประมวลผลการตอประสาน (User Interface Processing)
การบ ารงรกษา และทดสอบตวเอง (Maintenance and self –test Processing)
แบบจ าลอง แฮทลย-เพอรไบ (HatLey-Pirbhai Modeling)
การสรางแบบจ าลองระบบดวย UML
UML มแผนภาพ (Diagram) หลายๆ แบบใหเลอกใชเพอการวเคราะหและการออกแบบในระดบระบบ และระดบซอฟตแวร
UML คอ โมเดลมาตรฐานทใชหลกการออกแบบ OOP(Object oriented programming)
การสรางแบบจ าลองระบบดวย UML Class Diagram
Object Diagram
Component Diagram
Deployment Diagram
Use Case Diagram
Sequence Diagram
Collaboration Diagram
StateTransition Diagram
Activity Diagram
Structural Diagrams
Behavioral Diagrams
Use Case Diagrams Use Case
Diagrams Use Case Diagrams
Scenario Diagrams Scenario
Diagrams Collaboration Diagrams
State Diagrams State
Diagrams Component Diagrams
Component Diagrams Component
Diagrams Deployment Diagrams
State Diagrams State
Diagrams Object Diagrams
Scenario Diagrams Scenario
Diagrams Statechart Diagrams
Use Case Diagrams Use Case
Diagrams Sequence Diagrams
State Diagrams State
Diagrams Class Diagrams
Activity Diagrams
Models
การสรางแบบจ าลองระบบดวย UML 5 มมมองหลกของ UML
Use-case view : หนาทการท างานของระบบซอฟตแวร โดยพจารณาจากมมมองของผใชภายนอก หรอ ระบบภายนอก use-case diagram
Logical view : หนาทการท างานของระบบมโครงสรางอยางไร มองในรปของ static structure และ dynamic behavior class diagram, object diagram, state, sequence, collaboration,
activity diagrams
การสรางแบบจ าลองระบบดวย UML Component view : องคประกอบยอยในการ implement ทประกอบเปนระบบ และ
dependency ระหวางองคประกอบเหลานน component diagram
Concurrency view: การแบงแยก process และ processors โดยพจารณาทง communication และ synchronization dynamic diagrams (state, sequence, collaboration activity) implementation diagrams(component และ deployment)
Deployment view : โครงสรางทางกายภาพเกยวกบ การตดตง และใชงานระบบ deployment diagram
การสรางแบบจ าลองระบบดวย UML
Use case Diagram ในการพฒนาระบบงานใดๆ นน การเกบรวบรวมความตองการของผใชม
ความส าคญมาก และจะท าในระยะแรกๆ ของการพฒนาระบบงานเสมอ Use case diagram เปน Diagram ทท าหนาท Capture requirement เปนเทคนคในการสรางแบบจ าลองเพอใชอธบายหนาทของระบบใหม หรอระบบปจจบน กระบวนการสราง Use case เปนแบบ Iteration ความตองการของระบบจะไดจาก ลกคา/ผใช + ผพฒนาระบบ องคประกอบจะม Use case, Actor, Use case Relation และ System
Use Case Diagram
teller
customer
withdraw
transfer
statement
add
interest
deposit
Class Diagram
Class Diagram ประกอยดวย Class และความสมพนธระหวาง Class เชน Dependency, Generalization, Association เปนตน Class Diagram สามารถแสดงรายละเอยดวาม Method และ Attribute อยางไร
Class Diagram
Object Diagram
Object Diagram ประกอบดวย Object และ Relation ระหวาง Object โดยแตละ Object จะแสดง Instance ของแตละ class ทมในระบบ และความสมพนธระหวาง Class เชน Dependency, Generalization หรอ Association ซงมลกษณะเชนเดยวกบ Class Diagram
Object Diagram
Sequence Diagram
Sequence Diagram จะแสดงล าดบการท างานของระบบ โดยม Object และ เวลาเปนตวก าหนดล าดบของงาน และเนนไปท instant ของ Oject
Sequence Diagram เปน Diagram ซงแสดงปฏสมพนธ(Interaction) ระหวาง Object ตามล าดบของเหตการณทเกดขน ณ เวลาทก าหนด message ทเกดขนระหวาง class จะสามารถน าไปสการสราง method ใน class ทเกยวของได
Sequence Diagram
Collaboration Diagram
Collaboration Diagram แสดงล าดบการท างานของ วตถ ผเกยวของ และกจกรรม โดยล าดบการท างานไมขนกบเวลา เพราะการแสดงความสมพนธของ Object กบเวลาเปนหนาทของ Sequence Diagram
Collaboration Diagram
State Diagram
State Diagram ประกอบดวย State ตางๆ ของ Object และเหตการณตางๆ ทท าใหสถานะของ Object เปลยนและการกระท าทเกดขนเมอสถานะของระบบเปลยนไป สามารถบอกสถานะของ Object ได โดยจะใหความสนใจวา ณ เวลาใดๆ Object นนม status เปนแบบใด
State Diagram
Activity Diagram
Activities Diagram แสดงล าดบ กจกรรมของการท างาน(Work Flow) สามารถแสดงทางเลอกทเกดขนได Activity Diagram จะแสดงขนตอนการท างานในการปฏบตการ โดยประกอบไปดวยสถานะตางๆ ทเกดขนระหวางการท างาน และผลจากการท างานในขนตอนตาง ๆ
Activity Diagram
Component diagram
Component Diagram เปน Diagram ซงแสดงโครงสรางทางกายภาพของ Software โดยจะประกอบดวยองคประกอบซงอยในรปตางๆ เชน Binary, text และ executeable ภายใน Component Diagram กจะมความสมพนธแสดงอยเชนเดยวกบ Class Diagram, Object Diagram
Component diagram
Deployment diagram
Deployment Diagram เปนสงทสามารถท าการแสดงระบบสถาปตยกรรมของ Hardware/Software ตลอดจนความสมพนธระหวาง hardware/software
Deployment diagram
การบรหารโครงการผลตซอฟตแวร การบรหารโครงการ (Project management)
การประยกตใชองคความร ทกษะ เครองมอ และเทคนค เพอด าเนนกจกรรมตามความตองการของโครงการใหบรรลวตถประสงคทก าหนดไว
วงจรชวตของโครงการ โครงการทกประเภท จะมทงหมด 4 ระยะ ไดแก ระยะเรมตนโครงการ (Project Initiation) ระยะวางแผนโครงการ (Project Planning) ระยะด าเนนโครงการ (Project Execution) ระยะปดโครงการ (Project Closing)
การบรหารโครงการผลตซอฟตแวร
การจดตารางงานโครงการ Gantt Chart PERT/CPM
Gantt Chart
PERT/CPM
มการแสดงงานในลกษณะของ Node และความเกยวเนอง (Dependency) ของงานแตละอนทเกดขนอยางชดเจน
จดเดนของ PERT/CRM คอ การค านวณหาเสนทางวกฤตในการด าเนนกจกรรม ท าใหผบรหารโครงการค านวณหาเวลาไดหลายลกษณะ เชน เวลาทเรวทสดของแตละกจกรรม (Time Earliest : TE) เวลาทชาทสดของแตละกจกรรม (Time Latest : TL) เปนตน
PERT/CPM
เวลาทเรวทสดของแตละกจกรรม (Time Earliest : TE) ค านวณจากซายมาขวา คอ บวกคาเพมจากดานซายมาดานขวา
เวลาทชาทสดของแตละกจกรรม (Time Latest : TL) เวลาทชาทสดทงานนนยงสามารถท าเสรจไดโดยไมกระทบแผนงาน นนคอ ลดคาทเกยวของจากดานขวามาซาย โดยพจารณาจากงานสดทายกอน
PERT/CPM
การประมาณการซอฟตแวร (Software Estimation)
การประมาณการซอฟตแวร เปนสวนทส าคญในการวางแผนงาน เนองจากแผนงานนนจะอยบนพนฐานของสงทตองการท าการจดสรางหรอพฒนา โดยในสวนของซอฟตแวรนนมมมองหลกทมองถง คอเรองของขนาด (Size) คาใชจาย (Cost) บคลากรทใชในการพฒนา (Effort)
Size Estimation
สงแรกทจะตองท ากอนการเรมตนการประมาณการ คอ การวด แยกลกษณะการวดออกเปน 2 เชง คอ การวดในเชงปรมาณ (Software Quantitative) และการวดเชงคณภาพ (Software Qualitative)
Size Estimation
กรรมวธทใชในการวดขนาดของซอฟตแวร ม 2 ลกษณะ คอ Line of Code (LOC) Count Function Point (FP)
Line of Code (LOC) Count
นบเฉพาะบรรทดทมการจดสงเปน Source Code ไมนบรวมสวนของการทดสอบ (Test Driver) หรอสวนงานทรองรบการท างานอนๆ
นบเฉพาะบรรทดทพฒนาโดยบคลากร ไมนบรวมสงทระบบงานสามารถ Generate ไดอตโนมต
ถอวาหนงค าสง คอ หนง Line of Code <LOC>
นบสวนของการประกาศคา (Declaration) เปนสวนของ Instruction
ไมนบสวนของการขยายความ หรอ Comment
Function Point (FP) ปจจบนการนบขนาดของโปรแกรมดวยการนบบรรทดนน ไมสามารถใหผล
การวดในเชงผลสมฤทธของโปรแกรมไดอยางชดเจน การน าวธการนบดวยฟงกชนพอยตเขามาใชนน จงไดรบความสนใจ
การวดดวยฟงกชนพอยต จะมงเนนทการวดดวยฟงกชน หรอการวดโดยผานมมมองความตองการของซอฟตแวร
Allan Albrecht [1] John Gaffney, Jr [2] ไดออกแบบ FPs ทใชวดฟงกชนพอยต FPs เปนผลรวมของขนาด ขอมลเขา, ขอมลออก, ขอมลความตองการ, แฟมขอมล และสวนของโปรแกรมทใชในการตดตอกบลกคา
Function Point (FP) กระบวนการนบฟงกชนพอยต มลกษณะดงน
ขนท 1 น า Requirement ทเกบรวบรวมไวมาท าการแบงฟงกชนพอยต
ขนท 2 ประเมนความซบซอนของฟงกชน
ขนท 3 เปรยบเทยบความซบซอน เพอใหไดระดบความซบซอน เพอค านวณฟงกชนพอยตทยงไมไดปรบคา (Unadjusted Function Point : UFP)
ขนท 4 ค านวณคาตวแปรปรบคา (Value Adjustment Factor) ตามลกษณะของโครงการ
ขนท 5 ค านวณจ านวนฟงกชนพอยตทผานการปรบคา (Adjusted Function Point : AFP)
ขนท 6 ฟงกชนพอยตทผานการปรบคา สามารถน าไปค านวณเปน LOC ได
Function Point (FP)
ประเภทของฟงกชนพอยต สามารถแบงได 5 ลกษณะหลก คอ
External Input (EI) External Output (EO) External Inquiry (EQ) Internal Logical Files (ILF) External Interface Files (EIF)
Function Point (FP)
Function Point (FP)
แตละฟงกชนพอยตนน มองคประกอบตางๆ ในฟงกชนแตละประเภทซงจะแตกตางกนได เชน การเกยวของกบองคประกอบขอมล (Data Element : DET) เปนขอมล เปรยบเสมอนฟลดขอมลทสนใจในแตละฟลด
เรคคอรคขอมล (Record Element : RET) กลมของขอมล หรอกลมยอยของ DET หรอการนบประเภทของเรคคอรดขอมลทเกยวของสมพนธกบฟงกชนทสนใจ
ประเภทไฟล (File Type of Record : FTR)
ค านวณ Function Point (FP)
จ านวนของฟงกชน หาไดจาก FP ทยงไมไดถกปรบแตง (Unadjusted Function Point : UFP) คณกบคาปจจยคณลกษณะของระบบ (Value Adjustment Factor : VAF)
FP = UFP x VAF
VAF = 0.65 + [0.01 x Total DI]
DI : Degree of Influence(ผลกระทบ)
UAF
จะเหนวาการก าหนดฟงกชนโดยแยกออกเปน 5 ประเภทหลก ตามลกษณะของการท างานนน จะชวยท าใหการประเมนลกษณะความตองการของซอฟตแวร การพจารณาองคประกอบทเกยวของกบประเภทของแตละฟงกชนพอยตนน จะท าใหสามารถพจารณาความซบซอนของฟงกชนพอยตไดอยางเปนรปธรรมมากขน โดยพจารณาจากตาราง
UAF
UAF
จากตารางขางบน จะไดระดบความซบซอนของการท างาน จากนนน าคาความซบซอนทเปนคาเฉลยมาท าการค านวณคา Complexity weight ตามตารางน
VAF
การประเมน VAF นนจะประเมนคาของ 14 ปจจย ดงน
1. การตดตอสอสารขอมล (Data Communication)
2. การประมวลผลขอมลแบบกระจาย (Distributed Data Processing)
3. ประสทธภาพของระบบ (Performance)
4. การแกไขคาของระบบ (Configuration)
5. ปรมาณรายการขอมล (Transaction)
6. การปอนขอมลเขาสระบบแบบออนไลน (Online Data Entry)
VAF
7. ประสทธภาพการใชงานของผใช (End user Efficiency)
8. การปรบปรงขอมลแบบออนไลน (Online Update)
9. ความซบซอนของการประมวลผล (Complex Processing)
10. การน าไปใชซ าได (Reusability)
11. ความงายในการตดตง (Installation Ease)
12. ความงายในการด าเนนงาน (Operational Ease)
13. การใชงานไดหลายไซต (Multiple Sites)
VAF
14. รองรบการเปลยนแปลงความตองการของผใช (Change Requirement) โดยการประเมนนน แบงออกเปน 5 ระดบตาม Degree of Influence (DI) 0 Not Present ไมมผลเกยวของกบตวแปรนนๆ 1 Incidental Influence มความเกยวของกบตวแปรนนๆ โดยมเกดขนใน
ระบบงาน ไมกระทบตอการท างาน 2 Moderate Influence มความเกยวของกบตวแปรนนๆ โดยมเกดขนใน
ระบบงาน กระทบตอการท างาน โดยท าใหการ ท างานซบซอนขนบางเลกนอย
VAF
3 Average Influence มความเกยวของกบตวแปรนนๆ โดยมเกดขนใน ระบบงาน กระทบตอการท างาน โดยท าใหการ ท างานซบซอนขน
4 Significant Influence มความเกยวของกบตวแปรนนๆ โดยมเกดขนใน ระบบงาน กระทบตอการท างาน โดยท าใหการ ท างานซบซอนคอนขางมาก
5 Strong Influence มความเกยวของกบตวแปรนนๆ โดยมเกดขนใน ระบบงาน กระทบตอการท างาน โดยท าใหการ ท างานซบซอนมาก
ตารางเปรยบเทยบคา FP เพอแปลงไปเปน LOC
ตวอยางการค านวณคาฟงกชนพอยต
จาก Use case Diagram ดงรป จะท าการแยกประเภทของ use case ตามฟงกชนพอยต
ตวอยาง
ตวอยาง
ท าการเปรยบเทยบคาของ Value Adjustment Factors : VAF
ตวอยาง
VAF = 0.65 + [0.01 x 17] = 0.82 FP = UFP x VAF = 23 x 0.82 = 18.86 FP
ถาหากจดท าซอฟตแวรโดยใชภาษาจาวา จะไดคา LOC = 18.86 x 53 = 999.58 ~1000 LOC
การประมาณการบคลากร
Productivity : ประสทธผลในการผลตงาน
Productivity = Output Size (LOC or Function Point)
Effort (Man-Month)
COCOMO
Boehm B.W. ไดพฒนา COCOMO Model (Constructive Cost Model) เพอวด Effort ในการพฒนาซอฟตแวรทคดเปนหนวย คน-เดอน (person-month) ทประมาณจากขนาดของโปรแกรม โดยนบจ านวนบรรทดของโปรแกรมตนฉบบเปนหลก
แบบจ าลอง COCOMO ถกพฒนาเปนเวอรชน 2 คอ COCOMO II แบงแบบจ าลองออกเปน 3 ชนด เพอใชประมาณการในระยะตางๆ ของกระบวนการพฒนาซอฟตแวร
COCOMO II
Application Composition Model เหมาะกบการผลตซอฟตแวรดวยแนวทางคอมโพเนนท โดยแตละคอมโพเนนทสามารถอธบาย
แทนดวย Object Point ได ขนาดของซอฟตแวรนบเปน Object Point
Early Design Model ใชประมาณการในระยะกอนการออกแบบซอฟตแวร แตหลงจากการก าหนดความความตองการ
แลว ใชคา FP แทนขนาดของซอฟตแวร
Post-Architecture Model ใชประมาณการในระยะหลงการออกแบบซอฟตแวร เปนการประมาณการอกครงเพอความถกตอง
ของคาประมาณการทได
COCOMO II
โมเดลการค านวณของ COCOMO II
PM คอ Effort มหนวยเปน Person-Months (PM) A คาคงททไดจากการรวบรวมขอมลใน 161 โครงการ โดย A = 2.94 E คอ Economics of Scale ซงเปนผลทขนาดของซอฟตแวรสมพนธกบขนาดของโครงการ โดย E = B + 0.01 * Scale
Factors B Scaling Base-exponent ส าหรบค านวณ Effort EM คอ Effort Multipliers เปนคาทไดจากการค านวณ Cost Driver ทเกยวกบโครงการ ทสงผลตอ Effort ในการพฒนาซอฟตแวร PMauto คาของ Effort ทไดจากการแปลงอตโนมต ซงจะเกดเมอมการ Reuse Code โดยคานนจะไมมผลตอการพฒนา แต
เนองจากมผลตอคาใชจาย ถาเปนการพฒนาซอฟตแวรใหม คา PMauto จะเปน 0
PM = A x SizeE x EM + PMauto
COCOMO II
ระยะเวลาทใชในการพฒนาซอฟตแวรมสตรดงน
TDEV = [ C x (PM)F ] x SCED%
100
C คอ Schedule Coefficient ทใชมาค านวณ โดย C = 3.67 F คอ Scaling Exponent ส าหรบระยะเวลา โดย F = [ D + 0.2 (E-B) ] D Scaling Base-exponent ส าหรบ ระยะเวลา โดย D = 0.28 SCED คอ ความรบเรงของเวลาเมอเปรยบเทยบกบการพฒนาปกต