18 มิถุนายน 2552

Introduction to Component


ตาม Dictionary : Component หมายถึง หน่วยหนึ่
หรือส่วนหนึ่งของแบบจำลอง

โดย Hardware components ได้แก่ พวก การ์ดจอ
การ์ดแลน


ซึ่ง Software components พยายามพัฒนาให้เหมือนกับ hardware คือการเอา component มาประกอบกัน แล้วทำงานได้





ตัวอย่าง : การสร้างบ้าน

ไม่มีการใช้ components





นำเอา components มาใช้ โดยหน้าต่างเป็นส่วนประกอบที่นำมาประกอบกับตัวบ้านอีกที



คุณสมบัติของ Component ที่ต้องมี

1) เป็นส่วนหนึ่งของ software
2) ต้องใช้งานได้อย่างอิสระ หมายถึงว่าตัวมันเองก็สามารถทำงานได้ โดยไม่ผูกติดกับใคร แต่ก็ต้องทำงานร่วมกับคนอื่นด้วย
3) component ต้องสามารถนำไปประกอบร่วมกับ
คนอื่นได้
4) มีความสมบูรณ์ในตัวเอง ทำงานได้ด้วยตัวเอง
เมื่อ

พร้อมที่จะทำงาน เช่น มีข้อมูลครบแล้ว
5) มี interface ที่ชัดเจน สามารถนำกลับไปใช้ใหม่ได้
โดย ติดต่อผ่าน environment (ที่ที่ให้มันประกอบได้) ซึ่งมี service ต่างๆ ให้ใช้
และการสร้างโปรแกรม ไม่สนใจว่าข้างในเป็นอย่างไร สนใจแต่การติดต่อผ่าน interface เช่น .class, .dll ที่สามารถประกอบกันได้


About Component


Component ไม่ใช่ object แต่เวลาเรา run program จะเท่ากับเราสร้าง object ของ component ซึ่งต้องทำงานภายใต้อันใดอันหนึ่ง เช่น java, .net เป็นต้น

Component ไม่ใ่ช่ Service ซึ่ง Service จะปราศจากเ
รื่องของ platform แต่ Component ขึ้นกับ platform แต่เราสร้าง Service จาก Component

หลังจากพัฒนาไปเป็น binary แล้ว ผู้ใช้สามารถใช้งาน component นั้นได้ โดยผ่าน properties, methods และevents ซึ่งอาจจะไม่ต้องค
รบ

ทั้งสามส่วนก็ได้

Component จะประกอบด้วย Object ย่อยหลายๆตัวที่ทำงานให้มัน ซึ่งหมายความว่า สร้างขึ้นมาจาก Object หลายๆตัว

Component ไม่ขึ้นกับภาษา หรือเรียกว่า languag
e neutral แต่ Object ไม่ได้นิยามเรื่องการคุยข้ามภาษา


การใช้ Object จะต้องมี document ที่บอกว่ามี Object อะไรที่ใช้ได้บ้าง แต่ Component เป็น self-description ที่ tools สามารถบอกเราได้

CBSE ( Component-Based Software Engineering )

CBSE = COA (Analysis) + COD (Design) + COP (Programming) + COM (Management)


- สร้างเพื่อการ reuse
- สร้างเพื่อนำ component ที่มีอยู่มา reuse

ความแตกต่างของ CBD ( Component-Based
Development ) และ OOP ( Object-Oriented Programming )

Component มีวิธีการทุกๆอย่างเหมือน OOP แต่จะเพิ่มในเรื่องของ การจัดกลุ่ม (packaging) การติดตั้ง (deployment) และสิทธิการใช้งาน (licens

ing)

OOP จะบอกถึงการออกแบบ เขียน code และหลังจากที่ test ว่า run บนระบบได้แล้วก็จะจบ แต่ Component จะบอกถึงการติดตั้ง และสิทธิการใช้งาน


OOP จบที่เครื่องผู้พัฒนา แต่ CBD จบที่เครื่อง end-user

สิ่งที่เหมือนและแตกต่างของ SP (Structur
ed Programming) OOP และ COP





Divide and conquer : แบ่งปัญหาใหญ่ ออกเป็นปัญหาย่อยให้หมด จะทำให้แก้ปัญหาใหญ่ได้ โดย SP สน function และ OOP สน class


Unification of data and function : จับเอา data กับ function มารวมกันเป็นก้อนเดียว
Encapsulation : ไม่ให้ client เข้าถึง data ได้โดยตรง วิธีของ OOP คือ ใช้ getter, setter
Identity : สามารถอ้างถึง entity ได้โดยไม่ซ้ำ (Primary Key) คือ แต่ละ software มี id ของตัวเอง
Interface : แยก interface กับ implement ออกอย่างชัดเจน
Deployment : การกำหนด deployment โดย COP ติดตั้งอย่างอิสระ


Component Goals

1. Conquering Complexity : จัดการเรื่องความซับซ้อน เช่น ขนาด source code ถ้าพัฒนาโปรแกรมแบบเดิมจะจัดการเรื่องพวกนี้ไม่ไ่ด้
2. Managing change : การเปลี่ยนแปลงเป็นเรื่องปกติของ software engineering โดย software เปลี่ยนแปลงตลอดตาม user และต้องพยายามให้แต่ละ component ไม่ขึ้นต่อกัน
3. Reuse : Component ยิ่ง reuse ได้หลายๆครั้ง ก็ยิ่งคุ้มค่า

Component Forms (Based-on Enginee

ring Process)

1. Component specification : ข้อกำหนดของ Component ว่า Component นี้จะทำอะไร มี object อะไรบ้าง เช่น ก่อนการพัฒนา MS Word ทีมพัฒนาก็ต้องกำหนดว่า MS Word จะสามารถทำอะไรได้บ้าง
2. Component Interface : เป็นการระบุพฤติกรรมของ Component Object ซึ่งนำไป implement ได้ตาม interface
3. Component Implementation : สามารถ ins

tall และไม่ขึ้นกับการถูกแทนที่ด้วย Component อื่น ซึ่งสิ่งที่ได้จาก implementation คือ ไฟล์ หรือสิ่งที่จำเป็นทั้งหมดของ Program
4. Installed Component : การ install component ลงในเครื่อง เช่น เวลา install MS Word อาจจะมีไฟล์ .dll มากมายที่ต้องการ โดย 1 component = 1 file
5. Component Object : สร้างเมื่อมีการ installed Component หรือก็คือ เมื่อมีการ run program ก็เท่ากับว่ามีการสร้าง Component Object นั่นเอง



Principles

- Component แสดงส่วนประกอบ และนามธรรม
- reuse ได้ง่าย จะทำให้ประสบความสำเร็จในหลายๆระดับ
- CBSD ช่วยเพิ่มความอิสระ

- CBSD สามารถเพิ่มผลิตภัณฑ์ software ได้ดีขึ้น
- CBSD ทำให้เกิดมาตรฐาน


Philosophy

- โครงสร้างพื้นฐาน มองว่าเป็น component technology ก็ได้
- component technology ที่ต่างกัน จะมีโครงสร้างที่ต่างกัน และมีการกำหนด component ที่ต่างกัน เช่น ของ java หรือของ C++ ก็ต้องแปลงไป .net ก่อน ถึงจะใช้ร่วมกันได้

Component infrastructure



framework ที่ทำการสร้าง มาประกอบกัน แล้วส่งออกไปติดตั้ง

Component จะไม่มีอยู่ถ้าปราศจากโครงสร้างพื้นฐาน

Component infrastructure ประกอบด้วย


1) Component model เช่น จะเขียนยังไง ให้แสดงข้อมูลของตัวเองออกมา
2) Connection model คือ การนำ component มาต่อกัน
3) Deployment model เป็นตัวบอกว่าจะส่ง component นี้ไปติดตั้งอย่างไร

Component ประกอบด้วย 4 ส่วน คือ


1) Properties(P) เป็น set ของตัวแปร ซึ่งประกอบด้วย ชื่อตัวแปรและชนิดตัวแปร
2) Method(M) ประกอบด้วย modifier (public, private, protected) , static/non-static , return type , ชื่อ method และ พารามิเตอร์
3) Event(E) เป็นเหตุการณ์
4) Interface(I) คือ subset ของผลคูณของ powerset ของ P,M,E

ซึ่ง P,M,E เป็นตัวบอกว่า Component ทำอะไร
และ Interface เป็นตัวบอกว่า จะใช้ Componentได้อย่างไร