290353 Object-Oriented Analysis and Design

Download Report

Transcript 290353 Object-Oriented Analysis and Design

291474
Selected Topics in Information System I
บทที่ 1
วงจรการพัฒนาระบบและ
รู ปแบบการพัฒนาซอฟต์ แวร์
อ.ธารารัตน์ พวงสุ วรรณ
[email protected]
เนือ้ หา







Definition ที่เกีย่ วข้ อง
SDLC : System Development Life Cycle
แบบจาลองการพัฒนาระบบหรือซอฟต์ แวร์
แนวทางการพัฒนาระบบหรือซอฟต์ แวร์
แนวคิดการพัฒนาระบบงานเชิงวัตถุ
เปรียบเทียบการพัฒนาระบบแบบเดิมกับแบบเชิงวัตถุ
เครื่องมือสนับสนุนการพัฒนาระบบ
Definition
Software
 Computer programs and associated documentation such as
requirements, design models, and user manuals
Software engineering (IEEE standard 612-12(1999)
 the application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software, and
the study of these approaches; that is, the application of
engineering to software.
System analyst
 Responsible for analysis and design of information system
(SDLC: System Development Life Cycle)
 หมายถึง ขั้นตอนหรื อกระบวนการในการพัฒนาระบบงาน
ประกอบด้วย
1. เข้าใจปัญหา (Problem Recognition)
2. ศึกษาความเป็ นไปได้ (Feasibility Study)
3. วิเคราะห์ (Analysis)
4. ออกแบบ (Design)
5. สร้าง หรื อพัฒนา (Construction)
6. การติดตั้งหรื อการปรับเปลี่ยน (Installation, Conversion)
7. บารุ งรักษา (Maintenance)
(SDLC: System Development Life Cycle)
สามารถแบ่งช่วงชีวติ ของ information system เป็ น 2 ช่วง
 Systems development
 System operation and support
แบบจาลองการพัฒนาระบบหรือซอฟต์ แวร์
(Software Development Process Model)
เป็ นกรรมวิธีในการพัฒนาซอฟต์แวร์ใช้เพื่อเป็ นแนวทาง
ในการพัฒนาซอฟต์แวร์ต้ งั แต่เริ่ มต้นจนสาเร็ จ
แบบจาลองแต่ละแบบมีขอ้ ดีขอ้ เสี ยแตกต่างกัน
โมเดลการพัฒนาซอฟต์แวร์สมัยใหม่ตามหลักวิศวกรรม
ซอฟต์แวร์ มักจะผนวกขั้นตอนหรื อกระบวนการที่ทางาน
ในลักษณะ Iteration, Incremental และ Prototyping
มีการผสมผสานแบบจาลองเข้าด้วยกัน
แบบจาลองการพัฒนาระบบหรือซอฟต์ แวร์
(Software Development Process Model)
Water Fall Model
Iterative Model
Incremental Model
Spiral Model
Prototype Model
Rapid Application Development (RAD)
Joint Application Development (JAD)
Rational Unified Process (RUP)
Etc.
Traditional Water Fall Model
Water Fall Model
Iterative Model
Incremental Model
รูปแบบการพัฒนาซอฟต์ แวร์
(Software Development Methodologies)
การพัฒนาซอฟต์ แวร์ แบบโครงสร้ าง (Structured
Methodologies) เป็ นแบบดั้งเดิม
การพัฒนาซอฟต์ แวร์ แบบเชิงวัตถุ (Object Oriented
Methodologies)
Structured Methodologies
ใช้ แนวคิดแบบระดับบนสู่ ระดับล่ าง (Top - down design)
พิจารณางานหลักๆ จากนั้นจึงแตกแยกย่ อยเป็ นงานเล็กๆ จนถึง
ขั้นตอนทีแ่ สดงรายละเอียดการปฏิบัตงิ านตา่ สุ ด
 พิจารณางาน (Process oriented) มากกว่ าการพิจารณาเกีย่ วกับ
ข้ อมูล (Data oriented)
การออกแบบเชิงโครงสร้ าง (Structured Design)
การโปรแกรมเชิงโครงสร้ าง (Structured Programming)
เหมาะกับโปรเจ็คทีม่ ีความต้ องการจากผู้ใช้ ทแี่ น่ นอน
Structured analysis and design (SAD)
Analysis Phase
Determine system requirements
Structuring system process requirements
 Logical requirements (logical modeling)
Structuring system data requirements
Design Phase
Database Design (DB Normalization)
Forms and report design (GUI Design)
Structured analysis
Determine system requirements
Interviewing
 Structuring system process requirements
 Data Flow diagram (logical process modeling)
 DFD Levels (process decomposition)
 Context diagram
 Logical requirements (logical modeling)
Use decision tree /table (logical choice in conditional statements)
 Structuring system data requirements
ER diagram
Structured Methodologies
Process1
Input number
Calculate salary
N
N
Process2
Number<0
Y
Process3
neg=neg+1
(1)Sequence
(2) Decision
pos=pos+1
End of file
Y
STOP
(3) Repetition
Logic Modeling Techniques
Structured Methodologies
(มาจาก: http://www.jpmensah.com/ITEC485/images/er_diagram.gif)
Structured Methodologies
มองปัญหาในรู ปของกระบวนการทางาน จากนั้นให้แตกกระบวนการ
ทางานดังกล่าวออกเป็ นส่ วนย่อยๆ เรี ยกว่า ฟังก์ชัน แล้วจึงนาฟังก์ชนั
ต่างๆมาเชื่อมโยงการทางานเข้าด้วยกันในภายหลัง
ตัวอย่างภาษาคอมพิวเตอร์ที่ใช้ในการพัฒนา ได้แก่ Pascal, C เป็ นต้น
Object Oriented Methodologies
 Object-oriented analysis and design (OOAD)
การออกแบบและการโปรแกรมเชิงวัตถุ (OOAD & OOP)
มองทุกอย่างในระบบเป็ นวัตถุ (Object)
รองรับระบบงานที่มีความซับซ้อนสูง
เหมาะกับโปรเจ็คที่มีขนาดใหญ่และมีความเสี่ ยงในการเปลี่ยนแปลง
ความต้องการจากผูใ้ ช้
Object-Oriented Development
มีลกั ษณะเป็ นกระบวนการแบบ Iterative และ Incremental
ประกอบไปด้วย
 การวิเคราะห์ความต้องการระบบ
 วิเคราะห์ระบบ
 ออกแบบระบบ
 พัฒนาและติดตั้งระบบ
 บารุ งรักษาระบบ
แนวคิดการพัฒนาระบบงานเชิงวัตถุ
เป็ นความคิดที่ใช้ในการสร้างโมเดลของสิ่ งที่มีความซับซ้อน โดยมี
จานวนเหตุการณ์ที่เกิดขึ้นจานวนมากที่เกี่ยวกับเช็ตของวัตถุ
ความสัมพันธ์ของเหตุการณ์ที่เกิดขึ้นเกี่ยวพันและเชื่อมโยงกับวัตถุ
การใช้วิธีการเชิงวัตถุจึงเป็ นวิธีการทางเทคนิคที่ทาให้เกิดรู ปธรรม
แนวคิดการพัฒนาระบบงานเชิงวัตถุ
หลักการของการคิดเชิงวัตถุ
 มองการพัฒนาระบบเหมือนกับการมองโลกแห่งความเป็ นจริ ง
มองสิ่ งต่างๆ เป็ นวัตถุหรื อออบเจ็กต์ แต่ละออบเจ็กต์จะมีคณ
ุ สมบัติและ
การทางานเฉพาะตัว
ออบเจ็กต์สามารถมีความสัมพันธ์กบั ออบเจ็กต์อื่นๆ ได้
ออบเจ็กต์มีคุณลักษณะบางประการคล้ายๆ กัน เราก็จะนากลุ่มออบเจ็กต์
เหล่านั้นมารวมให้อยูใ่ นกลุ่มเดียวกัน
Object-oriented analysis and design (OOAD)
Based on objects rather than data or processes
Object : a structure encapsulating attributes and behaviors of a realworld entity
 Object class : a logical grouping of objects sharing the same attributes
and behaviors
 An Object can have relation to other objects or classes.
Object-oriented analysis and design (OOAD)
 Analysis Phase
 Structuring requirements (Use case)
 Conceptual data modeling (Class diagram)
 Object relationship modeling
 Class diagram --> ER Diagram
 Design phase
 Physical DB design
 Design elements : classes, component, system architecture
 GUI design
Object Oriented Methodologies
เป็ นการคิดและสร้างระบบงานในลักษณะโลกของความเป็ นจริ ง
มองสิ่ งต่างๆ เป็ นวัตถุหรื อออบเจ็กต์ ซึ่งออบเจ็กต์ต่างๆ จะมีความอิสระ
ไม่ข้ ึนต่อกัน แต่มีการทางานร่ วมกัน
ตัวอย่างภาษาคอมพิวเตอร์ที่ใช้ในการพัฒนา ได้แก่ Java, C++
,SmallTalk เป็ นต้น
Object Oriented Methodologies
Object Oriented Methodologies
Customer
name
address
phone
Account
1
0..*
accountNumber
balance
dateOpened
makeDeposit
makeWithdrawal
SavingsAccount
CheckingAccount
interestRate
checkStyle
minimumBalance
calculateInterest
เปรียบเทียบวิธีการแบบเดิมกับวิธีการเชิงวัตถุ
วิธีการเชิงฟั งก์ ชัน
วิธีการเชิงวัตถุ
ลักษณะทัว่ ไป
นำปั ญหำมำแตกเป็ นส่วนย่อยๆ รูปของ
กระบวนกำรทำงำน
มองสิง่ ต่ำงๆ ในระบบเป็ นออบเจ็กต์
ซึง่ มีควำมเป็ นอิสระต่อกัน แต่ทำงำน
ร่วมกัน
ลักษณะกำรจำแนกงำน
แตกกระบวนกำรทำงำนเป็ นหน่วยย่อยๆ เรี ยกว่ำ
ฟั งก์ ชัน
จำแนกออบเจ็กต์แล้ วแบ่งกลุม่ ของ
ออบเจ็กต์ตำมคุณลักษณะของแต่ละ
ออบเจ็กต์
ควำมขึ ้นต่อกัน
ฟั งก์ชนั กำรทำงำนต่ำงๆ จะมีลกั ษณะกำรทำงำน แต่ละออบเจ็กต์มีควำมเป็ นอิสระไม่
ขึ ้นตรงต่อกัน มีกำรส่งพำรำมิเตอร์ จำกฟั งก์ชนั
ขึ ้นต่อกัน และติดต่อกันโดยกำรส่ง
หนึ่งไปยังอีกฟั งก์ชนั หนึ่ง
เมสเสจถึงกัน
ขั ้นตอนกำรทำงำน
เริ่มต้ นที่กำรกำหนดโครงสร้ ำงและประเภทของ
ข้ อมูล จำกนั ้นกำหนดฟั งก์ชนั กำรทำงำนกับ
โครงสร้ ำงข้ อมูลดังกล่ำว
เริ่มต้ นด้ วยกำรกำหนดคุณสมบัตแิ ละ
พฤติกรรมให้ ออบเจ็กต์ต่ำงๆ จำกนั ้น
สร้ ำงควำมสัมพันธ์ระหว่ำงออบเจ็กต์
ว่ำจะทำงำนร่วมกันอย่ำงไร
Key differences between structured and object
oriented analysis and design
Structured
Object-oriented
Methodology
SDLC
Iterative/Incremental
Focus
Risk
Reuse
Maturity
Suitable for
Processes
High
Low
Mature and widespread
Well-defined project with stable user
requirements
Structuring requirements
DB Normalization
Objects
Low
High
Emerging (1997)
Risky large project with
changing user requirements
Requirement Engineering
Design elements
Analysis
Design
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools)
 CASE Tool (Computer-Aided Software Engineering)
เป็ นเครื่ องมือที่นามาใช้สนับสนุนการพัฒนาระบบให้มีความรวดเร็ ว มี
มาตรฐานและมีคุณภาพมากยิง่ ขึ้น
สามารถช่วยสร้างแผนภาพ รายงาน โค้ดโปรแกรม ในระหว่างการ
วิเคราะห์และออกแบบระบบให้เป็ นไปโดยอัตโนมัติ
เป็ นโปรแกรมประยุกต์หรื อเป็ นซอฟต์แวร์ชนิดหนึ่ง ที่ช่วยในการพัฒนา
ระบบ และสนับสนุนการทางานในแต่ละขั้นตอนของการพัฒนา
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools)
ประเภทของ Case tools
Upper Case tools
 เป็ นเครื่ องมือที่ช่วยสนับสนุนการทางานในขั้นตอนต้น ๆ ของ
การพัฒนาระบบ ได้แก่ ขั้นตอนการวางแผน ขั้นตอนการ
วิเคราะห์ และขั้นตอนการออกแบบระบบ
Lower Case tools
เป็ นเครื่ องมือที่ช่วยสนับสนุนการทางานในขั้นตอนสุ ดท้ายใน
การพัฒนาระบบ ได้แก่ ขั้นตอนการออกแบบ ขั้นตอนการพัฒนา
และทดสอบระบบ และขั้นตอนการให้บริ การหลังการติดตั้ง
ระบบ
เครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tools)
CASE ทั้งสองระดับนี้ มีการทางานที่ซ้ าซ้อนกันอยู่ บางครั้งองค์กรอาจ
เลือกใช้งาน CASE Tools ทั้ง 2 ระดับร่ วมกันได้
 ตัวอย่างของ Software CASE Tools
1. Rational Rose : ใช้สาหรับวาด UML Design for OO(Object Oriented) และ
generate code
2. Visible Analyst: ใช้สาหรับวาด Context Diagram และ Data flow diagram
3. Visual Studio : ทาออกแบบและสร้าง web
4. Oracle Enterprise Development Suite
5. Paradigm Plus
6. Logic Works Suite
7. AxiomSys and AxiomDsn
8. V32 & X32
Upper Case Tools
Upper Case Tools
Lower Case Tools
คาถามท้ ายบท
1. SDLC คืออะไร ประกอบด้วยขั้นตอนอย่างไรบ้าง
2. โมเดลการพัฒนาซอฟต์แวร์ตามหลักวิศวกรรมซอฟต์แวร์ มีอะไรบ้าง จง
ยกตัวอย่างมา 3 โมเดล
3. Software CASE Tools คืออะไร มีความสาคัญต่อการพัฒนาซอฟต์แวร์
อย่างไร