วิศวกรรมซอฟต์แวร์

advertisement
310313
Software Engineering
วิศวกรรมซอฟต์แวร์
ึ ษา 2550
ภาคปลาย ปี การศก
1
คำอธิบำยรำยวิชำ






วัฏจักรซอฟต์แวร์
้ กการวิศวกรรมในการพัฒนาซอฟต์แวร์
การใชหลั
ั ซอนของซอฟต์
้
ความซบ
แวร์
การวางแผนการพัฒนาซอฟต์แวร์
เทคนิคการออกแบบซอฟต์แวร์
้
การใชงานและการบ
ารุงรักษาซอฟต์แวร์
310313 -2
จุดม่งหมำยของวิชำ

ิ เห็นความสาคัญและเข ้าใจหลักการของ
เพือ
่ ให ้นิสต
้ ้
วิศวกรรมซอฟต์แวร์และสามารถนาไปใชได




สามารถพัฒนาซอฟต์แวร์อย่างมีระบบมากขึน
้
สามารถพัฒนาซอฟต์แวร์ทม
ี่ ค
ี ณ
ุ ภาพมากขึน
้
เข ้าใจหลักการของการบริหารโครงงานวิศวกรรม
ซอฟต์แวร์พอสมควร
้
สามารถพัฒนาระบบงานโดยใชเทคโนโลยี
เชงิ วัตถุได ้
310313 -3
ล ักษณะกำรเรียนกำรสอน






บรรยายโดยโปรแกรมนาเสนอ
สาธิตด ้วยคอมพิวเตอร์
ั ถาม
อภิปราย และซก
ึ ษาค ้นคว ้าด ้วยตนเอง
การศก
ปฏิบต
ั ก
ิ ารด ้วยคอมพิวเตอร์
ทาแบบฝึ กหัด และโครงงาน
อาจมีเอกสารแจกให ้อ่านเพิม
่ เติมก่อนเข ้าเรียน
 กรุณาตรงต่อเวลา
 สามารถ download เอกสารได ้ที่
http://course.buu.ac.th/

310313 -4
ล ักษณะกำรเรียนกำรสอน

โครงงำน (งำนกลุม
่ 4-5 คน)




พัฒนาระบบงาน 1 ระบบ
เอกสารประกอบ
โปรแกรมและการนาเสนอ
แบบฝึ กห ัด (งานเดีย
่ ว)


รายงาน
แบบฝึ กหัด
310313 -5
เอกสำรประกอบกำรเรียน

ื หล ัก
หน ังสอ

Bernd Bruegge
andAllen H. Dutoit
Object-Oriented
Software Engineering:
Using UML,Pattern, and
Java ,2nd Edition,
Prentice Hall,2004
310313 -6
เอกสำรประกอบกำรเรียน

ื ประกอบ
หน ังสอ




Pressman, R. S ,Sofware Engineering : a
practioner's approach 5th ed., McGraw-Hill,
2001.
Fowler, Scott ,UML Distilled 2nd ed., - (Addison
Wesley)
Stephen R. Schach: Classical and Object-Oriented Software
Engineering With UML and Java, McGraw Hill, 1999
G. Booch, J. Rumbaugh, I. Jacobson The Unified
Modeling Language User Guide - (Addison
Wesley)
310313 -7
กำรปฏิบ ัติกำร

เนือ
่ งจำกรำยวิชำนีไ้ ม่มช
ี ว่ ั โมงปฏิบ ัติกำร แต่จะ
ิ ต้องปฏิบ ัติ โดยนิสต
ิ จะต้องไป
มีกจ
ิ กรรมทีน
่ ส
ิ ต
หำเวลำในกำรฝึ กปฏิบ ัติกำรด้วย



Rational Rose 2000(CASE Tool)หรือ starUML
หรือ ArgoUML
ั ดาห์
การประชุมประจาสป
เขียนโปรแกรมโดยใช ้ Java, Servlet, Jsp , .NET
310313 -8
310313 -9
310313 -10
่ งำน
กำรสง


ต้องตรงต่อเวลำ
่ ชำ้ ห ักว ันละ 10 %
สง
310313 -11
เกณฑ์กำรให้คะแนน
ึ ษำค้นคว้ำด้วยตนเอง และทำกำรบ้ำน
1.ทำกิจกรรม/ศก
15 %
2. ทำโครงงำนเป็นกลุม
่ กลุม
่ ละ 4 - 5 คน
25 %
้ หำวิชำ
3. ว ัดควำมรูค
้ วำมเข้ำใจในเนือ
60 %
โดยแบ่งเป็น



สอบย่อย
สอบกลำงภำค
สอบปลำยภำค
15 %
20 %
25 %
310313 -12
กำรประเมินผล
อิงกลุม
่
310313 -13
กำหนดกำรสอบ


สอบกลำงภำคเรียน
ตามกาหนดการของมหาวิทยาลัย
สอบปลำยภำคเรียน
ตามกาหนดการของมหาวิทยาลัย
310313 -14
สงิ่ ทีค
่ ำดว่ำผูเ้ รียนจะได้ร ับ




ความเข ้าใจในการพัฒนาซอฟต์แวร์
ความเข ้าใจเบือ
้ งต ้นในการบริหารโครงงาน
วิศวกรรมซอฟต์แวร์
้
สามารถพัฒนาซอฟต์แวร์โดยใชเทคโนโลยี
เชงิ
วัตถุได ้
ผู ้เรียนน่าจะนาหลักการต่างๆ ทีเ่ รียนไปในวิชานี้
้
ไปใชในการจั
ดทาโครงงานคอมพิวเตอร์ในภาค
ึ ษาหน ้าได ้
การศก
310313 -15
Contents
Week#
1
2,3
PowerPoint file
Introduction and Overview
Ch(s)
1
Object-oriented Modeling with UML
2,9
4
Software Development process
15.4
5, 6
System Requirements Capture
4
7
System Analysis
5
8
System Analysis Midterm
5
9
System Design
10
Database design, Implementation
11, 12
Testing, Cost Estimation
6, 7
8,9,10
11
13
Software Quality Assurance
13, 15
14
Managing Software Development
14,16
310313 -16
Team Project


Your Client: BUCC Campus Foods
Your Goal: Design a web-based architecture
to…




Extend an existing product catalog
Support flexible, dynamic pricing rules for sales
promotions
Provide web interface(s) for sales manager and
customers
Provide a web services API for B2B transactions
310313 -17
BUCC Campus Today…
Forms-Based
Interface
Batch
Typeset
Product
DB
Print
Catalog
BUCC CampusTomorrow
HTTP
Web Interface
(Sales Mgr)
HTTP
Web Interface
(Customer)
Application Server
Business
Rules
Product
DB
WS
Order
DB
3rd-Party
Applications
310313 -18
Possible Team Tasks
(subject to further refinement)
1.
2.
3.
4.
5.
6.
7.
Write concept document, sketch architecture, list
requirements questions
Draft requirements document, list use cases, specify
user interface
Write use cases, model domain classes
Model solution classes & behavior
Model package structure, database design, and
interface design
Draft project plan (tasks, milestones, schedule,
resource allocation, risk plan)
Initial prototype implementation of a subset of the
critical functional requirements on the course web
development server
310313 -19
Alternative Projects

Students with a well-formed idea for a team
project may petition the instructors for
permission to work on an alternative topic
310313 -20
Project Grade
Task
Task name
Value
Date
out
0
Group Formation, Group Management and Personal
Time-log
10%
June
1
Initial System Prototype Development
15%
2
System Requirements Specification
15%
3
System Analysis & User Interface
4
System Design Specification & Implementation
Specification
Due
date
Weekly
30%
30%
310313 -21
วิกฤตกำรณ์ซอฟต์แวร์






้ งึ มีปญ
ทำไมซอฟต์แวร์ทใี่ ชจ
ั หำมำกมำย
โอ้ย! มีบ ักอีกแล้ว
ผมไม่พ ัฒนำโปรแกรมต่อจำกเขำหรอก..
เขียนใหม่สะดวกกว่ำ
โครงงำนนีไ้ ปไม่รอดแล้ว ทำย ังไงก็เสร็จไม่ท ัน
ทำเสร็จจนได้ .. บ ักนิดบ ักหน่อย คนอืน
่ เอำไป
พ ัฒนำต่อไม่ได้ ก็คงไม่เป็นไรหรอก ทำ
ท ันเวลำก็พอ
่ นของผมเสร็จแล้ว ทีท
่ นของ
สว
่ ำไม่เสร็จน่ะสว
เค้ำ งำนไม่สำเร็จไม่เกีย
่ วก ับผม
310313 -22
วิกฤตกำรณ์ชุดคำสง่ ั (ต่อ)

้ ำ
ค่ำใชจ
่ ยในกำรพ ัฒนำโปรแกรมปัจจุบ ันมี
้
แนวโน้มสูงขึน







ต ัวเงิน
เวลำ
กำล ังคน
้ ังไม่พอใจในโปรแกรมทีใ่ ชอ
้ ยู่
ผูใ้ ชย
แนวทำงในกำรพ ัฒนำชุดคำสง่ ั มีให้เลือกหลำย
ทำง
้ ระยุกต์งำนมีกำร
ควำมต้องกำรโปรแกรมเพือ
่ ใชป
ขยำยจำนวนมำก กำรตอบสนองในกำรพ ัฒนำไม่
ท ัน
้ ยูแ
้ ักปร ับเปลีย
โปรแกรมทีใ่ ชอ
่ ล้วผูใ้ ชม
่ นอยูเ่ สมอ
310313 -23
ี ของกำรพ ัฒนำชุดคำสง่ ั ทีไ่ ม่ตรงก ับ
ผลเสย
ควำมต้องกำร


้ ำ
ค่ำใชจ
่ ยทีเ่ กิดก ับผูใ้ ชโ้ ดยตรง
้ ำ
ค่ำใชจ
่ ยทีเ่ กิดจำกกำรปร ับปรุงแก้ไข
โปรแกรม
310313 -24
ซอฟต์แวร์(Software)




A Program
A Programming Product
A Programming System
A Programming System Product
Brooks, F. P. Jr, The Mythical Man-Month, 1975
310313 -25
A Program



้ เพือ
สงิ่ ทีผ
่ เู ้ ขียน(น ักโปรแกรม)เขียนขึน
่ ใชง้ ำน
เอง
สำมำรถพ ัฒนำให้เป็นสงิ่ ทีม
่ ป
ี ระโยชน์มำกกว่ำ
้ ำ่ ใชจ
้ ำ
แต่ใชค
่ ยมำกกว่ำได้
มีสองแนวทำงในกำรปร ับเปลีย
่ น


Programming Product
Programming System Product
310313 -26
A Program
A
Program
X3
A
Programming
System
(Interfaces, System Interaction)
X3
A
Programming
Product
A
Programming
Systems
Product
(Generalization,
Testing
Documentation
Maintenance)
310313 -27
A Programming Product



เป็นโปรแกรมทีใ่ ครก็ได้ สำมำรถนำไปใชง้ ำน
ทดสอบ แก้ไข และ เพิม
่ เติมควำมสำมำรถได้
โปรแกรมจะต้องเขียนในรูปทว่ ั ไป, ต้องผ่ำน
กำรทดสอบ, และมีเอกสำรประกอบอย่ำง
ละเอียด
้ น
Brooks ประมำณว่ำจะต้องใชต
้ ทุนมำกกว่ำ
โปรแกรมทีผ
่ ำ
่ นกำรตรวจสอบแล้วประมำณ 3
เท่ำ
310313 -28
A Programming System






ระบบของโปรแกรมทีท
่ ำงำนประสำนก ัน
จะต้องมีกำรติดต่อระหว่ำงโปรแกรม
้ อ
โปรแกรมจะต้องได้ร ับกำรพ ัฒนำเพือ
่ ใชข
้ มูล Input
และ Output สอดคล้องตำมรูปแบบทีไ่ ด้กำหนดไว้
้ ร ัพยำกรภำยในขอบเขตที่
โปรแกรมจะต้องใชท
กำหนด
่ นประกอบอืน
โปรแกรมจะต้องถูกทดสอบก ับสว
่ ๆใน
ระบบ
้ น
Brooks ประมำณว่ำจะต้องใชต
้ ทุนมำกกว่ำโปรแกรม
เดีย
่ วๆ (a stand-alone program) ประมำณ 3 เท่ำ
310313 -29
A Programming Systems Product


้ วำมพยำยำมในกำรพ ัฒนำมำกกว่ำเดิม 9
ใชค
เท่ำ
้ อยอย่ำงแท้จริง
แต่เป็นสงิ่ ทีม
่ ป
ี ระโยชน์ใชส
และเป็นเป้ำหมำยของกำรพ ัฒนำโปรแกรม
อย่ำงแท้จริง
310313 -30
ซอฟต์แวร์


ชุดคำสง่ ั ทีก
่ ระทำงำนทีต
่ อ
้ งกำร
เอกสำรทีแ
่ สดงวิธก
ี ำรใช ้
310313 -31
ล ักษณะเฉพำะของซอฟต์แวร์



ซอฟต์แวร์มล
ี ักษณะเป็นองค์ประกอบทำงตรรก
(logical)
ซอฟต์แวร์ตอ
้ งผ่ำนกำรพ ัฒนำ (developed)
่ ำรผ่ำนกำรผลิต ตำมควำมรูส
ึ ทว่ ั ไป
ไม่ใชก
้ ก
ื่ มสภำพ
ซอฟต์แวร์ไม่มก
ี ำรเสอ
Pressman R. S., Software Engineering Apractitioner’s Approach 5th Edition, 2001
310313 -32
ื่ มสภำพ
กำรเสอ
เสื่อมสภาพ
เวลา
กรำฟแสดงควำมถีข
่ องควำมผิดพลำดของ Hardware
310313 -33
ื่ มสภำพ
กำรเสอ
คงทีจ
่ นกระทง่ ั ล้ำสม ัย
เวลำ
กรำฟแสดงควำมถีข
่ องควำมผิดพลำดของ Software (อุดมคติ)
310313 -34
ื่ มสภำพ
กำรเสอ
เวลา
กราฟแสดงความถี่ของความผิดพลาดของ Software (ความเป็ นจริง)
310313 -35
ล ักษณะของซอฟต์แวร์ทด
ี่ ี




บำรุงร ักษำได้งำ
่ ย (maintainability)
ื่ ถือได้ (dependability)
เชอ
ิ ธิภำพ (efficiency)
มีประสท
นำไปใชง้ ำนได้ (usability)
310313 -36
ทำไมต้องวิศวกรรมซอฟต์แวร์?
...to get away from ad hoc and
unpredictable software development
towards a systematic, understood one...
310313 -37
Management myths

State-of-the-art tools are the solution


“A fool with a tool is still a fool”
Getting behind schedule resolved by hiring
additional programmers

“adding people to a late software project makes it
later”
310313 -38
310313 -39
สำเหตุสำค ัญของวิกฤตกำรณ์ของชุดคำสง่ ั





่ งว่ำงระหว่ำง users และ programmers
ชอ
กำรเปลีย
่ นแปลง(change)
ิ ธิภำพมำก ทำให้
กำรพ ัฒนำฮำร์ดแวร์ทม
ี่ ป
ี ระสท
ั อ
้ นมำกตำมไป
ซอฟต์แวร์ท ี่ ต้องใช ้ มีควำมซบซ
ด้วย
กำรตอบสนองต่อวิกฤตกำรณ์ The responses
to the crisis :
วิศวกรรมซอฟต์แวร์
paradigmsใหม่สำหร ับ decomposition ของ
ซอฟต์แวร์และกำรออกแบบและวิเครำะห์ปญ
ั หำ
310313 -40
วิศวกรรมซอฟต์แวร์
illustration of software engineering rationale
Maintenance
Testing
Implementation
Maintenance
Testing
Implementation
Design
310313 -41
วิศวกรรมซอฟต์แวร์

“art of computer programming” แบบเดิม
ถูกแทนด้วย engineering design และ
planning techniques เพือ
่ ใชใ้ นกำรพ ัฒนำ
โปรแกรม


สน ับสนุนโดยซอฟต์แวร์ CASE (Computer Aided Software
Engineering)
Early software engineering



้ ำรหำ
ไม่ให้เกิดกำรเปลีย
่ นแปลงโดยพยำยำมใชก
requirementsและ design
สน ับสนุนกำรใช ้ re-use of components (programs,
functions, objects)
management of complexity of software
(decomposition)
310313 -42
วิศวกรรมซอฟต์แวร์

OO software engineering



Plan for change, ease change
reuse of higher level components
new ways of decomposition
310313 -43
ผลกระทบทีเ่ กิดจำกำรเปลีย
่ นแปลง
Cost to change
60 - 100 x
1.5 - 6 x
1x
Definition
Development
After release
310313 -44
ควำมหมำยของ วิศวกรรมซอฟต์แวร์
Fritz Bauerr
้ ล ักกำรของ
“กำรพ ัฒนำชุดคำสง่ ั โดยใชห
วิศวกรรม เพือ
่ ให้ได้ชุดคำสง่ ั ทีท
่ ำได้อย่ำง
ื่ ถือและให้ผลงำน
ประหย ัด มีควำมหน้ำเชอ
ิ ธิภำพจำกเครือ
อย่ำงมีประสท
่ งมือเครือ
่ งใช”้
ื Software Engineering
 ปี 1984 หน ังสอ
Concepts ของ R. Fairley
“ด้วยหล ักเทคนิคและกำรจ ัดกำรอย่ำงเป็นระบบ
พ ัฒนำชุดคำสง่ ั ให้ใชไ้ ด้ในเวลำและอยูใ่ น
้ ำ
ค่ำใชจ
่ ยทีป
่ ระมำณไว้”

310313 -45
ควำมหมำยของวิศวกรรมซอฟต์แวร์



เป็นเรือ
่ งทีเ่ กีย
่ วข้องก ับกำรพ ัฒนำ กำร
ดำเนินกำร กำรบำรุงร ักษำ และกำรยกเลิกใช ้
ชุดคำสง่ ั อย่ำงมีคณ
ุ ภำพ
เป็นเรือ
่ งเกีย
่ วก ับกำรทำงำนเป็นทีมอย่ำงมี
ิ ธิภำพของน ักเขียนโปรแกรมทีพ
ประสท
่ ัฒนำ
้ ำ
ได้ท ันเวลำและอยูใ่ นค่ำใชจ
่ ยทีก
่ ำหนด
้ ล ักกำรของวิศวกรรม คือหล ักกำรทำง
ใชห
สร้ำงและกำรควบคุมตำมกระบวนกำรทำง
วิทยำศำสตร์
310313 -46
สรุปควำมหมำย
Software Engineering คือ กำรนำหล ักกำรทำง
่ ยพ ัฒนำ
วิทยำศำสตร์และคณิตศำสตร์มำชว
ชุดคำสง่ ั ในเรือ
่ งสำมประกำรคือ
ื่ ถือได้ของชุดคำสง่ ั
 ควำมถูกต้องเชอ
 กำรจ ัดกำรเกีย
่ วก ับชุดคำสง่ ั อย่ำงมีคณ
ุ ภำพ
 กำรเพิม
่ ผลผลิตให้ก ับน ักพ ัฒนำชุดคำสง่ ั
310313 -47
วิศวกรรมซอฟต์แวร์


กำรนำหล ักกำรทำงวิศวกรรมมำใชใ้ นกำร
พ ัฒนำซอฟต์แวร์
กำรพ ัฒนำซอฟต์แวร์อย่ำงมีระบบ
310313 -48
วิศวกรรมซอฟต์แวร์
พัฒนา
ใช้ งาน
บารุ งรั กษา
ปลดระวาง
310313 -49
ควำมสำค ัญของวิศวกรรมซอฟต์แวร์

กำรพ ัฒนำซอฟต์แวร์ขนำดใหญ่จะกระทำได้
ลำบำก ถ้ำไม่มก
ี ำรพ ัฒนำอย่ำงมีระบบ
310313 -50
วิศวกรซอฟต์แวร์

ผูท
้ น
ี่ ำควำมรูเ้ กีย
่ วก ับกำรพ ัฒนำซอฟต์แวร์มำ
ใชใ้ นกำรพ ัฒนำซอฟต์แวร์อย่ำงมีระบบ
310313 -51
Three P’s
People
Processes
Products
310313 -52
People, processes, products

People
• Products
 education
– requirements
 skills
– design
 communication
– source code
 style
– executable
 .....
– user
documentation
– test cases
– test results
– change request
– ....
• Processes
– planning
– coordination
– management
– measuring
– analysing
– designing
– coding
– .....
310313 -53
บุคลำกรทีเ่ กีย
่ วข้องก ับกำรพ ัฒนำ
ซอฟต์แวร์




Project Manager
System Analyst
Programmer
Software Engineer
310313 -54
ผูจ
้ ัดกำรโครงงำน (Project Manager)


้ วำมรูใ้ นด้ำนกำรบริหำรและกำร
เป็นผูท
้ ใี่ ชค
จ ัดกำร เพือ
่ ทีจ
่ ะทำให้โครงงำนนนส
ั้ ำเร็จ
หน้ำที่



วางแผนโครงงาน
จัดการเกีย
่ วกับบุคลากร
ควบคุมและตรวจสอบการดาเนินงาน
310313 -55
น ักวิเครำะห์ระบบ (System Analyst)


เป็นผูว้ เิ ครำะห์ควำมต้องกำรของลูกค้ำ และ
ออกแบบระบบเพือ
่ สนองควำมต้องกำรของ
ลูกค้ำ
หน้ำที่


วิเคราะห์ความต ้องการ (Requirement Analysis)
ออกแบบระบบทีต
่ อบสนองความต ้องการของลูกค ้า
310313 -56
น ักโปรแกรม (Programmer)


ั
เป็นผูพ
้ ัฒนำโปรแกรม โดยอำศยควำมรู
ท
้ ำง
เทคนิค
หน้ำที่

ออกแบบ และ เขียนโปรแกรม
310313 -57
วิศวกรซอฟต์แวร์
(Software Engineer)

เป็นงำนทีร่ วมบทบำทของบุคลำกรทงสำมกลุ
ั้
ม
่
Software
Engineer
310313 -58
Download