introduction software factory v1.1

30
1 ชื่อไฟล์ : Introduction Software Factory ต้นฉบับ : นักเขียนต้นฉบับ : ลงในฉบับ / คอลัมน์ : โดย (หรือ เรียบเรียงโดย) : ปฐมรัตน์ ใจกว้าง (นายประกอบ พงศ์ปฏิเมธ) บรรณาธิการ : ชื่อเรื่อง : 1. การพัฒนาซอฟต์แวร์ด้วย Software Factory Toolkits 2. ความรู ้เบื ้องต ้นเกี่ยวกับ Enterprise Software Architecture Development 3. ความรู ้เบื ้องต ้นเกี่ยวกับ Software Factory เรื่องย่อ : การพัฒนาซอฟต์แวร์ด้วยแนวคิด Software Factory เป็นแนวคิดที่ใช้ออกแบบและพัฒนาระบบงานขนาดใหญ (Enterprise Software Development) ซึ่งจาเป็นอย่างมากที่ต้องพัฒนาโครงสร้างหลักหรือสถาปัตยกรรมซอฟต์แวร์ (เฟรมเวิร์ค) ให้ดีเสียก่อน แต่ นักพัฒนาในบ้านเราส่วนมากก็คิดพัฒนาเฟรมเวิร์คด้วยตนเอง ใครมีประสบการณ์มากก็พัฒนาได้ดี ใครมีประสบการณ์น้อยก็พัฒนาได้ไม่ ดีนัก รวมถึงความรู ้ในเรื่อง Enterprise Software Architecture ของนักพัฒนาบ้านเรายังมีไม่มาก และต่างคนต่างพัฒนา ทาให้วิธีการและ กระบวนการมีความหลายหลากและไม่สามารถแลกเปลี่ยนแนวคิดกันได้มากนัก ทาให้กระบวนการเรียนรู ้ของเรามีจากัด ดังนั ้นส่วนที่ผม เสนอมานี้คือการนาแนวคิดมาตรฐานที่ทางกลุ ่มพันธมิตรไมโครซอฟต์ (Microsoft Community) ได้พัฒนามาให้ใช้เพื่อใช้เป็นรูปแบบ (Patterns) และนามาปฏิบัติได้จริง (Practices) ซึ่งก็ตรงกับชื่อกลุ ่มที่เขาตั้งมาคือ Patterns & Practices นั่นเอง ดังนั้นจึงอยากเรียนเชิญ ผู ้อ่านทุกท่านลองมาทาความรู ้จักเครื่องมือ รูปแบบและกระบวนการที่เขาให้มาว่ามันจะดีเพียงใด และถ้ามันดีจริง ก็อยากให้พวกเรา ช่วยกันเรียนรู ้และมาแลกเปลี่ยนความคิดกัน ผมเพียงแต่เป็นผู ้นาเสนอและเริ่มต้นให้ครับ รวมทั ้งยินดีตอบคาถามที่ท่านผู ้อ่านสงสัยในสิ่ง ที่ผมพอตอบได้ครับ โปรยเปิด : เนื้อเรื่อง :

Upload: lek-pongpatimet

Post on 15-Aug-2015

24 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Introduction Software Factory v1.1

1

ชอไฟล : Introduction Software Factory ตนฉบบ : นกเขยนตนฉบบ : ลงในฉบบ / คอลมน : โดย (หรอ เรยบเรยงโดย) : ปฐมรตน ใจกวาง (นายประกอบ พงศปฏเมธ) บรรณาธการ : ชอเรอง : 1. การพฒนาซอฟตแวรดวย Software Factory Toolkits 2. ความรเบองตนเกยวกบ Enterprise Software Architecture Development 3. ความรเบองตนเกยวกบ Software Factory เรองยอ : การพฒนาซอฟตแวรดวยแนวคด Software Factory เปนแนวคดทใชออกแบบและพฒนาระบบงานขนาดใหญ (Enterprise Software Development) ซงจ าเปนอยางมากทตองพฒนาโครงสรางหลกหรอสถาปตยกรรมซอฟตแวร (เฟรมเวรค) ใหดเสยกอน แตนกพฒนาในบานเราสวนมากกคดพฒนาเฟรมเวรคดวยตนเอง ใครมประสบการณมากกพฒนาไดด ใครมประสบการณนอยกพฒนาไดไมดนก รวมถงความรในเรอง Enterprise Software Architecture ของนกพฒนาบานเรายงมไมมาก และตางคนตางพฒนา ท าใหวธการและกระบวนการมความหลายหลากและไมสามารถแลกเปลยนแนวคดกนไดมากนก ท าใหกระบวนการเรยนรของเรามจ ากด ดงนนสวนทผมเสนอมานคอการน าแนวคดมาตรฐานททางกลมพนธมตรไมโครซอฟต (Microsoft Community) ไดพฒนามาใหใชเพอใชเปนรปแบบ (Patterns) และน ามาปฏบตไดจรง (Practices) ซงกตรงกบชอกลมทเขาตงมาคอ Patterns & Practices นนเอง ดงนนจงอยากเรยนเชญผอานทกทานลองมาท าความรจกเครองมอ รปแบบและกระบวนการทเขาใหมาวามนจะดเพยงใด และถามนดจรง กอยากใหพวกเราชวยกนเรยนรและมาแลกเปลยนความคดกน ผมเพยงแตเปนผน าเสนอและเรมตนใหครบ รวมทงยนดตอบค าถามททานผอานสงสยในสงทผมพอตอบไดครบ โปรยเปด : เนอเรอง :

Page 2: Introduction Software Factory v1.1

2

Enterprise Software Architecture Development กบ Software Factory

สวสดครบ ผมปฐมรตน ใจกวาง ส าหรบครงนเปนครงแรกทผมเขยนบทความลงบน PC Magazine แตกไมใชใหมเสย

ทเดยว เพราะวาเคยแปลหนงสอของ Microsoft Press ทเกยวกบ Windows 2000 Professional ตอนนนเปนอะไรทเหนอยมาก เพราะเรมตนไมรจะใชค าอะไรด การใชภาษาเปนเรองยากจรงๆ

มาวนนไมไดมาแปลหนงสอ แตมาเขยนบทความทมาจากประสบการณ ทงทเคยวเคราะห ออกแบบระบบ และ ศกษาและพฒนา (Research and Development) เทคโนโลยใหมๆ ของไมโครซอฟตมาหลายป จนไดไปเหน เครองมอทใชพฒนางานทเปนรปแบบ มตวอยางการใชงาน ตวอยางระบบงานจรง ขนตอนและวธการใชงานเปนระบบแบบแผน รวมถงตวซอฟตแวรเลยทเดยว โดยมบรษทไมโครซอฟตเปนแกนน า และมพนธมตรมารวมตงเปนกลมนกพฒนาโดยใชรปแบบการพฒนามาตรฐาน ซงผมกสนใจเขาไปศกษาและเรยนร รสกวานาสนใจมาก กเลยอยากแนะน าสงดๆ ใหผอานลองอานดครบ และเปดโอกาสใหทกทานวจารณและแลกเปลยนความคดเหนกนได ผมกเพยงเอาประสบการณเลกๆ นอยๆ มาน าเสนอ

ส าหรบเครองมอดงกลาวนน เปนเครองมอทใชพฒนาระบบงานและสถาปตยกรรมซอฟตแวรขนาดใหญ (Enterprise

Software Development) ซงผมจะเรมตนจากแนวคดของการตงโรงงานพฒนาซอฟตแวร (Software Factory) เพราะวาแนวคดของเครองมอพฒนาดงกลาวนมาจากแนวคดของโรงงานผลตซอฟตแวร (Software Factory) ซงหลายทานอาจจะเหนวาเปนเรองใหญมาก และเรวๆ น กมขาวบอกมาวา เราจะเปน Outsource แขงกบ อนเดย จน เวยดนาม ในดาน Enterprise Software กขอใหทบทวนนโยบายใหม เรามนกพฒนาซอฟตแวรหลกหมน แตเวยดนามมแผนจะผลตนกพฒนาซอฟตแวรเปนหลกลาน เราจะท าอยางไรด ถาบทความผมมประโยชนตอการสรางสรรคนกพฒนาซอฟตแวรเลกๆ ผมกยนดแลวครบ ถาผใหญของเรายอมแพ พวกเราจะยอมแพตามหรอเปลาครบ ผมคนหนงทไมยอมแนนอน

กอนอนเรามาเรมเรองแนวคดของการพฒนาระบบงานดวย Software Factory ของเราดกวาครบ แนวคดของการพฒนาระบบงานดวย Software Factory

ส าหรบแนวคดในการออกแบบระบบงานนนจะใชแนวคดของโรงงานพฒนาซอฟตแวร (Software Factory) ซงเปนการรวบรวมองคความรสมยใหมแบบบรณาการเพอใชแกไขปญหาและปรบปรงกระบวนการพฒนาซอฟตแวรจากการพงพาฝมอของนกพฒนาไปสการใชเทคโนโลยชนสงและความรทางวศวกรรมซอฟตแวรททนสมยใหเหมอนกบอตสาหกรรมการผลตประเภทอน เชน อตสาหกรรมผลตรถยนต เปนตน โดยแนวคดโรงงานพฒนาซอฟตแวร (Software Factory) นจะเนนการออกแบบและพฒนาชนสวนซอฟตแวร (Semi-Part) ซงจะถอวาเปน Software Asset พรอมทจะน ามาปรบแตงและน ามาประกอบกนใหเปนชนสวนซอฟตแวรส าเรจ (Finished Software Part) เพอน าไปใชประกอบกนเปนแอพพลเคชนอกทหนงตวอยางเชน ชนสวนหนาจอทใชบนทกเรยกดสนคาคงคลงเปนตน ซงชนสวนนจะแยกออกจากชนสวนเปนบซเนสโลจก (Business Logic) และสวนทจดการขอมล (Data Access) ส าหรบชนสวนหนาจอนนกยงสามารถแยกออกเปนชนสวนยอยๆ ไดอกและน ามาประกอบกนเปนหนาจอส าเรจ (Finished Screen Part) เพอใหงายตอการปรบปรงเปลยนแปลงหนาจอใหมความหลายหลากตามความตองการของลกคาทเปลยนไป รวมไปถงการเปลยนแปลงเทคโนโลยใหมในอนาคต

จากแนวความคดโรงงานพฒนาซอฟตแวรนน กเปนทพดกนมานานมากทงในประเทศและตางประเทศแตกยงไมประสบความส าเรจมากนกเนองจากขาดเทคโนโลยสนบสนนท าใหการพฒนาใชตนทนสง ซงผทเรมใชแนวคดของโรงงานพฒนาซอฟตแวรครงแรกคอ บรษท Hitachi ไดเรมพฒนา Hitachi Software Factory ขนมาเมอป 2512 ตอจากนนบรษท System Development ของอเมรกา กเรมใชแนวคดนในการพฒนาเมอป พ.ศ. 2518

Page 3: Introduction Software Factory v1.1

3

จากแนวคดดงกลาวนน ในปจจบนนมความเปนไปไดสงขนเมอ Jack Greenfield และ Keith Short ซงทงสองทานเปน Architect อยทบรษทไมโครซอฟท ไดเขยนหนงสอชอวา “Software Factories Assembling Application with Patterns, Models, Frameworks, and Tools” เมอป พ.ศ. 2547 หลงจากนนป พ.ศ. 2548-ปจจบน ทางบรษทไมโครซอฟต รวมถงกลมพนธมตรของไมโครซอฟต (Microsoft Community) ทอยทวโลก กไดผลตเครองมอในการพฒนาซอฟทแวรขนตามแนวคดของบคคลทงสองน โดยเรมตนจาก Enterprise Library Block ซงใชเปนมาตรฐานในการเขยนโปรแกมในเรองตาง ๆ เชน การตดตอฐานขอมล การเขยนโปรแกรมตรวจสอบความผดพลาดของโปรแกรม การเขยน Log File เปนตน หลงจากนนกไดออกชดเครองมอ Smart Client Software Factory (SCSF) ซงนบไดวาเปนกาวแรกของแนวคด Software Factory จากนนกไดออก Web Service Software Factory (WSSF) ซงใชเปนเครองมอหรอเครองจกรในการผลตชนงานทเปน SOA ซงเครองมอทงหมดนจะใช Guidance Automation Toolkit เปนเครองมอสรางชนสวนซอฟตแวรใหโดยอตโนมตถาชนสวนนนถกพฒนาดวยวธการ รปแบบและขนตอนเดยวกน หลงจากนนกไดพฒนา Composite Application Guidance ส าหรบ WPF และ Silverlight เพอใชกบเทคโนโลยใหมของไมโครซอฟต นนกคอ WPF และ Silverlight นอกจากนนกมเครองมออนๆ อกมาก ซงเครองมอตางๆ นสามารถดาวนโหลดมาใชไดโดยไมเสยคาใชจายใดๆ ซงจะท าใหประหยดตนทนในการพฒนาเครองมอและท าใหระบบงานรองรบงานไดยดหยนและมมาตรฐานเทยบเทาตางประเทศได ส าหรบรปท 1 นนจะเปนสงทมาพรอมกบเครองมอ

รปท 1: ค าแนะน ามาตรฐาน (Guidance) และตวอยางการใชงานของ Software Factory

จากรปท 1 จะเหนวาชดเครองมอของ Software Factory นนจะม ขอแนะน าเชงปฏบต (Recommended Practices) ซงจะแบงออกเปนหลายๆ ดานดวยกน คอ เอกสารทอธบายสถาปตยกรรมการออกแบบ (Architecture Documentation) ตวอยาง QuickStarts

Page 4: Introduction Software Factory v1.1

4

รปแบบมาตรฐานทใชพฒนา (Patterns) ไลบราร และ บลอกมาตรฐานส าหรบพฒนาแอพพลเคชน (Application Blocks) เทมเพลตชวยการพฒนา และ Recipes รวมถงตวอยางแอพพลเคชนจรงทใชพฒนาดวยวธน (Reference Implementation) ซงชวยใหสามารถศกษาวธการใชงานของเครองมอดงกลาวไดเปนอยางด

จากแนวความคดเรองโรงงานพฒนาซอฟตแวร (Software Factory) รวมถงเครองมอตางๆ ทบรษทไมโครซอฟตไดพฒนาขนมาชวยสนบสนน ท าใหเราสามารถพฒนาชนสวนซอฟตแวร (Simi-Software Part) ไดงายขนดวยวธการดงรปดานลาง

รปท 2: รปแสดงการพฒนาชนสวนซอฟตแวร

จากรปจะเหนวา สวนทอยดานลางนนจะเปน Fixed Assets ซงเปนชนสวนประกอบทจะใชท าเปนซอฟตแวร และทางฝงซายมอ กเปนกระบวนการทเพมเขามาคอ เราตองมการท า Product Line Development ซงตรงนกอาจหมายถง การแบงออกเปน การพฒนาหนาจอ สวนเชอมตอฐานขอมล และสวนบซเนสโลจกเปนตน ซงเมอเราเตรยมเสรจเรยบรอยแลว มนกจะเปน Variable Asset ทพรอมเขาไปอยในกระบวนการทางดานขวามอกคอ Product Development ซงจะเปนกระบวนการท าใหออกมาเปนงานส าเรจรปทพรอมใหทดสอบการท างานหรอใหผใช ใชงานตอไป

Automation Lifecycle Management (ALM) ในการพฒนาระบบงานทเปนโรงงานผลตซอฟตแวรนน จ าเปนอยางยงทตองใชเครองจกรททนสมยเพอใหสามารถ

รองรบการพฒนาทซบซอน และสอดคลองกนทงกระบวนการ ตวอยางเชน จากความตองการลกคา (Requirements) นนเปนสงแรกทเขามาในกระบวนการ จากนนกจะเขาไปสกระบวนการวเคราะห (Analysis) สรางโมเดลการออกแบบ (Modeling) และพฒนา (Develop), Build, ทดสอบระบบ(Test) ซงทงหมดจะตองท างานเปนระบบสอดคลองกนตงแตตนจนจบ และควบคมชนงานทออกมา ในแตละขนตอนใหสามารถตรวจสอบไดและตรงตามความตองการของลกคาทใหมา และกระบวนการทงหมดควรจะเปนระบบอตโนมตใหมากทสดเพอทจะประหยดคนท างาน แตไดงานมประสทธภาพสงสด ดงนนการสรางโรงงานพฒนาซอฟตแวรจงหลกเลยงไมไดทจะตองใชเครองจกรททนสมย ซงตรงนกตรงกบผลตภณฑของไมโครซอฟตคอ Visual Studio Team System ซงผมก าลงรอใชเวอรชน 2010 อย ซงจะมฟเจอรดๆ หลายๆ อยาง

Page 5: Introduction Software Factory v1.1

5

รปท 3: รปแสดงกระบวนการท างานของ ALM

จากรป เปนแผนภาพแสดงสวนประกอบตางๆ ทท างานรวมกนของกระบวนการพฒนาซอฟตแวรทเปน ALM

Page 6: Introduction Software Factory v1.1

6

สรางโรงงานซอฟตแวร ส าหรบเนอหาในตอนนเราจะสรางโรงงานกน ส าหรบโรงงานผลตซอฟตแวร (Software Factory) จะประกอบดวยองคประกอบดงน

1. สถานท ผมคดวาถาเปนไปไดผมจะสรางเวบไซตสวนกลางและใหสมาชกผอานทงหลายทสนใจ เขามามสวนรวมในโรงงาน

ซอฟตแวรดวย โดยแบงเปนบทบาทแตละบทบาทซงผมจะไดอธบายตอไป และเราจะพฒนาซอฟตแวรตนแบบกน กอาจจะตองม

เรอง Software Development Environment เขามาเกยวของ ซงตอไปจะสรางเปนรปแบบใดคอยวากนไป (ถามนเกดขนได) และ

ผทท างานกสามารถท างานอยทใดกไดโดยผานอนเตอรเนต เพอใชเวลาวางใหเปนประโยชน (ส าหรบทานทยงมภาระท างาน

ประจ าอย) เพอทจะไดเปนสนามฝกฝนในเรอง Enterprise Software Architecture Development

2. ทมงาน แนนอน โรงงานกตองประกอบดวยเจาของและผถอหน และพนกงานใชไหมครบ ซงกมดงตอไปนครบ

2.1 Project Sponsor หรอผใหการสนบสนน ส าหรบตรงนผมวา ทกทานทรวมในโครงการเปน Project Sponsor ไดครบ

เพราะวาอะไร กเพราะวาเราท างานโดยไมตองใชเงนทนจากคนอน เราท างานโดยใชเงนทนของพวกเรากนเอง นนคอเวลาท

มารวมท างาน หลายคนอาจจะงงวา เราจะท าอะไร ในตอนเรมตนคงยงไมมอะไรมากกคงเปนสนามฝกใหคนในชมชนเขาใจ

การท าแอพพลเคชนแบบโรงงานซอฟตแวรนนเอง (ถาพวกเราเหนดวยนะครบ ผมแคเสนอแนวคดเขาไป) แลวตอไปคอยวา

กนวาพวกเราจะท าอะไรตอส าหรบชมชนเรา เนองจากการท าโรงงานซอฟตแวร ตองใชทมงานทมความรความสามารถ

เฉพาะดานในเรองตางๆ มาท างานรวมกน ภายใตจดมงหมายเดยวกน และดวยกระบวนการทด และทกคนกเปนเจาของ

รวมกน (ดไหมครบ) เอ ฟงดจะท าไดอยางไร กมารวมออกความคดกนกไดครบ นอกจากนนผมอยากใหทาง บรษท

ไมโครซอฟตเขามาสนบสนนดวย เพราะวาเขาเปนเจาของเทคโนโลย และเรากเอาเทคโนโลยเขามาใชรวมกนเปน Total

Solution จะใหเปนตงค หรอใหเปนเครองมอกไดครบ หรอทานสมาชกทานใดทมเงนเหลอเยอะและไมรจะเอาไปท าอะไรก

บรจากกไดครบ

2.2 ทมพฒนา ส าหรบทมงานนนจะมบทบาทและความรบผดชอบดงรปดงนครบ

รปท 4: รปแสดงโครงสรางของทมงาน

Page 7: Introduction Software Factory v1.1

7

จากรปท 4 เปนรปแสดงโครงสรางของทมงานซงมรายละเอยดดงตอไปน

2.1.1 Project Manager (PM) ท าหนาทบรหารจดการโครงการ เพอใหงานส าเรจอยภายในเวลาและคาใชจายท

ก าหนด

2.1.2 Business Analyst ท าหนาทวเคราะหความตองการของระบบงาน ซง BA จะตองมความรดในเรอง Business

Process ของงานทก าลงท าอย ซงทจรงแลวจะตองรดมากวาผใชเพราะวาผานงานมาหลายหลากและจะตอง

แนะน าผใชและปรบปรงกระบวนการท างานของผใชได ไมใชไปรบฟงผใชงาน และท ากระบวนการตามผใช

ก าหนดอยางเดยว ถาเปนอยางนเราจะเรยกวา System Analyst มอใหมหดขบครบ

2.1.3 Software Architect ท าหนาทออกแบบโครงสรางของระบบงาน (Framework) และจดท ารปแบบการพฒนา

มาตรฐาน (Patterns and Standard Guideline) และเครองมออนๆ ให Developer ไวใชงาน ซง Software

Architect นนจะตองมความรดในเรอง OOAD/OOP และ Development Patterns รกเทคนคเปนชวตจตใจ

Software Architect จะไมชอบไปวเคราะหระบบมากนก ท าไดครบแตใหเลอกไมเอาดกวา พดแลวเหมอน

ท านายดวงคนรา Software Architect เลยครบ เพราะวาผมกคนรานเหมอนกน (ผเขยนเคยเรยนวชา

โหราาสตรมาแตไมมเวลากษาเพมเตม แคตดตามเทคโนโลยใหทนไมโครซอฟตกแยแลว) นอกจากนน

ส าหรบการออกแบบทเปนโรงงานซอฟตแวรนน Software Architect จะคอยท าหนาทสรางชนงานทเปน

Simi-Part และก าหนดสเปกเพอใหสามารถน ามาประกอบกน (Assembly) ใหไดเปนชนงานส าเรจ รวมถง

จดท าคมอการท างานของไลนการผลตตาง ๆ ฝกอบรมการใชงาน แกไขปญหาทเกดขนทเกยวกบงานนน

รวมถงปรบปรงกระบวนการใหดขน

2.1.4 ตอไปเปน System Analyst (SA) ซงท าหนาทเปนนกวเคราะหระบบ เกบรวบรวมความตองการลกคา จดท า

Requirement Specification และควบคมการเปลยนแปลงความตองการเพอไมใหกระทบกบแผนงานหลก

มากนก ส าหรบ Software Architect นน (ผเขยนไมรจะใชตวยออะไรเนองจากเหมอนกบ SA ถาใครอยากตง

ตวยอกเชญครบ) และนอกจากนน SA กจะตองเขามาออกแบบระบบโดยจะตองท างานรวมกนกบ Software

Architect ซงในสวนตวผมมองวา SA จะออกแบบในเชง High Level Design หรอในระดบภาพกวางๆ ซงยง

ไมใชเทคนคมากนกเพอใหครอบคลมความตองการของลกคาเพราะวารความตองการของลกคาไดดกวา สวน

Software Architect นนจะออกแบบในเชงรายละเอยด (Detail Level Design)โดยรบขอมลมาจาก SA (SA

และ Software Architect อาจเปนคนเดยวกนไดครบเพราะผมพดถงบทบาท (Role) คนหนงอาจท าไดหลาย

Role ครบ) และจะตองให SA คอยทบทวน (Review) วาสงทไดออกแบบตอบสนองตอความตองการลกคาได

ทงหมดหรอไม ดงนน SA, Software Architect และ PM จะคอยตรวจสอบการออกแบบระบบงานกอนทจะ

เขาไปสกระบวนการผลตจรง เพราะวาถาเขาสกระบวนการผลตแลว มการเปลยนแปลงการออกแบบนนคอ

หายนะครบ เพราะวาจะท าใหตนทนสงขนอยางมหาาล

2.1.5 ตอไป กเปน SQA และ Test Manager ซงอาจจะแยกเปนแตละ Role กได โดย SQA (Software Quality

Assurance) ซงถาใครท า CMMI อยกจะรวาไมมคนนไมไดเพราะมนเปนพนฐานทส าคญเพอควบคม

Page 8: Introduction Software Factory v1.1

8

กระบวนการท างานใหเปนไปตามทก าหนด ซง SQA จะเปนผบรหารจดการกระบวนการท างานและ

ตรวจสอบระบบงาน รวมถงการตรวจสอบทมงานวาไดท าตามกระบวนการทก าหนดไวหรอไมและจดท า

เอกสารตางๆ ทจ าเปนครบถวนหรอไม พดแลวหลายคนจะไมคนกบคนราน คนรานเปนนกตรวจสอบครบ

(เอาอกแลว) คอยหาวาชาวบานลมท าอะไรทส าคญ หรอละเลยบางอยางไปหรอไม บางคนเกงถงขนาดมอง

แปบเดยวรวาเราคยอะไรผด เหนไหมวาเขามความสามารถพเษอะไรทเราท าไมได อยาเอาคนรา Software

Architect ไปท าเดดขาดท าไดครบแตตองใชความพยายามสง และโดยนสยแลวไมชอบ ส าหรบ Test

Manager รวมถงนนจะเปนผบรหารจดการการท าสอบระบบงานตามแผนทดสอบ ตามเหตการณ (Scenario)

โดยแบงออกเปนกรณยอยๆ ซงเราจะเรยกวา Test Case และจดท าขนตอนการทดสอบรวมถงก าหนดลกษณะ

ขอมลทสอดคลองกบเหตการนนๆ เพอใหคมกรณตางๆ ใหมากทสด รวมถงกรณแปลกๆ ทจะเกดขนดวย

สวนผทท าการทดสอบนนจะเปน Tester ครบ

2.1.6 ส าหรบ Developer นนจะท าหนาทพฒนางานตามสเปกทไดออกแบบมาจาก SA โดยโครงสรางแลวกลม

Developer จะถกแบงออกเปนกลมยอย ๆ ซงในภาษาโรงงานจะเรยกวาไลนการผลตนนเอง ออลมไป ในสวน

Software Architect นนกจะแบงออกเปนกลมๆ เหมอนกนคอหวหนาทมดแลทงหมด และทมตาง ๆ ทท า

หนาทออกแบบสวนตาง ๆ (โดยธรรมชาตแลว Software Architect ในกลมตาง ๆ กเตมโตมาจาก Developer

นนเอง) และการแบงออกเปนกลมๆ นในทางปฏบตเปนเรองทท าไดไมยากแลวครบมเครองมอสนบสนน

(ไมใชวาผมจะเอาแนวคดสวยหรมาแสดงใหดเท แตมนปฏบตไดจรงซงผมจะไดอธบายตอไป) โดยจะ

แบงเปนกลมๆ ดงน

2.1.6.1 นกพฒนาว วกรรมหนาจอ (Screen Engineer) ซงการพฒนาหนาจอนในปจจบนนบวาเปนงานทม

ความซบซอนมาก และผใชจะยอมรบระบบหรอไมกอยทหนาจอน โดยเฉพาะหนาจอทใชเทคโน

โลย WPF และ Silverlight

2.1.6.2 นกพฒนาบซเนสโลจก (Business Logic Engineer) ส าหรบนกพฒนาสวนนผมเคยคดวาจะให SA

เปนคนท า เนองจากวา SA จะรด และสามารถเขยนไดดโดยทไมตองถายทอดสเปกไปให

Developer ซงแนนอน Developer กจะไมสามารถรบได 100% ขนอยกบ Developer วาม

ประสบการณมากนอยเทาไร สมมตวารบได 70% อก 30% กจะเปนขอบกพรองของซอฟตแวร

(Bug) ครบ ซงการพฒนาตรงนผมมองวาเราควรเอาเทคนคของ Windows Workflow Foundation

(WF) หรอเครองมอทใชพฒนา Workflow หรอ Business Process Management (BPM) มาใช

เพราะวา SA กตองเขยนสเปกเปนโฟลวอยแลว ท าไมไมเขยนโดยใชเครองมอทเปน Workflow เลย

ส าหรบสวนทเปนโปรเซสยอยของการท างานในโฟลวนน (จะเรยกวา Activity Code) กให

Developer เปนผพฒนา อยางนอยโฟลวกไมผด ตรงนเราสามารถออกแบบการท างานใหดได

นอกจากนนแลว ถาเปนงานทเปนเซอรวส กพฒนาใหเปน SOA ไดซงกมเครองมอ Web Services

Software Factory หรอเครองมออนๆ ชวยอยแลว ดงนนเรอง SOA กเปนเรองทมความซบซอนอย

แลวกอาจจะแยกเปนเรองหนงซงจะเอาไปตอกบ Workflow ได (WF 4.0 สามารถ integrated กบ

Page 9: Introduction Software Factory v1.1

9

WCF ไดดแลวครบ ตรงนนบวาเปนขาวดส าหรบผทจะท า Workflow ใหเปน SOA) โครสนใจกมา

กษาตรงนได

2.1.6.3 ส าหรบฐานขอมลนนเปนหนาทของ Data Administrator (เปนคนเดยวกบ SA กไดครบ) ดแล

ขอมล ความสมพนธขอมลเพอสรางฐานขอมล และจดท า Data Model ส าหรบ Data Model น

ผเขยนไดใช ADO.NET Entity Framework (EF) ส าหรบท า Data Model ซงกจะท าใหนกพฒนา

สามารถเรยกใช Business Entity ทถกสรางมาจากโมเดลได โดยท Develop ไมตองไปสรางเอง ซง

การสราง Data Model และ Entity Class สวนกลางเปนหนาทของ Data Administrator ทสรางไว

ให Developer ใชงานเพอใหสามารถพฒนางานสวนนไดงายทสด

3 แนวคด เทคโนโลยและเครองมอทน ามาใช

ตอไปกจะพดเรองเทคโนโลยและเครองมอทจะน ามาใชครบ วาโรงงานเราจะน าเครองจกรอะไรมาชวยผลตซอฟตแวรใหทนสมย

ซงกมเปาหมายคอ ลดตนทนการท างาน (รวมตนทนทเกดจาการบ ารงรกษาซอฟตแวรดวย) เพมคณภาพของซอฟตแวรใหดขน ซง

จรงๆ แลวจะตองมกระบวนการพฒนาซอฟตแวรหรอ Software Process Improvement รวมดวยนะครบ การใชอยางใดอยาง

หนงไมสามารถบรรลเปาหมายได เหนไหมครบการพฒนาซอฟตแวรปจจบนท าไมเรองมากจง กลองจนตนาการโรงงานผลต

รถยนตกแลวกน ผมวาโรงงานผลตรถยนตยงมความซบซอนกวาโรงงานผลตซอฟตแวรตอนนเสยดวยซ า

3.1 แนวคดและเทคโนโลยทน ามาใช

ส าหรบแนวคดทจะน ามาใชผมกขอเสนอแนวคดทมาจากหนงสอ“Software Factories Assembling Application with

Patterns, Models, Frameworks, and Tools” เขยนโดย Jack Greenfield และ Keith Short ป 2547 ซงอธบายแนวคดท

ใชพฒนา Software Factory ไดอยางด แตไมใชวาเราจะไปนงอานหนงสอทงเลมกอนแลวถงจะมาท า เพยงแตเราเขาไปด

แนวคดเบองตนเพอน ามาปรบใชงาน และหลงจากนนกมหนงสอชอ Practical Software Factories in .NET ซงเขยนโดย

Gunther Lenz และ Wojtek Kozaczynski ป 2549 และหนงสอชอ Programming Microsoft Composite UI Application

Block and Smart Client Software Factory ของ David S. Platt ป 2551 ซง Platt นนเปนทปรกษา นกเขยน และผสอนอย

ท Harvard University และไดเปดหลกสตรการสอนเรอง Smart Client Software Factory ทงในยโรปและอเมรกา (ผเรยน

ตองเสยคาเครองบนและคาโรงแรมไปเรยนดวยนะครบซงยงไมรวมคาลงทะเบยนเรยน) เหนไหมวาในยโรปและอเมรกา

เขาตนตวในเรองนแคไหน และพวกเราละ ถาตกรถไฟขบวนนเราอาจจะลาหลงประเทอนๆ ชนดไลเทาไรกไมทน ส าหรบ

แนวคดในดานตางๆ กจะมดงนครบ

1. แนวคดในการออกแบบโรงงานพฒนาซอฟตแวร (Software Factory) โดยใช Guidance และชดเครองมอพฒนา Smart

Client Software Factory ส าหรบใชพฒนาระบบงานทเปนวนโดวฟอรม และ Composite Application Guidance

ส าหรบ WPF และ Silverlight ซงเปน Guidance และชดเครองมอทใชชวยพฒนา (มาพรอมกบ .DLL ส าหรบควบคม

การท างานของ WPF และ Silverlight) และควบคมการพฒนาหนาจอใหเปนชนสวนทตองการและน ามาประกอบกนให

เองโดยอตโนมต (Composite UI Guidance Asset) ใชส าหรบพฒนาแอพพลเคชนทเปน Windows Presentation

Foundation (WPF) และ Silverlight โดยใชเฟรมเวรครวมกน รวมถงม Guideline ทจะบอกวา ถาเราจะเปลยน

Page 10: Introduction Software Factory v1.1

10

Code ของหนาจอทเปน WPF ใหเปน Silverlight จะตองระวงอะไรบางโดยแกไข Code ไมมาก ในอดตลองนกภาพวา

ถาเราจะเปลยนหนาจอทเปน Windows Form ใหเปน Web Form คณจะตองพฒนาทงหมด แตในเฟรมเวรคใหมน

คณสามารถเปลยน Code ไมมาก แตผมวาเราจะตองวางรปแบบกอนลวงหนาเพอใหงายตอการเปลยนหนาจอจาก WPF

ไปเปน Silverlight ใหไดงายมากขนและสามารถควบคมได ตรงนคงฝากผเชยวชาญทางดานนชวยเหลอครบ (ถาใครท

ชอบอะไรทสวยๆ งามๆ)

รปท 5: Composite Application Library Package

จากรปเปน Composite Application Library Package ซงในสวนดานบนสดจะเปน Application ทเราพฒนาอยรวมถงเฟรมเวรคและโครงสรางพนฐาน (Infrastructure) รวมถงโมดลตาง ๆ ทเราพฒนาซงจะใชเฟรมเวรครวมกน สวน Library ทอยใน Patterns & Practices นนกจะม Library ตาง ๆ ใหเราใชงาน สวนการใชงานอยางไรนน ใน Guidance จะบอกรายละเอยดรวมถงตวอยางการใชงาน ซงเปนหนาทเราทจะเขาไปศกษาและน ามาใชหลงจากนนมนกจะเปนมาตรฐานการท างานและการพฒนาของเราโดยอตโนมต ถาเราใช Library เหลานรวมกนในกลมของพวกเรา มนกจะเปนมาตรฐานการใชงานรวมกน ซงจะท าใหเราสามารถเขยนโปรแกรมดวยสไตลเดยวกน ผมวาท าไดแคนกไดประโยชนมาหาศาลแลวครบ ทานลองคดเลนๆ ตอไปวามนจะเกดประโยชนตอเนองอะไรอกครบ ตรงนผมขอยงไมขอพดครบ

Page 11: Introduction Software Factory v1.1

11

รปท 6: Patterns ทอยใน Composite Application Library

ส าหรบรปนเปนรปแบบมาตรฐาน (Patterns) ทอยใน Composite Application Library ซงม Patterns ตาง ๆ ทถกสรางขนใน Composite Application Library ซงมมาทง Source Code ใหเราไดศกษาวธการเขยนโปรแกรมไดดวย

2. การบรหารจดการการพฒนาซอฟตแวรใหเปนระบบอตโนมต (Automation Lifecycle Management) หรอ ALM เปน

การควบคมขนตอนการพฒนาซอฟตแวรโดยใชเครองมอชวยเพอใหกระบวนการพฒนาซอฟตแวรมประสทธภาพมาก

ขนซงกจะใช Visual Studio Team System 2008 หรอ 2010 ซงจะใชฟงกชนของ Project Management, Source

Control, Build Server, Testing, Bug Tracking, Deployment สวนการบ ารงรกษาระบบงานกนาจะใช การท า

Branching และ Merging รวมถงท า Release, Service Pack คลายๆ กบทไมโครซอฟตเขาท ากน ในกรณท Build

ระบบงานใหกบลกคาแตละรายทมความตองการเฉพาะ ควรจะตองออกแบบเพอเตรยมรองรบไวลวงหนาซงตรงนอาจจะ

ตองพงพาผเชยวชาญ

3. Application Architecture Guide 2.0 Designing Application on .NET Platform เปน Best Practice ทชวย

แนะน าวธการพฒนาระบบงานขนาดใหญ ซงผอานเขาไปดไดท http://apparchguide.codeplex.com/

4. Standard Pattern Development เปนรปแบบมาตรฐานททวโลกยอมรบแลววาสามารถน ามาใชแกไขปญหาการ

พฒนาซอฟตแวรไดเปนอยางด ซง Composite Application Guidance ส าหรบ WPF และ Silverlight กถกพฒนา

อยบน Standard Pattern Development ตางๆ เชน Dependency Injection, Inversion of Control, Service

Locator, Presentation Model เปนตน ซงท าใหทมงานพฒนาโครงสรางไดเรยนรรปแบบการพฒนามาตรฐาน

ดงกลาวในขณะทกษาเครองมอน และท าใหทมงานสามารถพฒนาความรทางดาน Software Architecture ไดใน

เวลาเดยวกน

Page 12: Introduction Software Factory v1.1

12

Page 13: Introduction Software Factory v1.1

13

3.2 เครองมอทใชออกแบบและพฒนา (Design and Development Tools)

ส าหรบเครองมอทใชพฒนาแอพพลเคชนทเปนโรงงานซอฟตแวรนนผมกขอบอกวาเปนคายของไมโครซอฟตทงหมด ไมใชผม

รงเกยจคายอนนะครบ แตวาประสบการณทงชวตของผมอยกบไมโครซอฟตเทคโนโลย สวนเพอนๆ ผมรนเดยวกนไปเปน

ผบรหารระดบสงกนหมดแลว เหลอผมนแหละทยงตดตามเทคโนโลยอย แตกอยากเรยนเชญนกพฒนาคายอนลองมาดแนวคด

และน าไปปรบปรงงานของตนเอง มนไดแนวคดในเรอง Architecture Design ทดครบ ส าหรบชดเครองมอกมดงน

1. Visual Studio Team System 2008 หรอ Visual Studio Team System 2010 ส าหรบเปน Integrate

Development Environment และ Testing Tools

2. Windows 2008 Server Standard Edition หรอ Enterprise Edition ใชเปนเฟรตฟอรมทเราพฒนา

3. Microsoft SQL Server 2008 Express Edition, Standard Edition หรอ Enterprise Edition เปนระบบจดการ

ฐานขอมล

4. Windows SharePoint Service 3.0 หรอ MOSS 2007 ส าหรบพฒนางานทเปน Document หรอ Content

Management รวมถงใชเปนเครองมอทชวยจดการ Configuration Management

5. Windows Workflow Foundation ส าหรบพฒนางานทเปน Workflow

6. Windows Form, WPF และ Silverlight เทคโนโลยส าหรบพฒนาหนาจอ

7. ส าหรบ Client Platforms นนเพอความทนสมยเรากอาจจะใชบน Windows 7 เลย สวนอนๆ จะเปน Mobile

Application และอนๆ กเชญคนทเชยวชาญดานนนเขามารวมไดเลยครบ

ผมวาแคนกแยแลว

Page 14: Introduction Software Factory v1.1

14

4 สภาพแวดลอมของการพฒนา (Development Environment)

รปท 7: รปแสดงสภาพแวดลอมของการพฒนา

ส าหรบสภาพแวดลอมของการพฒนานนกจะเปนในลกษณะดงในรปดานบน ซงผมไดท าเปน Environment Development ทใชพฒนางานอยในขณะน โดยเฉพาะ Project Server 2007 ทใชบรหารจดการโครงการขนาดใหญ ในกรณทเรามโครงการมากๆ ท าใหการบรหารจดการทรพยากรท าไดด การบรหารจดการโครงการท าผาน Project Web Access โดยไมจ าเปนตองใชกระดาษเลย ส าหรบเรอง Development Environment นนประกอบดวยสวนตางๆ ดงตอไปน 1. เครองทเปนโดเมนคอนโทรลเลอร ท าหนาทเกบ Active Directory ของผใชงานระบบ

2. เครองทเปน Database Server และ SharePoint Server จะตดตง Microsoft SQL Server 2008 และ Windows

SharePoint Service 3.0 (WSS 3.0) และ Microsoft Search Server 2008 Express Edition ถาเราจะใช SharePoint เปน

สวนหนงของการพฒนาระบบ ซง WSS 3.0 และ Microsoft Search Server 2008 Express Edition นนไมเสยตงค หรอจะ

ใช Microsoft Office SharePoint Server 2007 (MOSS 2007) กไดครบ ถาคณตองการความหร

3. เครองทเปน Project Management Server จะถกตดตง Windows 2008 Server Enterprise Edition, Microsoft SQL

Server 2008 Enterprise Edition, WSS 3.0 หรอ MOSS 2007 , Microsoft Project Server 2007 เปนเครองมอทใชบรหาร

จดการโครงการในระดบ High Level ส าหรบท า Enterprise Project Management

5 การบรหารจดการโครงการ

วธและกระบวนการท างาน (Methodology and Project Management Process) ส าหรบการบรหารโครงการนน นอกจากเราจะใชวธบรหารโครงการในรปแบบ MSF for Agile Software Development เปนแนวทางในการท างาน รวมทง Project Planning, Project Monitoring and Control ทอยใน CMMI มาชวยกระบวนการท างาน โดยเปาหมายหลกคอใหซอฟตแวรออกมาสตลาดใหเรวทสด และจะตองมคณภาพด

Page 15: Introduction Software Factory v1.1

15

6 Software Process Improvement นอกจากนน เราควรจะม Software Process Improvement กระบวนการพฒนา

ซอฟตแวรทด และพฒนาใหดขนเรอยๆ (ไมมค าวาดทสด มแตค าวาดกวา และดกวา) ในดานตางๆ ตามกระบวนการของ CMMI หรอ

เราจะใช Agile กไดขนอยกบทมงาน เพอรบประกนวาซอฟตแวรทเราพฒนานนมคณภาพ ตรงนเปนเรองใหญครบ สวนผมตอนน

ท างานอยใน Committee ของ Thailand SPIN ในสวน Project Management ซงก าลงเผยแพรความรในเรอง Process

Improvement ใหกบ Community อยเหมอนกนครบ

ถงแมวาการสรางโรงงานผลตซอฟตแวรจะประกอบดวยสวนตาง ๆ มากมายกตาม แตเราพยายามมองภาพรวมใหไดกอน และสรางความสมพนธในสวนตาง ๆ ใหสอดคลองกน หาผเชยวชาญทางดานตาง ๆ มาท างานรวมกนตามบทบาททแตละทานถนด และท าตามบทบาทนน ผมวาในล าดบแรกเปนการท าความเขาใจกอนครบ เมอเขาใจแนวคดและเครองมอตาง ๆ ไดแลว มนกจะเรมงายขน ผมวาทกคนท าไดครบ

Page 16: Introduction Software Factory v1.1

16

Software Factory Toolkits Overview สมมตวาตอนนเราไดเรมตงโรงงานซอฟตแวรแลว ซงตอไปถาจะตงโรงงานจรงๆ รายละเอยดของการตงโรงงานอาจจะมการเปลยนแปลงตามความเหมาะสมของสภาพแวดลอมและปจจยอน ๆ ผอานทกทานอยากเหนความส าเรจของโรงงานดงกลาวหรอไมครบ ถาอยากเหนกมารวมสรางดวยกน ผมเชอมนวามนสามารถท าไดจรงในทางปฏบต ดงนนบนไดขนแรกกคอการเขาไปรจกเครองมอของ Software Factory Toolkits รวมถงกระบวนการผลตตาม Role ตาง ๆ และขอใหสมาชกทกทานทสนใจเลอก Role ทตนชอบไวกแลวกน แตใครจะสนใจมากวาหนง Role กไดครบ ตอนนสมมตวาเราไดตงโรงงานแลวนะครบ ดงในรปดานลาง ตอไปเราจะไดเรยนรเครองมอในการผลตซอฟตแวรกนครบ

รปท 8: รปแสดงโรงงานผลตซอฟตแวร

กอนจะลงในรายละเอยด กจะขอเกรนทมาทไปของเครองมอหนอยครบ Software Factory Toolkits (ลองคดวามนคลาย ๆ กบเราซอชดคตของวทยมาตอใชงานเองซงผ เขยนเคยตอเองในสมยเดกๆ มนท าใหเหนภาพของการน าชนสวนซอฟตแวรมาตอกนและไดเปนแอพพลเคชนส าเรจ) ซงตอไปอาจจะมการท า Software Application Toolkits เอาไวใหผอานมาหดตอเลนกนครบ ส าหรบจดเรมตนของ Software Factory Toolkits นนเรมมาจาก Microsoft Community (เดมอยในสวนของ Patterns & Practices แตปจจบนอยในสวนของ http:www.codeplex.com) ไดออกเครองมอทชอ Enterprise Library Block (EntLib) ขนมาเมอป พ.ศ. 2547 (ตอนนเวอรชนลาสดเปน 4.1 ครบ) ซงเปนเครองมอใชชวยแนะน าวธการเขยนโปรแกรมใหเปนมาตรฐานแกนกพฒนาในดานตาง ๆ เชน การเขยน Logging Application Block, Data Access Application Block, Security Application Block, Exception Block และอน ๆ ซงผ เขยนจะไมลงรายละเอยดตอนน ซงปจจบนนมนรวมอยในเครองมอพนฐานทอยในชด Software Factory Toolkits หรอเปน Engine Tools ซงจะถกเรยกใชงานผานทางเครองมออนๆ เชน Smart Client Software Factory หรอ Composite Application Library นนเอง ซงกจะซอนความซบซอนของการใชงานของ EntLib เอาไวภายใน

Page 17: Introduction Software Factory v1.1

17

ตอจากนน Patterns & Practices กไดออก Composite UI Application Block (CAB 1.0) ซงถกออกแบบมาเพอแยกสวนทใชแสดงผลหนาจอออกมาโปรเจกตแยกตางหาก และใหชอวา Shell

รปท 9: หนาจอแสดงสวนประกอบของ Composite UI

จากรปดานบนจะแสดงใหเหนสวนประกอบตางๆ ท CAB 1.0 ออกแบบมา ซงสวนประกอบดงกลาวนนจะถกน าไปใชโดยกลไกการท างานทอยเบองหลง (CAB Engine) ซงกลไกการท างานเบองหลงผมยงไมอธบายตอนน ส าหรบตรงนจะพดถงสวนประกอบของ CAB 1.0 เสยกอน ซงจะเหนวาแอพพลเคชนถกแบงออกเปนสองสวนคอ Shell Application (ซงเปนโปรเจกตหนง) และ Module ซงกเปนโปรเจกตอกโปรเจกตหนง ส าหรบในสวนทเปน Shell Application นนกเปรยบเสมอนเครองฉายภาพซงจะท าหนาทรบภาพมาแสดงผลเทานน จากรปจะเหนวาในโปรเจกต Shell Application นนจะม Shell Form ซงจะม SplitContainer ท าหนาทแบงแยกหนาจอออกเปน 2 สวน คอสวนทางซาย (Left Workspace) และสวนทางขวา (Right Workspace) ซงในสวน LeftWorkspace นนจะม TabbedWorkSpace บรรจอยภายใน (ส าหรบ CAB 2.0 นนเขาใช Region แทน ค าวา Workspace ครบ) ซง Shell Application นนจะเรยกสน ๆ วา Shell นนเอง หลายคนคงจะสงสยแลววา แลวหนาจอหายไปไหนละ คอยตดตามไปครบ ตอไปผมจะยกตวอยางการพฒนาระบบงานแบบปกตทเราพฒนากน โดยปกตแลวนกพฒนาจะนยมเขยนสวนทเปน Presentation Layer แยกออกมาเปนกลมๆ และแตละกลมกจะมโปรแกรมในสวนหนาจอกจะอยในโปรเจกต Presentation ดงในรปตอไปน ซงเปนทรวบรวมหนาจอหรอ Windows Form ของโมดลหนง ซงในตวอยางนจะม 3 หนาจอดวยกน

Page 18: Introduction Software Factory v1.1

18

รปท 10: รปแสดงหนาจอในโครงสรางแบบงาย จากรปจะเหนวาถาเรามหนาจอสามหนาจอ เรากจะม Windows Form 3 ฟอรมดงในรป ซงขอดของมนกคอพฒนางายไมยงยากซบซอนถามการแกไขฟอรมกแกไขไปบนฟอรมไดเลย (ยงไมตองคดวามชนตดตอฐานขอมลหรอชนบซเนสโลจก คดวามอยชนเดยวกอนคอ Presentation Layer) สวนขอเสยคอ ถาบางสวนของหนาจอทงสามหนาจอมบางสวนทเหมอนกน กจ าเปนตองพฒนาสวนทเหมอนกนนนทงสามหนาจอท าใหตองพฒนางานซ าซอน แตอยางไรกเหมาะกบระบบงานเลกๆ แตถาเปนงานทเปน Enterprise Application นนจะมผลมากหรอนอยขนอยกบขนาดของแอพพลเคชน ถาขนาดของแอพพลเคชนใหญมากกจะมผลกระทบมากครบ ตอไปมาดวาเฟรมเวรคของ CAB 1.0 นนมนมดอะไร ขอใหทานผอานดรปตอไปครบ

Page 19: Introduction Software Factory v1.1

19

รปท 11: รปโครงสรางระบบงานตวอยางทใชเฟรมเวรค CAB 1.0

ส าหรบรปนผมไดพฒนาใหกบหนวยงานราชการแหงหนง ซงเปนระบบงานจรงโดยใช Smart Client Software Factory ซงใช CAB 1.0 เปนเฟรมเวรคพฒนาหนาจอ ซงในโครงสรางของระบบงานนนจะม สวนทเปน Infrastructure ของระบบงานท าหนาทเตรยมสวนประกอบพนฐาน (ซงรายละเอยดจะคอยๆ เลาใหฟงตอไปครบ) ซงหนงในนนกคอ Shell Project อยางทผมเคยพดวามนเปนสวนทใชแสดงผลของหนาจอทถกสงมาจากโมดลตาง ๆ ของระบบงาน และจะม ShellForm ซงเปน Windows Form เพยงฟอรมเดยวในระบบงานน ทานผอานคงจะเหนสวนทเปน RID_F00, RID_F10 … สวนนเปนโมดลตาง ๆ ครบ จะเหนวาโมดลของแอพพลเคชนถกแยกออกมาจากสวนทเปน Infrastructure อยางเดดขาด (Module Independence) ซงในเรองนผมจะพดในรายละเอยดตอไปเพราะวามนส าคญกบการท าโรงงานซอฟตแวรมาก ภายในโมดลมอะไรลองดรปถดไปครบ

Page 20: Introduction Software Factory v1.1

20

รปท 12: รปแสดงโครงสรางภายในโมดล RID_F10

ส าหรบในรปนจะเหนวาภายในโครงสรางของโมดล RID_F10 ยงแบงออกเปนโปรเจกต FID_F11 ซงเปนระบบงานยอยภายในมล RID_F10 ภายในโปรเจกตนใหดสวนทเปน Views ซงในสวนนกจะเปนหนาจอตาง ๆ นนเอง ซงลองมาดโครงสรางหนาจอทชอวา vwF11U0301 ซงมาจาก View ของโมดล F11 ของยสเคซ U0301 นนเอง ซงถาดไฟลกมดงน

1. vwF110301.cs นนเปนสวนแสดงผลนนเอง แตมนไมใช Windows Form มนเปน User Control ครบ เหนไหมวา ในสวนทเปน

สวนแสดงผลนนไมม Windows Form เลย

2. vwF11U0301Presenter.cs นนเปน Presenter ไฟล มนคออะไรเดยววากน

3. IvwF11U0301.cs นนเปนอนเตอรเฟซไฟลของหนาจอ

ดงนนสวนแสดงผลนจะใช Model View Presenter (MVP) Pattern ครบ ซงเขยนไดดงน

รปท 13: รปแสดง MVP Pattern จากรปเรมจาก View จะเหนวามเครองหมายยนออกมาสองขาคอ ขาหนงมจดกลม นนคอเครองหมายของอนเตอรเฟซ ซงแสดงวา View มอนเตอรเฟซโผลออกมาใหคลาส Presenter ตดตอภายใน View โดยผานทางอนเตอรเฟซ เมอถงตรงนกคงเหนแลววา สวนทแสดงผลหนาจออยตรงไหน แตวาทานกคงสงสยวา แลวมนจะน าออกไปแสดงใน Shell ไดอยางไร ตรงน ไมตองเปนหวงครบ เพราะ CAB มกลไกทน ามนไปแสดงใหอยแลวโดยคอมโพแนนซทจดเตรยมไว โดยมอบหมายงานใหคลาส

Page 21: Introduction Software Factory v1.1

21

ModuleController เปนตวท าหนาทเรยกใช โดยเขยนค าสงเขาไปใน ModuleController ตามทก าหนดเทานน ซงรายละเอยดผมจะพดถงตอไปครบ ตรงนใหทานผอานเขาใจวธการท างานของ CAB เทานนวามนคออะไร จากเรองทพดมานนเปนเรอง Composite UI แตยงมอกยางหนงของ CAB คอโมดลแตละโมดลทออกแบบ ซงจะมความเปนอสระซงกนและกน และตดตอสอสารกน (โมดลหนงเรยกใชงาน เชน สอบถามขอมล ไปยงอกโมดลหนง) โดยผานทางกลไปพเศษ (Event Broker Pattern) ซงเปนรปแบบการตดตอสอสารเพอใหโมดลตาง ๆ มความอสระซงกนและกน เอ… ค าวาอสระซงกนและกน (Module Independent) หมายความวาอยางไร กหมายความวา ถามงานโมดล A ใหนกพฒนานงอยประเทศหนง และกมงานโมดล B กบนกพฒนาทท างานอยอกประเทศหนงโดยทนกพฒนาทงสองกลมไมตองรจกกนและตองพดคยกนเลย กท างานไดครบ Software Architect ทควบคมดแลโครงการกเพยงแตน าซอฟตแวรทงสองโมดลมาใสในโครงสรางหลก มนกจะตอใหเองโดยอตโนมต ซงเฟรมเวรคและกลไกการท างานของ CAB (ซงมนถกพฒนาอยบน Pattern ตาง ๆ) เปนผจดการใหครบ มหศจรรยไหมครบ ส าหรบ CAB นนไมไดบอกแค Pattern เทานน มนบอกถงวธการน าไปใชในชวตประจ าวนของนกพฒนาเลยเชยว แตขอใหพยายามเขาใจมนใหไดกแลวกน (ผมจะคอยเอาใจชวย) เอาละเรามาดเรองโมดลของ CAB กนดกวา

รปท 14: การท างานระหวางโมดลตาง ๆ ของ Composite UI Application Block จากรปขางบนจะเหนวาในระบบม Shell ทผมไดเกรนไปแลว และมโมดลอยสองโมดลคอ Moduel1 และ Module 2 ซงสองโมดลนอยในกรอบเสนประดวยกนทงค ซงแสดงใหเหนวามนมความเปนอสระซงกนและกน (Module Dependency) ผมไดเคยบอกแลววาโมดลตดตอกบ Shell ผานทางคลาส ModuleController ซงจะสงสวนแสดงผลทตองการไปแสดงอยใน Shell ทเปน Container ชนดหนงโดยผาน

Page 22: Introduction Software Factory v1.1

22

กลไกของ CAB (เปนค าสงพเศษทเขยนเขาไปใน ModuleController เพอไปเรยกใชงานฟงกชนพเศษทอยใน .DLL ทมาพรอมกบ CAB (เวลาใชงานตอง Add Reference พวกนเขาไปถงจะท างานได) และโมดลตาง ๆ จะตดตอถงกนไดโดยผานทางกลไกสองแบบคอ Share State Property และ Event Broker Pattern เหนไหมครบเจอค าใหมเกดขนอกแลว Share State ยงพอไหวเดาวามนเกบขอมลเอาไวใน Cache เพอใชงานรวมกน แต Event Broker นนคออะไร ซงมทง Event (เหตการณทเกดขนเมอเกดการกระท ากบแอพพลเคชนเชน SearchClick() กคอคลกป มเพอคนหาขอมลเปนตน) และ EventTopicName กคอชนดของอเวนตทก าหนดไวในโปรแกรม (มนถกสรางเปน Global Class ทสามารถมองเหนรวมกนไดทงโซลชน) และผมจะบอกเพมเตมวาการตดตอสอสารกนระหวางโมดลไมใชการตดตอแบบมวๆ นะครบ อยดนกพฒนาจะไปเขยนโปรแกรมใหโมดลนตดตอกบโมดลนนตามใจตนเองไมไดนะ ถาท าอยางนบรรลยวายวอดครบ การตดตอสอสารกนระหวางโมดลจะตองเปนสวนหนงของการออกแบบในดานสถาปตยกรรมซอฟตแวร อยดๆ มนจะมาเกดเองตอนเขยนโปรแกรมไมได (อยางนจะเรยกวาออกแบบไปเขยนโปรแกรมตอไปเรอยๆ ) ตอนนพวกเราจะท าใหตวเราเองเปนวศวกรรมซอฟตแวร ดานไหนกวากนไป ใครจะเปนวศวกรรมซอฟตแวรดาน วศวกรรมการแสดงผล วศวกรรมโครงสราง วศวกรรมการเชอมตอฐานขอมล และอน ๆ พวกนจะเนนการออกแบบ พฒนาตนแบบใหดขนเปนล าดบ และจดท ารปแบบทดใหนกพฒนาไวใชงาน (ส าหรบนกพฒนาทท าตามรปแบบนเรามกใหจเนยร Skill Worker (เนนการท างานตามค าสงหรอขนตอนการท างานเทานน) หรอ Third Party ทจะเขามาเอาชนสวนซอฟตแวรของเราไปใช ส าหรบรายละเอยดของคลาส EventTopicNames นนสามารถดได ในรปดานลาง

รปท 15: โครงสราง Infrastructure ของระบบงาน

จากรปดานบนจะเหนไหมครบวาคลาสทชอวา EventTopicNames.cs นนจะอยในโปรเจกต Infrastructure.Interface ภายใตสวน Infrastructure อกทหนง ส าหรบรายละเอยดคลาสเปนดงนครบ

Page 23: Introduction Software Factory v1.1

23

รปท 16: รายละเอยดคลาส EventTopicNames จากรปดานบนจะเหนวา EventTopicNames มนกคอ Global Variable นนเอง เพยงแตมนถกจดเกบใหเปนทเปนทาง อยดๆ นกพฒนาจะมาสราง Global Variable เองไมไดมนจะถกสรางจาก Architect และประกาศใหนกพฒนาทกทานทราบ ทานผอานเหนไหมวา การน า Guidance and Best Practices มาใชนนมนบงคบเราใหมระเบยบไปโดยอตโนมต ท าใหพวกเราสามารถเปนนกวศวกรรมซอฟตแวรทดไดไมยาก โอ… แคพดเรอง EventTopic เรองเดยวกมาไกลแลวครบ รายละเอยดเรองนเอาไวมาคยกนตอกแลวกน ตอนนกมาถงโมดลแตละโมดลจะตดตอถงกนโดยใช Event Broker Pattern โดยใช Event ทเกดขนกบ EventTopicNames ทเราไดสรางไวเปนพาหะน าไปครบ และการเชอมตอระหวางกนจะเกดขนตอนประมวลผลระบบงานครบ หรอตอน Run Time นนเอง ดงนนจะเหนวาโมดลไมไดผกตดกนตลอดเวลาเหมอนฝาแผดอนทร-จนทร ส าหรบการตดตอสอสารแบบ Share State นนมกจะใชภายในโมดลเดยวกนเพอความรวดเรวนะครบ ส าหรบรปดานลางกจะเปนโมเดลของ Event Broker และ View Navigation Pattern

Page 24: Introduction Software Factory v1.1

24

รปท 17: รปแสดง EventBroker และ View Navigation Pattern จากรปดานบนจะเหนวามการตดตอกนระหวางสองโมดล ในขณะใดขณะหนง ฝายหนงจะเปนผสง (Publish) และฝายหนงจะเปนผ รบ (Subscribe) ซงฟงกชนตาง ๆ ทตองการเปดใหชาวบานเรยกใชงานกจะตอง Subscribe กอนนะครบ ถาคณหลบๆ ซอนๆ อยใครจะไปรวาม (จรงไหมครบ) เมอ Subscribe แลวกหมายถงคณไดลงทะเบยนบอกวา ถามใครอยากจะใชบรการคนหาขอมลทผมมอย ซงจะใช Global Variable ทอยในคลาส EventTopicNames เปนตวกลางนะครบ กบอกไดเลยครบแลวผมจะสงขอมลไปให สวนอกฝายทตองการใชบรการเชน ตองการคนหาขอมลทม EventTopicNames ทเปนชอเดยวกน กจะประกาศออกไป ซงผทคอบตรวจจบกจะท าหนาทไปหาในขอมลทไดลงทะเบยนเอาไวแลว และดวาม EventTopicName ทตรงกนหรอไม ถามตรงกนมนกจะท าหนาทเปนพอสอใหหนมสาวไดพบกน (โอไปกนใหญ เหมอนลงหนวดเลยใชไหม) ถงตอนน ทานผอานกคงจะไดรบางแลววา CAB 1.0 นนมนออกมาเพออะไร หลงจากททาง Microsoft Community ไดออก CAB มาแลว กจะเหนวา เรามรปแบบและขนตอนการพฒนาหนาจอเปนมาตรฐานเพอใหนกพฒนาไดน าไปใชเปนแนวทางเดยวกน แตวาขนตอนดงกลาวถงแมจะมขนตอนแนนอนชดเจนกตาม แตท าไมเราตองเขยนขนตอนซ าๆ ท าใหเสยเวลา บางครงอาจท าผดไปขนตอนหนงโปรแกรมกมปญหาแลว ดงนนตอมากมเครองมอทชอวา Guidance Automation Extension และ Guidance Automation Toolkit ซงเครองมอทงสองนนจะตดตงลงบน Visual Studio 2005 หรอ 2008 (แลวแตเวอรชน) เพอท าให Architect สามารถน าเอาขนตอนตาง ๆ ทก าหนดไวใน Guidance หรอคมอปฏบตงานของนกพฒนา มาสรางเปน Template เกบไว และน ามาสรางโซลชน สรางคลาสตามทก าหนด และอน ๆ ท Visual Studio ท าได และสงใหมน Generate ตามขนตอนทงหมดโดยอตโนมต ซงจะท าใหเราสามารถสราง Software Factory Solution ไดเพยงแคอดใจเดยว

รปท 18: รปแสดงวงจรการท างานของ Guidance Automation Toolkit

Page 25: Introduction Software Factory v1.1

25

จากรปแสดงใหเหนวาผทใชเครองมอ Guidance Automation Toolkit กคอ Architect ท าหนาทสรางแมพมพชนสวนซอฟตแวร (ซงในเอกสารคมอเขาจะใชค าวา recipe ซงกคอสตรการปรงอาหาร) ซงเขาคงจะมองวาการท าซอฟตแวรเหมอนการท าอาหาร ซงตองใชสวนประกอบการท าอาหารหลายๆ สวนน ามาผสมรวมกนทเดยว แลวกไดอาหารออกมาส าเรจ แตผมวาเจา Guidance Automation Toolkit นนาจะเหมอนกบมะหมส าเรจรปมากกวา ใสน ารอนกนไดทนท (รอใหเยนกอนนะครบ) หรอคนทคดเครองมอนชอบการท าอาหารเปนชวตจตใจกไมทราบ แตตอนนผมชกหวขาวแลวนะครบ ไดเวลาทานขาวเชาพอด ตอนนเวลาเกอบเกาโมงเชา เดยวมาเขยนตอครบ ….. กมาตอกนไดแลวครบ Guidance Automation Toolkit นนเปนเครองมอของ Architect เพอท า Recipe ในรปแบบตาง ๆ เพอใหนกพฒนาใชงาน ส าหรบรายละเอยดของ Recipe แบบตาง ๆ จะอธบายเพมเตมในเรอง Smart Client Software Factory พอถงจดน ผอานไดสงเกตเหนไหมวา รปแบบและแนวคดททาง Microsoft Patterns & Practices Community ไดน าเสนอมานคออะไร เมอถงตรงนไดมค าศพทเกดขนมากอนทจะไปเปน Smart Client Software Factory ค านนกคอ Software Baseline Architecture สงเกตไหมวาสงทเราไดเรยนรมาทงหมดน มนเรมเปนสถาปตยกรรมซอฟตแวรเบองตนแลวครบ ส าหรบ Baseline กหมายถงมนเรมเปนรปเปนรางทจะเกบเปนเวอรชนแรก ไดแลว จากนนเรากจะเพมรายละเอยดเขาไปเพอใหมนเฟรมเวรคทสมบรณแบบมากยงขน จากนน Patterns & Practices Community กไดฤกษออก Smart Client Software Factory เมอเดอน ม.ย. 2549 ใชกบ Visual Studio 2005 เหนไหมวา Smart Client Software Factory (SCSF) มอายครบสามขวบกวา ๆ แลวครบ เวอรชนปจจบนคอเวอรชนของ Apr 2008 ส าหรบ Visual Studio 2008 ถาใครสนใจเขาไปดาวนโหลดใชงานไดท http://smartclient.codeplex.com/ แตวากอนทจะตดตง SCSF คณตองตดตงซอฟตแวรดงตอไปน

- Visual Studio 2008 SP1

- Guidance Automation Extension (GAX) และ

- Guidance Automation Tool Kit (GAT) ตามล าดบนะครบ ถาไมตามล าดบกตดตงไมได แตถาถอดมนออกกตองถอน GAT

ออกกอน แลวจงจะถอน GAX นะครบ

- จากนนตดตง SCSF เวอรชน Apr 2008 ซงมนจะตดตงไลบรารของ Enterprise Library และ CAB 1.0 มาใหโดยอตโนมต

เปนยงไงบางครบ คณพรอมทจะใชงาน Smart Client Software Factory แลวหรอยงครบ ตอนนผมจะสอนใหทานลองใชงานเบองตน (ส าหรบ GAX และ GAT นนใหดวามนเปนเวอรชนส าหรบ VS 2008 หรอไมดวยนะครบ) เรมลองใชงานท าดงนครบ

1. เปด Visual Studio 2008

2. คลก File/ New/ Project กจะปรากฏวนโดวสของ New Project ดงในรปตอไป

Page 26: Introduction Software Factory v1.1

26

รปท 19: รปแสดงการสรางโปรเจกตของ SCSF

3. จากนนใหมาดสวนทเปน Guidance Packages และใหเลอก Smart Client Development – April 2008 ทอยภายใต

วนโดวสยอย Project Type จากนนใหเลอก Smart Client Application (C#) ส าหรบ ผทตองการใชภาษา C# ทอยใน

วนโดวส Template ดานขวามอ

4. จากนนในสวนทเปน Name: ทอยดานลางกสามารถเปลยนชอโซลชนได สมมตตอนนเราไมเปลยนชอ สวน Location

กแลวแตใครจะใหสรางโซลชนเกบไวทไหน จากนนคลกปม OK กจะปรากฏหนา Create a New Smart Client

Solution ซงกจะใหใสต าแหนงไลบรารของ Application Block ซงกจะม EntLib และ CAB นนเอง ซงตอนนเราตด

ตงอยในโฟลเดอร C:\Program Files\Microsoft Smart Client Factory April 2008\Lib\ ซงผอานลองเขาไปดกแลว

กนวามไลบรารอะไรบาง

Page 27: Introduction Software Factory v1.1

27

รปท 20: รปแสดงการสราง Smart Client Solution

5. จากหนาจอนใหคลกปม Finish แลวรอสกคร สงเกตดวามนท าอะไร จ าไดไหมครบวาผมเคยพดเรอง Recipe มาแลว

และนกคอ Smart Client Software Factory Create Solution เหนไหมครบวามนท าเปนชดส าเรจเลยครบ ลองนกภาพ

วาถาเราตองเขยนเปนขนตอน (ผมไมทราบวามนจะใชกขนตอนเพราะวานบไมไหว)

6. ตอนนคณกไดโซลชนดงในรปดานลาง ซงกคอ Infrastructure เฟรมเวรคเบองตนของระบบ

Page 28: Introduction Software Factory v1.1

28

รปท 21: รปแสดงโครงสรางหลกของ Smart Client Software Factory

จากรปดานบนจะเหนวาโครงสรางหลกของ Smart Client Software Factory ประกอบดวย สสวนหลก ดงนคอ - Infrastructure.Interface เปนโปรเจกตทใชเกบสวนประกอบหลกของระบบงาน เชน ตวแปรของระบบงาน ซงจะเกบอย

ใน Constants โฟเดอร ซงจะม EventTopicNames ทไดเคยอธบายมาแลว เกบ CommandName ซงเปนชอตวแปรทเปน

คอมมานด Workspace Name เปนชอตวแปรทเปน Workspace หรอพนทใชงานบนหนาจอ ซง SCSF จะม

LeftWorkspace (พนทท างานดานซาย) RightWorkspace (พนทท างานดานขวา) และ UI Extension Site Name ซง

ไดยนชอกไมคนหแลว ซง UI Extension Site Name มนกจะม MainMenu ใชกบสวนทเปนเมน MainToolBar ใชส าหรบ

สวนทเปน ToolBar และ MainStatus ส าหรบสวนทเปน Status Bar ซงสวนทงหมดของ UI Extension Site Name นนจะ

ประกอบกนเปนโครงสรางหนาจอหลก โดยถกใชรวมกนจากทกโมดล ส าหรบ Infrastructure.Interace นนจะถกใชงาน

หรอเปนอนเตอรเฟซของ Infrastructure.Module หรอ Infrastructure.Module เรยกใชงานฟงกชนหรอตวแปรตาง ๆ ผาน

ทาง Infrastructure.Interface

- Infrastructure.Library เปนไลบรารกลางหรอเซอรวส ทถกใชจากแอพพลเคชนทงหมด(Moduel)

- Infrastructure.Module เปนสวนประกอบหรอคอมโพแนนซทใชรวมกนระหวางโปรเจกตในโซลชน

Page 29: Introduction Software Factory v1.1

29

- Shell: กเปนสวนทใชแสดงผลหนาจอทไดเคยอธบายมาบางแลว

ถงแมวา SCSF ยงมอะไรอกมากมายทยงไมร เอาไวตอนตอๆ ไปกจะคอยน ามาอธบายเพมเตมในสาระทผอานควรจะร ตรงนกขอจบเรอง Smart Client Software Factory อยางคราว ๆ เทานกอนครบ ส าหรบคมอใชงานสามารถดไดโดยเขาไปทเมน Mirosoft patterns & practices ดงหนาจอดานลาง

รปท 22: หนาจอแสดงการเขาไปใชงาน Smart Client Software Factory Help แคเรอง SCSF กเหนอยแลวครบ แตมนยงไมหมดเทานนะ และแมวาเรอง SCSF จะดมากเทาไรกตาม แตวา CAB 1.0 มขอจ ากดในโครงสรางทท าให SCSF ไมสามารถพฒนาตอเพอใหรองรบเทคโนโลยใหม นนกคอ WPF และ Silverlight ถงแมวา SCSF จะออกสวนชวยงาน (Contribute) ทสามารถใชงานไดกบ WPF กตาม ดงนน CAB 2.0 จงออกมาเพอรองรบเทคโนโลยของ WPF และ Silverlight ในตอนแรก ๆ นน CAB 2.0 จะรจกกนในชอของ Prism มใครบางคนคนชอนไหมครบ ถาไมคน อกชอหนงกคอ “Composite Application Guidance for WPF and Silverlight” ถายงไมคนอกกมาอานตอกแลวกน ส าหรบในตอนตอไปผมคดวานาจะพดรายละเอยดในเรอง SCSF ใหมากขนเพราะวามนมแนวคดทนาสนใจและเอามาใชเปนกรณศกษา สวน Prism นนปจจบนยงไมม Software Factory มแตเพยงรปแบบการใชงาน (Guidance) รวมถงไฟล .DLL ทมาพรอมกน ผมเดาเอาวามนอาจจะท ามาใหใชกบ Visual Studio 2010 เลยทเดยว แตอยางไรกตามถาเราเรยนร SCSF ไดแลว และศกษา GAT เรากสามารถสราง Prism Software Factory ของเราเองไดครบ ผมขอจบบทความตอนแรกเทานนะครบ

อางอง:

1. ชอหนงสอ Software Factories Assembling Applications with Patterns, Models, Frameworks, and Tools ส านกพมพ Wiley ผแตง Jack Greenfield และ Keith Short ป 2004 ISBN 0-471-20284-3

2. ชอหนงสอ Practical Software Factories in .NET ส านกพมพ APress ผแตง Gunther Lenz และ Wojtek Kozaczynski ป 2006 ISBN 1-59059-665-x

3. ชอหนงสอ Programming Microsoft Composite UI Application Block and Smart Client Software Factory ส านกพมพ Microsoft Press ผแตง David S. Platt ป 2008 ISBN 0-7356-2414-3

4. Smart Client Software Factory Help ของ Smart Client Software Factories เวอรชน Apr 2008 ของ Microsoft Patterns & Practice จาก http://www.codeplex.com

5. Prism: patterns & practices Composite Application Guidance for WPF and Silverlight site เวอรชน Feb 2009 จาก http:www.codeplex.com

Page 30: Introduction Software Factory v1.1

30

6. Web Client Software Factory ของ Patterns & Practices เวอรชน Feb 2008 จาก http://www.codeplex.com