วันอาทิตย์ที่ 8 กรกฎาคม พ.ศ. 2555

Programmer เป็นทั้งงานศิลปะและทักษะและแรงงานกรรมกรกะดึก

จาก thaigamasutra.com 

จากที่เราได้เกริ่น และเขียนแผนภาพเกี่ยวกับ value chain ในครั้งที่แล้ว 
สิ่ง หนึ่งที่ผมจะชี้ให้เห็นครับ คือ programming ถูกระบุว่าอยู่ในส่วนที่เป็น labor-intensive task หรือแปลเป็นไทยคือ งานที่เน้น "แรงงานมากกว่าสมอง" และในขณะเดียวกัน งานที่เป็น knowledge-oriented จะเป็นพวกทางด้าน พวกวาดรูป แต่งเรื่อง 

ผมมีโอกาสได้ทำงานประสานงานกับ programmer พอสมควร ผมเห็นชีวิตการทำงานของพวกเขา 
งานของเขาคือ นั่งหลังขดหลังแข็งอยู่หน้าจอคอมพิวเตอร์ เป็นเดือนๆ เพื่อทำโปรแกรม ตามคำสั่ง spec ที่ได้กำหนดไว้ 
ต้องทำงานหนักและใช้เวลามาก 
บางทีงานเร่งๆ ก็จะต้องอยู่ดึก บางทีไม่ได้กลับบ้าน และเครียดมาก 
หลายครั้งเขาจะพร่ำบ่น และเรียกตัวเองว่า "กรรมกรไฮเทค"


ผมไม่ได้ต้องการจะบอกว่า programmer เป็นสายงานที่ต่ำต้อย ไร้ค่า ไม่มีใครควรมาทำนะครับ 
ตรง ข้าม ยังไงซะ programmer ก็เป็นส่วนที่จำเป็นมากๆส่วนหนึ่งของการทำเกม และไม่ได้ปฎิเสธความจริงที่ว่า การที่คนคนหนึ่งจะเป็น programmer ที่เก่งได้จะต้องใช้ความพยายามอย่างมาก และต้องเรียนรู้เรื่องยากๆมากมาย 
programmer หรือวิศวกร เป็นสายงาน ของแรงงานเฉพาะ เรียกว่าระดับ "expert" หรือ "specialist" ไปในทางลึก ที่มีค่าตอบแทนสูงมากเมื่อเทียบกับแรงงานสายอื่น เป็นการตอบแทนอยู่แล้ว มีเกียรติ ไม่ได้ต่ำต้อยแต่อย่างใด 
เพียงแต่ผมให้เห็นมุมที่กว้างขึ้น 
ว่า programming "สำคัญ" แต่ไม่ใช่ "ทั้งหมด" 

เมื่อเราเห็นดังนั้นแล้ว จะทำให้เราเข้าใจ และสามารถหาทางจัดการอย่างถูกต้องมากขึ้น 
และ ตอบคำถามที่บางคนอาจจะสงสัยตัวเองได้ว่า ทำไมท่องจำคำสั่งภาษานั้นภาษานี้ OpenGL ยากๆมากมายได้หมด แต่ทำไมถึงยังไม่ได้เกมที่ดี ยิ่งสับสน ก็ยิ่งพยายามแก้ปัญหาโดยการท่องจำให้มากขึ้น แล้วก็ยิ่งหาคำตอบไม่เจอ 
นั่นเพราะว่ายังมีด้านอื่นอีกเยอะที่เราอาจจะยังไม่ได้มอง 

ถ้าเราพบว่า ตัวเรายังไม่มีด้านนั้น 
เราอาจจะจัดการ โดยการอาจจะ 
- ฝึกเองเพิ่มเติม 
- หรือหาเพื่อนด้านนั้น 
- หรือหาพันธมิตร 

ช่องว่าง ไม่ได้มีไว้ให้ถอย 
แต่มีไว้ให้เติมให้เต็ม
การพัฒนาโปรแกรมที่ประสบ ผลสำเร็จนั่น จะอยู่ที่ system analysis 75 % เลยครับ เพราะโปรแกรมที่ดีๆ นั่นขึ้นอยู่กับออกแบบเป็นหลักครับ 
เช่น ออกแบบฐานข้อมูล ออกแบบการระบบทำงาน ออกแบบหน้าจออินเตอร์เฟส เป็นต้น 

ส่วน โปรแกรมเมอร์นั้น แค่มีหน้าที่เขียนโปรแกรมให้ทำงานตามระบบที่ system analysis วางไว้เท่านั้น เหมือนกับ วิศวกร คอยคุมงานให้พนักงานก่อสร้างให้ตรงตามแผนที่ได้วางไว้

Programing คือ ศิลปะครับ เป็นงานก้ำกึ่งระหว่าง จินตนาการและตรรถกะศาสตร์ 

เป็นงานที่อิงด้วยความเป็นไปได้และครุ่นคิดแสวงหาแนวทางใหม่ๆที่เป็นไปไม่ได้ 
ว่าง่ายๆโปรแกรมเมอร์คือผู้เชื่อมโยงระหว่างความเป็นไปไม่ได้และความเป็นไปได้นั่นเอง 

โปรแกรมเมอร์ทุกคนทำงานพื้นฐานได้เหมือนๆกันก็จริง เหมือนจิตกรที่วาดภาพกันได้ แต่เอกลักษณ์และแนวคิดที่ต่อยอดไปยังจุดมุ่งหมายจะแตกต่างไปตามทักษะของบุคคล

งานโปรแกรมมิ่งเป็นงานศิลป์ครับ 
เทียบกับจิตรกร มันก็เหมือนกัน มีกระดาษเปล่าๆ มาให้เขียนความคิด เขียนจินตนาการลงไป 
จนได้เป็นผลงาน เหมือนๆกัน ต่างกันแค่ อันนึงใส่เป็นลายเส้น อีกอันนึงใส่เป็นตรรกระอัลกอลิทึ่ม ทั้งสองอย่างล้วนใช้ทักษะและจินตนาการ

นายศิษฏ์ ปัจจัยสมบูรณ์
โดยส่วนตัวแล้วเอางานทางด้าน programming ไปเทียบกับกรรมกร มันก็แค่มุมมองจากการที่ต้องลงมือทำมุมนึงเท่านั้นเอง

อ่านความเห็นเพิ่มเติมได้ที่ http://www.gconsole.com/forum/show.php?page=topicdetail&pagenum=2&cat=&perpage=15&id=78046

วันอังคารที่ 3 กรกฎาคม พ.ศ. 2555

การเขียนผังงาน (Flowchart)

การเขียนผังงาน ( Flowchart )

                ผังงาน คือ แผนภาพที่มีการใช้สัญลักษณ์รูปภาพและลูกศรที่แสดงถึงขั้นตอนการทำงานของโปรแกรมหรือระบบทีละขั้นตอน รวมไปถึงทิศทางการไหลของข้อมูลตั้งแต่แรกจนได้ผลลัพธ์ตามที่ต้องการ

ประโยชน์ของผังงาน
          • ช่วยลำดับขั้นตอนการทำงานของโปรแกรม และสามารถนำไปเขียนโปรแกรมได้โดยไม่สับสน
          • ช่วยในการตรวจสอบ และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด
          • ช่วยให้การดัดแปลง แก้ไข ทำได้อย่างสะดวกและรวดเร็ว
          • ช่วยให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมได้อย่างง่าย และรวดเร็วมากขึ้น

วิธีการเขียนผังงานที่ดี
          • ใช้สัญลักษณ์ตามที่กำหนดไว้
          • ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง หรือจากซ้ายไปขวา
          • คำอธิบายในภาพควรสั้นกระทัดรัด และเข้าใจง่าย
          • ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า - ออก
          • ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
          • ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรม

ผังงานโปรแกรม ( Program Flowchart )
             การเขียนผังโปรแกรมจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI ( American National Standards Institute ) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้


                                                                 
ดูตัวอย่าง และศึกษาข้อมูลเพิ่มเติมได้ค่ะ






วันอาทิตย์ที่ 1 กรกฎาคม พ.ศ. 2555

ความสัมพันธ์ระหว่าง Parent และ Child


 ความสัมพันธ์ระหว่าง Parent และ Child 

เนื่องจาก Context Diagram เป็นเพียงการแสดงภาพรวมของระบบงานและแหล่งข้อมูลภายนอกเท่านั้น ยังไม่มีการแสดงรายละเอียดของกระบวนการทำงานหรือโพรเซสต่าง ๆ ซึ่งเราต้องการมีการแตก Context Diagram ออกเป็นระดับย่อย หรือระดับลูก ต่อไปอีกเพื่ออธิบายรายละเอียดของงานต่าง ๆ ให้มากขิ่งขึ้น ซึ่งเราจะเรียกความสัมพันธ์แบบนี้ว่า Parent / Child หรือ ความสัมพันธ์แบบ แม่ / ลูก โดยละดับของ DFD ที่แตกต่างจาก Context Diagram จะเป็น DFD Level 1 และขณะเดียวกัน ถ้ามีการแตกโพรเซสย่อยของ DFD Leve1 1 ต่อไปอีก DFD ที่ย่อยลงไปจะเป็น DFD Leve1 2 ……ดังแสดงในรูปตัวอย่าง


รูปแสดงการแยกโพรเซสย่อย
รายละเอียดเพิ่มเติม http://www.bcoms.net/system_analysis/lesson52.asp

ทักษะสำคัญของนักวิเคราะห์ระบบ

ทักษะสำคัญของนักวิเคราะห์ระบบ





ทักษะทางด้านการวิเคราะห์
          การที่นักวิเคราะห์ระบบจะมีทักษะการวิเคราะห์ที่ดีและครบถ้วนนั้นก็จะต้องประกอบไปด้วยองค์ประกอบด้านต่าง ๆ ที่มีความสำคัญอย่างมากดังต่อไปนี้
          1. การคิดอย่างเป็นระบบ : ซึ่งในส่วนของการคิดอย่างเป็นระบบให้ได้นั้นก่อนอื่นจะต้องมีความเข้าใจก่อนว่า “ระบบ (System)“ คืออะไร โดยถ้าพิจารณาในมุมมองของธุรกิจแล้วนั้นระบบก็คือองค์ประกอบต่าง ๆ ของกระบวนการทำธุรกิจ ที่ทำธุรกิจนั้นสามารถดำเนินการได้ตามวัตถุประสงค์ที่ตั้งไว้
ลักษณะสำคัญของระบบ
          1. ระบบจะมีองค์ประกอบอยู่ 9 ส่วนที่สำคัญ
          2. ระบบจะเกี่ยวข้องกับสภาพแวดล้อมที่อยู่
          3. จะมีขอบเขต (boundary) เป็นตัวแบ่งกั้นระหว่างระบบกับสภาพแวดล้อมนั้น ๆ
องค์ประกอบของระบบ มีดังนี้
1. ส่วนประกอบ (component): ส่วนต่าง ๆ ที่เป็นส่วนย่อย ๆ ที่อยู่ในระบบหรือระบบย่อย
2. ความสัมพันธ์ระหว่างส่วนประกอบ (Interrelated Component): ความสัมพันธ์ที่เกิดขึ้นระหว่างส่วนประกอบ
3. ขอบเขต (Boundary) : เป็นสิ่งที่แบ่งเขตระหว่างระบบกับสภาพแวดล้อมภายนอก
4. วัตถุประสงค์ (purpose): สิ่งที่บอกว่าระบบดังกล่าวนี้มีความมุ่งหมายหรือวัตถุประสงค์อย่างไรบ้าง
5. สภาพแวดล้อม (Environment): สิ่งที่อยู่ภายนอกล้อมรอบตัวระบบที่กำลังศึกษา
6. ส่วนเชื่อมต่อ (Interface): เป็นจุดที่ระบบมีการแสดงในส่วนของข้อมูลรับเข้าจากผู้ใช้ งาน
7. ข้อมูลรับเข้า (Input): เป็นสิ่งที่รับเข้ามาจากภายนอกเข้าสู่ระบบเพื่อใช้ในการประมวล ผลของระบบ
8. ข้อมูลส่งออก (output) เป็นสิ่งที่ระบบส่งผลมาหลังจากที่ได้ทำการประมวลผลเสร็จสิ้น
9. ข้อจำกัด (Constraint): สิ่งที่เป็นตัวกำหนดเพื่อที่ให้ระบบสามารถทำงานได้สำเร็จลุ ล่วงได้
การแตกระบบเป็นส่วนย่อย
          เป็นกระบวนการที่ทำให้เราสามารถเรียนรู้และเข้าใจ ในตัวระบบได้ดีและลึกซึ้งมากยิ่งขึ้น เนื่องจากถ้าเรามองระบบโดยภาพรวมใหญ่ทั้งหมดอาจทำให้ยากในการเข้าใจ ซึ่งวิธีการในการแตกระบบเป็นส่วนย่อยเราจะมีวิธีการ ดังต่อไปนี้
          - แบ่งระบบออกเป็นส่วนย่อย ๆ เพื่อที่จะได้สามารถจัดการในแต่ละระบบย่อยได้เต็มที่
          - มุ่งเน้นในการพิจารณาระบบย่อยที่เกี่ยวข้องให้เหมาะสมกับผู้ใช้งาน
          - สร้างองค์ประกอบต่าง ๆ ในระบบในเวลาที่ต่างกัน
          
          2. องค์ความรู้เกี่ยวกับองค์กร : นักวิเคราะห์ระบบควรที่จะรู้เกี่ยวกับองค์กร ที่ตนได้เข้าไปทำการพัฒนาระบบให้โดยการที่จะ ทำการพิจารณาว่านักวิเคราะห์ระบบนั้น มีความรู้ในด้านใดที่จำเป็นบ้างต้องพิจารณา ดังต่อไปนี้
          2.1 เข้าใจการทำงานภายในองค์กรว่ามีการทำงานอะไรบ้าง และมีลักษณะเช่นใดในแต่ละงาน
          2.2 มีองค์ความรู้ในงานเฉพาะด้านขององค์กรและทราบว่ากระบวนการในแต่ละฝ่ายหรือแต่ละแผนกขององค์กรนั้น ๆ เป็นอย่างไร
          2.3 รู้ว่าการที่จะทำงานให้สำเร็จลุล่วงได้นั้นจะต้องทำอย่างไรบ้าง
          2.4 เข้าใจนโยบายขององค์กร
          2.5 ทราบถึงสภาพแวดล้อมในภาวะปกติ และภาวะที่มีการแข่งขัน ว่ามีความแตก ต่างกันอย่าไรบ้าง
          2.6 ทราบถึงกลยุทธ์และกลวิธีต่าง ๆ ที่องค์กรได้ใช้อยู่ในปัจจุบัน
          
          3. การระบุปัญหา : เป็นวิธีที่ต้องสามารถทราบและระบุให้ได้ว่า ปัญหาที่เกิดขึ้นกับการพัฒนาระบบนั้นมีอะไรบ้าง แต่ก่อนที่จะสามารถระบุได้ว่าปัญหามีอะไรเราต้องทราบก่อนว่าปัญหาคืออะไรปัญหาคือ “ความแตกต่าง” ระหว่างสิ่งที่เป็นอยู่ในปัจจุบันกับสิ่งที่ต้องการหรือคาดหมายจะให้เป็น โดยส่วนมากนั้นการระบุความแตกต่างที่เกิดขึ้นจะทำการเปรียบเทียบระหว่างผลลัพธ์ที่เราได้มากับผลลัพธ์ที่ได้จากต้นแบบว่ามีความต่างกันหรือไม่ ถ้าต่างกันก็จะเกิดเป็นปัญหาขึ้นมา
         
          4. การวิเคราะห์และแก้ปัญหา : เป็นกระบวนการที่ George Huber ได้ทำการพัฒนามาจากกระบวนการการตัดสินใจของ Herbert Simon ซึ่งในกระบวนการวิเคราะห์และแก้ปัญหานั้นมีขั้นตอนทีมีความสำคัญทั้งหมดอยู่ 4 ขั้นตอน ดังนี้
          4.1 การระบุปัญหา : เป็นขั้นตอนที่ทำการเก็บรวบรวมข้อมูลต่าง ๆ ที่เกี่ยวข้องทั้งหมดก่อน จากนั้นจึงทำการระบุปัญหาที่พบว่าปัญหานั้นคืออะไร เพื่อที่จะได้ทำการ วิเคราะห์และแก้ไขต่อไป
          4.2 การออกแบบและค้นหาทางเลือก : ทำการค้นหาทางเลือกต่าง ๆ ที่จะสามารถนำเอามาใช้ในการแก้ไขปัญหาได้ว่ามีการเลือกใดบ้างที่มีความน่าจะเป็นในการนำมาแก้ไขปัญหาได้
          4.3 การตัดสินใจเลือกทางเลือก : ทำการเลือกทางเลือกต่าง ๆ ากขั้นตอนที่แล้วเพื่อใช้ในการแก้ไขปัญหาที่ได้วางไว้ตั้งแต่แรก แต่ยังไม่นำเอาไปใช้งานจริง
          4.4 การนำไปใช้ : เป็นการนำเอาผลที่ได้จากการตัดสินใจดังกล่าวข้างต้น ไปทำการประยุกต์ใช้งานจริง ในสภาพการทำงานจริง เพื่อแก้ไขปัญหาที่เกิดขึ้นมา



ทักษะเชิงเทคนิค
          นอกจากทักษะทางด้านการวิเคราะห์แล้วนักวิเคราะห์ระบบยังต้องอาศัยทักษะเชิงเทคนิคอีกด้วย ทั้งนี้เพื่อที่จะสามารถได้ใช้ประโยชน์ได้ว่าถ้าพัฒนาระบบแล้วจะมีการเลือกใช้งานเทคโนโลยีอย่างใดจะได้ใช้งานให้เหมาะสมยิ่งขึ้น ซึ่งวิธีการในการพัฒนาทักษะเชิงเทคนิคของนักวิเคราะห์ระบบมีอยู่ด้วยกัน 3 วิธีหลัก ๆ ดังนี้
1. ศึกษาหาความรู้เกี่ยวกับเทคโนโลยีต่าง ๆ ที่มีการเปลี่ยนแปลงอย่างรวดเร็วอยู่เสมอ 
2. ร่วมกิจกรรมที่ช่วยในการเสริมสร้างทักษะทางเทคนิค เช่น
- การอ่านหนังสือ,วารสารทาง IT ที่มีจำหน่ายตามท้องตลาด
- การเป็นสมาชิกของกลุ่ม,ชมรมทาง IT
- ร่วมเรียน/สอนในสถาบันการศึกษา ซึ่งช่วยทำให้แลกเปลี่ยนความรู้ความคิดกับคนอื่น ๆ
- ร่วมในการฝึกอบรมที่องค์กรจัดให้
- ร่วมประชุมหรือสัมมนาในงานที่เกี่ยวกับ IT
- ค้นหาข้อมูลทางอินเตอร์เนต
- มีส่วนร่วมในการประชุมหรือในกลุ่มใหม่ ๆ ทั้งระดับชาติและนานาชาติ
 
3. เรียนรู้และเข้าใจเทคโนโลยีที่หลากหลาย เช่น
- รูปแบบของเครื่องคอมพิวเตอร์
- ภาษาที่ใช้ในการทำงานของคอมพิวเตอร์
- ระบบปฏิบัติการ
- ฐานข้อมูลและระบบการจัดการฐานข้อมูล
- มาตรฐานในการสื่อสารข้อมูล
- เครื่องมือต่าง ๆ ที่ใช้ในการพัฒนาระบบ
- ภาษาและเครื่องมือที่พัฒนาเว็บไซต์


ทักษะทางด้านการจัดการ
          เป็นทักษะที่มีความจำเป็นเนื่องจากนักวิเคราะห์ระบบจะต้องสามารถจัดการกับสิ่งต่าง ๆ ที่จะเกิดขึ้นระหว่างการพัฒนา ระบบ เพื่อที่จะให้การพัฒนาระบบสามารถดำเนินต่อไปได้ด้วยดี โดยสิ่งที่นักวิเคราะห์ต้องจัดการมีอยู่ 4 ด้านหลัก ๆ คือ
          1. การจัดการทรัพยากร : ต้องสามารถจัดการและบริหารทรัพยากรต่าง ๆ ที่มีอยู่อย่างจำกัด ไม่ว่าจะเป็นบุคลากร,อุปกรณ์, งบประมาณ และเวลา ให้สามารถเพียงพอต่อการดำเนินการของโครงการ
          

          2. การจัดการโครงการ : เป็นกระบวนการที่จัดทำขึ้นมาใช้เพื่อควบคุมการพัฒนาระบบให้อยู่ในกรอบที่วางและตกลงกันไว้ตั้งแต่เริ่มแรก ซึ่งภายหลังในส่วนของการบริหารจัดการ โครงการนี้จัดว่ามีความสำคัญอย่างมากในการพัฒนาระบบ จนมีการเปิดสอน เป็นวิชาเรียนในสถาบันการศึกษาหลาย ๆ แห่งด้วย
       

          3. การจัดการความเสี่ยง : เป็นกระบวนการจัดการกับความเสี่ยงที่สามารถเกิดขึ้นในระหว่างการพัฒนาระบบ ว่าถ้าเกิดความ เสี่ยง นั้นขึ้นแล้วเราจะมีวิธีการอย่างไรที่จะลดหรือป้องกันความเสียหายของความเสี่ยงที่จะเกิดขึ้น
          

          4. การจัดการกับการเปลี่ยนแปลง : เป็นกระบวนการที่จัดการกับการเปลี่ยนแปลงต่าง ๆ ที่จะเกิดขึ้นระหว่างการพัฒนาระบบ ซึ่งถ้าเราไม่มีวิธีการจัดการกับการเปลี่ยนแปลงต่าง ๆ เหล่านั้นแล้วก็จะส่งผลต่อมาตรฐานในการพัฒนาระบบที่ไม่แน่นอน


ทักษะในด้านความสัมพันธ์ระหว่างบุคคล
          เนื่องจากนักวิเคราะห์ระบบทำหน้าที่เป็น “คนกลาง” ระหว่างทีมพัฒนาระบบกับผู้ใช้งาน ฉะนั้นย่อมต้องอาศัยทักษะทางด้าน ความสัมพันธ์ระหว่างบุคคลในการติดต่อ ซึ่งถ้านักวิเคราะห์ระบบมีทักษะในด้านความสัมพันธ์ระหว่างบุคคลที่ดีแล้ว ก็จะช่วยทำให้งาน ในการพัฒนาระบบสำเร็จได้ โดยทักษะในด้านการติดต่อสื่อสารที่จำเป็นนั้น มีดังนี้
          1. ทักษะทางการติดต่อสื่อสาร : เป็นทักษะที่ช่วยเสริมสร้างความสัมพันธ์ที่ดีระหว่างผู้ใช้และทีมพัฒนา โดยทักษะทางด้าน การติดต่อสื่อสารจะพัฒนาได้โดยประสบการณ์ที่สะสมไว้ รูปแบบในส่วนของทักษะทางการติดต่อสื่อสารที่นักวิเคราะห์ระบบต้องใช้บ่อย ๆ มีดังนี้
           - การสัมภาษณ์และการฟัง
           - การใช้แบบสอบถาม
           - การนำเสนองานต่าง ๆ
ขั้นตอนในการพัฒนาทักษะในการติดต่อสื่อสาร มีดังนี้
          1. การฝึกปฏิบัติโดยวิธีการฝึกปฏิบัตินั้นก็มีอยู่ด้วยกันหลายวิธี ไม่ว่าจะเป็นการฝึกจากการเป็นอาสาสมัครเพื่อพูดเรื่องต่าง ๆ หรือว่าเข้าอบรมในหลักสูตรที่สอนด้านการพูด
          2. ใช้ VDO,VCD ที่สอนในการติดต่อสื่อสารในระดับต่าง ๆ แล้วฝึกด้วยตนเอง
          3. เข้าอบรมทักษะการเขียนเชิงธุรกิจและเชิงเทคนิค
          4. ลองฝึกหัดการเขียนแล้วให้ผู้ที่มีความรู้ลองวิจารณ์ดู

          
          2. การทำงานเกี่ยวกับการทำงานเป็นทีม : ซึ่งจะมีหลักในการพิจารณาที่แตกต่างกัน ใน กรณีที่ทำงานเกี่ยวกัน ปัจจัยที่พิจารณาถึงใน การทำงานก็คือ เวลาในการทำงาน, ข้อสัญญาหรือข้อตกลงต่าง ๆ และกำหนดระยะเวลาแล้วเสร็จ ส่วนถ้าเป็นการทำงานกับทีมนั้นจะต้อง คำนึงถึงการจัดทำมาตรฐานในการทำงานร่วมกันและการประสานงานกันในการทำงาน
          

          3. อาศัยเครื่องมือที่ช่วยอำนวยความสะดวกในการทำงานกลุ่ม : เครื่องมือที่เข้ามามีส่วนช่วยอย่างมากในการทำงานกลุ่ม
ร่วมกันของ นักวิเคราะห์ระบบกับทีมพัฒนาระบบก็คือ JAD (Joint Application Development) โดยจะช่วยอำนวยความสะดวกในการทำงาน ในรูปแบบทีมนั้นเป็นไปได้อย่างเหมาะสมมากยิ่งขึ้น
          

          4. การจัดการกับความคาดหวังของผู้ใช้ : นักวิเคราะห์ระบบมีความจำเป็นอย่ายิ่งที่ต้องจัดการกับความคาดหวังของผู้ใช้ต่อระบบที่ จะพัฒนา เพื่อที่จะทำให้การใช้ระบบประสบความสำเร็จ ซึ่งถ้าไม่มีการจัดการกับความคาดหวังของผู้ใช้แล้ว มักจะเกิดปัญหาขึ้นมากมายภาย หลัง เช่น ผู้ใช้มักต้องการระบบที่สมบูรณ์ แบบที่มักเรียกว่าระบบในอุดมคติ แต่พอพัฒนาระบบ
เสร็จแล้วระบบจริง ไม่สามารถทำได้เช่น ที่คาดไว้ก็จะเกิดปัญหาหรือความขัดแย้งกับทีพัฒนาได้โดยทักษะที่ช่วยทำให้การจัดการ
กับความคาดหวังกับผู้ใช้ประสบความสำเร็จได้ ประกอบด้วย
          4.1 เข้าใจถึงเทคโนโลยีต่าง ๆ และกระบวนการทำงานของระบบที่พัฒนา
          4.2 มีความสามารถที่จะสื่อให้ผู้ใช้ได้ทราบถึงภาพของระบบที่แท้จริงว่าจะมีลักษณะเป็นอย่างไร
          4.3 ให้ผู้ใช้ได้ทราบถึงกระบวนการและขั้นตอนในการพัฒนาระบบ









วันศุกร์ที่ 29 มิถุนายน พ.ศ. 2555

ได้ทำแบบนี้ก็ดีนะ :)

เพื่อนๆ
                   เราไปนั่งดู Youtube แล้วเจอ คลิปนี้เลยแวะเอามาฝาก  เราว่าเนื้อหาคล้ายๆกับที่อาจารย์สอนเมื่อ คลาสที่แล้ว ลองดูกันนะ สำหรับคนที่ไม่ได้เข้าคลาสที่แล้ว :)


Part 1


Part 2




มันอาจจะดูจืดๆไปหน่อยนะ แต่ก็ได้ความรู้ดี

ไม่แน่เราอาจจะได้ทำคลิปแบบนี้ส่งอาจารย์จงดี ก็เป็นไปได้ 5555


นักวิเคราะห์ระบบฯ (System Analyst) เค้าทำงานกันอย่างไร?


นักวิเคราะห์ระบบ เค้าทำงานกันอย่างไร?




 วันนี้ขอพาท่านผู้ชม ผู้อ่าน และแฟนคลับทุกๆ ท่าน เข้าไปสัมผัส ตำแหน่งงานหนึ่งของ กสท นั่นก็คือ “นักวิเคราะห์ระบบงานคอมพิวเตอร์“ ที่ดูเหมือนว่าจะเป็นที่ต้องการเป็นอย่างมาก เนื่องจากถึงคราวเปิดรับสมัครบุคลากรเข้าทำงานทีไร ตำแหน่งนี้มีเข้าร่วมชิงชัยในสนามสอบด้วยเกือบทุกครั้ง เมื่อรู้อย่างนี้แล้ว หลายคนก็คงอยากรู้แหละว่า คนพวกนี้เค้าต้องทำงานกันอย่างไร? งั้นเราไปดูกันเลยดีกว่า

คุณสมบัติเบื้องต้นของนักวิเคราะห์ระบบที่ควรจะมี คือ

1. มีความรู้ความสามารถทาง คอมพิวเตอร์ เทคโนโลยีสารสนเทศและการสื่อสาร (ICT) มีประสบการณ์ในการเขียนโปรแกรม
 เนื่องจากเป็นงานที่ข้องเกี่ยวกับทั้งอุปกรณ์คอมพิวเตอร์ (Hardware) ซอฟต์แวร์  ระบบเครือข่าย  และข้อมูล เป็นหลัก เจอกับมันทุกวัน จนเรียกว่าแทบจะเป็นส่วนหนึ่งของชีวิตไปเลย

2. มีความสามารถในสื่อสาร
เนื่องจาก เป็นงานที่ต้องพบปะผู้คน เรียนรู้ปัญหา เข้าใจปัญหาได้อย่างรวดเร็ว รวมทั้งสามารถนำเสนอแนวความคิดของตนเองให้ผู้อื่นเข้าใจได้

3. มีทักษะการแก้ไขปัญหาทั้งเฉพาะหน้าและปัญหาในระยะยาวได้ดี
เนื่องจาก เมื่อเข้าไปทำงาน หน้าที่ของคนกลุ่มนี้คือ ช่วยแก้ปัญหาในการทำงาน หรือเสนอวิธีการใหม่ ที่สามารถนำเอาเทคโนโลยีเข้าไปช่วยเป็นเครื่องในการเพิ่มประสิทธิภาพการทำงาน

4. มีมนุษยสัมพันธ์ที่ดีมีใจรักในงานให้บริการ
เนื่องจาก เป็นงานที่ต้องติดต่อกับคนจำนวนมาก การสร้างมนุษยสัมพันธ์ที่ดีจึงเป็นสิ่งที่หลีกเลี่ยงไม่ได้ เพื่อให้การทำงานเกิดความคล่องตัว และจำเป็นต้องอาศัยความร่วมมือจากคนจำนวนมากเพื่อให้ระบบงานประสบความสำเร็จ

5. มีความเป็นผู้นำและสร้างทีมในการทำงานได้
เพราะไม่เพียงแค่ต้องติดต่อกับคนทำงานหรือผู้ที่กำลังจะกลายเป็นผู้ใช้งาน(User) เท่านั้น ยังจำเป็นต้องสามารถสร้างทีม เพื่อเข้ามาช่วยในการพัฒนาระบบงานที่มีเวลาค่อนข้างจำกัด และมีความยาก ง่าย ต่างกันไปตามเงื่อนไขของผู้ที่ต้องการใช้งาน ภายในทีมงานนั้น จะประกอบไปด้วย นักพัฒนาโปรแกรมหลายๆ คน (Developer หรือ Programmer) นักทดสอบโปรแกรมหรือซอฟต์แวร์ (Tester) ผู้จัดการฝึกอบรม  รวมทั้งยังต้องทำหน้าที่เป็นผู้ประสานงานได้อย่างยอดเยี่ยม

6. ขยัน อดทนต่อสถานการณ์ที่กดดันได้ และมีความรับผิดชอบสูง
เนื่องความต้องการของผู้ใช้งานมักจะเปลี่ยนแปลงอยู่ตลอดเวลา จึงมีความจำเป็นอย่างยิ่งต้องอาศัยความวิริยะอุตสาหะ ขยันหมั่นเพียร อดทน ทุ่มเท เพื่อให้งานที่รับผิดชอบประสบความสำเร็จ และผู้ใช้งานเกิดความพึงพอใจสูงสุด

คราวนี้เราจะไปดูกันต่อค่ะว่า ในแต่ละวันงานของคนพวกนี้เค้าทำอะไรกันบ้าง โดยทั่วไปแล้วงานของคนกลุ่มนี้จะยึดหลักการทำงานตามวงจรของการพัฒนาระบบงานทางคอมพิวเตอร์ที่ประกอบได้ด้วยขั้นตอนต่างๆ ดังนี้

1. ศึกษาความเป็นไปได้ 
ในการพัฒนาะบบงานคอมพิวเตอร์ โดยทำการเก็บรวบรวมข้อมูลคร่าวๆ ว่างานที่คนอื่นทำๆ กันอยู่เป็นประจำทุกวันนั้น หากนำเอาคอมพิวเตอร์เข้าไปช่วยในการทำงานแล้วจะส่งผลอย่างไร เกิดความคุ้มค่าอย่างไร เกิดผลดี ผลเสียอย่างไร จากนั้นก็จะทำการประเมินว่า งานนี้ควรที่จะนำเอาระบบคอมพิวเตอร์เข้าไปทำงานแทนคน จะดีหรือไม่ หากประเมินแล้วไม่ผ่าน งานนี้ก็เป็นอันยกเลิก แล้วคงต้องไปดูงานอื่นๆ ต่อไป แต่โดยส่วนใหญ่แล้วมักจะผ่าน เพราะเดี๋ยวนี้การทำงานเกือบทุกอย่างก็ใช้คอมพิวเตอร์เกือบทั้งนั้น  เมื่อผ่านขั้นตอนนี้ก็ไปสู่ขั้นตอนต่อไป

2. เก็บรวบรวมความต้องการของผู้ใช้งาน 
โดยเข้าไปสัมภาษณ์ผู้ที่ทำงานอยู่ในปัจจุบัน  สังเกตการทำงาน ให้ทำแบบสอบถาม เพื่อจะได้รู้ว่างานที่ทำๆ กันอยู่เดิมนั้นเป็นอย่างไร หรือเรียกได้ว่าเข้าไปดูกระบวนการทำงานทั้งหมดของการทำงานเดิมนั่นเอง จากนั้นก็เก็บปัญหาที่เกิดขึ้นในปัจจุบัน แล้วก็คิดหาวิธีในการแก้ปัญหาโดยใช้คอมพิวเตอร์ช่วยในการทำงาน ซึ่งในขั้นตอนนี้แหละค่ะ ประสบการณ์ของนักวิเคราะห์ระบบจะมีส่วนสำคัญที่จะเสนอแนะวิธีการแก้ปัญหาแบบใดถึงจะดีที่สุด ซึ่งในขั้นตอนก็จะมีเทคนิคต่างๆ เข้ามาช่วย เช่น เทคนิคที่นิยมใช้กันคือ การทำ Prototype หรือการสร้างแบบจำลองคร่าวๆ เพื่อให้ผู้ใช้งานเห็นภาพและเข้าใจได้ง่ายขึ้นว่าสิ่งที่กำลังจะเกิดขึ้นในอนาคตจะเป็นไปในรูปแบบใด พร้อมทั้งยังช่วยให้ผู้ใช้งานมีส่วนร่วมในการพัฒนาระบบงานที่กำลังจะเกิดขึ้นด้วยโดยการให้ข้อเสนอแนะเพิ่มเติมกับ Prototype ที่สร้างขึ้น

3. วิเคราะห์และออกแบบระบบงานใหม่ 
โดยหลังจากที่เก็บความต้องการของผู้ใช้งานได้พอสมควรแล้ว ก็เป็นหน้าที่ของนักวิเคราะห์ที่ต้องมาวิเคราะห์ปัญหาทั้งหมด กำหนดหน้าที่ของระบบที่จะมาทำหน้าที่แทนคน รวมทั้งออกแบบการทำงานของระบบทั้งหมด อาจเรียกขั้นตอนนี้ว่าเป็นการสร้างพิมพ์เขียวก่อนที่จะไปก่อร่างสร้างระบบต่อไป

4. พัฒนาระบบงาน  
โดยในขั้นตอนนี้พระเอกหรือนางเอก จริงๆ ก็คือ โปรแกรมเมอร์ ที่ทำหน้าที่ในการพัฒนาหรือสร้างระบบงานตามที่ออกแบบไว้ส่วนนักวิเคระห์ระบบจะทำหน้าที่เป็นผู้กำกับ ผู้ประสานงานกับผู้ใช้งานและคนเขียนโปรแกรม รวมทั้งยังต้องเข้าไปช่วยในการแก้ปัญหาด้วยในบางครั้ง หากบางครั้งงานรีบเร่ง คนไม่พอ ผู้กำกับอาจต้องเข้าไปแสดงฝีมือเอง นั่นคือเข้าไปช่วยเขียนโปรแกรมด้วย

5. ทดสอบระบบงานที่พัฒนาขึ้น  
เพื่อตรวจสอบดูว่าสิ่งได้ออกแบบไว้แล้วกับที่สร้างขึ้นมาถูกต้องสมบูรณ์มากน้อยเพียงใด โดยคนที่เข้าไปทำการทดสอบก็จะประกอบไปด้วย คนเขียนโปรแกรม นักวิเคราะห์ และผู้ใช้งานค่ะ หากไม่เป็นที่พอใจ เราไม่ยินดีคืนเงินนะคะ แต่ต้องกลับไปแก้ไขให้จนกว่าผู้ใช้งานจะพอใจ

6. ฝึกอบรมผู้ใช้งาน และการจัดทำเอกสารคู่มือ  
ในทุกขั้นตอนจะมีการทำเอกสารอยู่แล้ว แต่หลังจากพัฒนาระบบงานเสร็จเรียบร้อยตามที่ตกลงไว้กับผู้ใช้งานและผู้ใช้งานพอใจในระดับหนึ่งแล้ว  นักวิเคราะห์ระบบต้องประสานงานกับนักฝึกอบรมเพื่อ จัดหลักสูตรอบรมให้กับผู้ใช้งาน เพื่อที่จะได้ใช้งานได้อย่างถูกต้อง

7. ดูแลรักษาระบบที่พัฒนาขึ้นให้ใช้งานได้และเป็นปกติดีในทุกๆ วัน 
รวมทั้งรับเรื่องร้องเรียนจากผู้ใช้งานด้วย ในกรณีที่ระบบใช้งานไม่ได้ พร้อมทั้งหาทางแก้ไขต่อไป

ทั้งหมดนี้เป็นเพียงงานหลักๆ ของนักวิเคระห์ระบบที่ต้องทำ ซึ่งเป็นงานที่ต้องใช้เวลาในแต่ละขั้นตอนค่อนข้างมาก และไม่ได้ทำงานเพียงแค่ระบบเดียวแล้วก็เลิกกัน ดังนั้นในเรื่องของการจัดการเวลาจึงเป็นเรื่องที่มีความสำคัญไม่แพ้เช่นกัน

เพิ่มเติมครับ http://catadmin.cattelecom.com/km/blog/jareerat/2008/01/17/sa/

วันพฤหัสบดีที่ 28 มิถุนายน พ.ศ. 2555

ความแตกต่างระหว่าง Logical Data flow Diagram กับ Physical Data flow Diagram


          สืบเนื่องจากที่เพื่อนบางกลุ่ม และกลุ่มเราเองที่ตอนนี้ต้องทำปัญหาพิเศษ ด้านคอมพิวเตอร์ ซึ่งในรายงานนี้ต้องมีการวิเคราะห์ และออกแบบข้อมูล ทำให้ต้องศึกษาหลักการเขียน Data Flow Diagram ไปล่วงหน้าจากบทเรียน ก็เลยนำข้อมูลบางส่วนที่ได้ศึกษามาให้เพื่อน ๆ ได้อ่านกันค่ะ

ความแตกต่างระหว่าง Logical Data flow Diagram กับ Physical Data flow Diagram
           Logical Data flow Diagram เป็นแผนภาพการไหลข้อมูล ที่นักวิเคราะห์เขียนขึ้นมา เพื่อวิเคราะห์ระบบ
งานเดิม หรือระบบงานปัจจุบัน ที่มีการทำงานอยู่ เพื่อเห็นการไหลของข้อมูล และระบบงาน
          Physical Data flow Diagram เป็นแผนภาพการไหลข้อมูล ที่นักวิเคราะห์เขียนขึ้นมา เพื่อวิเคราะห์ระบบใหม่ที่ทำงานผ่านระบบคอมพิวเตอร์ หรือระบบอัตโนมัติ เพื่อการแก้ปัญหา หรือปรับปรุงการทำงานให้มีประสิทธิภาพ
         สามารถสรุปแยกความแตกต่าง ๆ ของ แผนภาพการไหลข้อมูลระหว่าง logical Data flow Diagram กับ Physical Data flow Diagram
Design Feature
Logical DFD
Physical DFD
ให้สัญลักษณ์แทน
ระบบงานเดิมทำงานอย่างไร
ระบบงานใหม่ หรือระบบคอมพิวเตอร์
ทำงานอย่างไร
โพรเซสแสดงอะไร
กิจกรรมหรืองาน ของระบบงานเดิม
โปรแกรม หรือ ส่วนของโปรแกรมหรือการทำงานกับมือ
การจัดเก็บข้อมูล
การบันทึกข้อมูล หรือจัดเก็บตามเอกสาร
ไฟล์ และฐานข้อมูลการทำงานด้วยมือ
ชนิดของที่เก็บข้อมูล
แสดงการเก็บข้อมูลในที่เก็บที่จับต้องได้ เช่นแฟ้มเอกสาร ตู้เอกสาร
แฟ้มข้อมูลหลักแฟ้มข้อมูลประมวลผล
การทำงานระบบ
แสดงกิจกรรมการทำงานของระบบงาน
การตรวจสอบข้อมูลเข้าการทำงานของโปรแกรมคอมพิวเตอร์

เพื่อน ๆ สามารถดูตัวอย่าง และศึกษาข้อมูลเพิ่มเติมได้ที่นี่ค่ะ
http://classroom.hu.ac.th/courseware/SA/CHAPTER9/ch9_4.html 




ดลยา แสงอากาศ

วันอังคารที่ 26 มิถุนายน พ.ศ. 2555

ลองดูกันน๊ะเพื่อนๆรื้อฟื้นกันหน่อย.....

วิธีการและหลักการของการออกแบบฐานข้อมูล
                    สำหรับการออกแบบฐานข้อมูลเชิงสัมพันธ์ ( Relational Database) นี้มีวิธีเริ่มต้นได้มากกว่า 1 วิธี  ซึ่งโดยทั้งไปแล้วนิยมเริ่มต้นด้วยการสร้าง ER Diagram   โดยนำรายละเอียดที่รวบรวมมาได้จากความต้องการของผู้ใช้มาทำการวิเคราะห์  หลังจากนั้นนำข้อมูลที่ได้มาสร้างเป็น ER Diagram และทำการเปลี่ยน ER Diagram ให้เป็นโครงสร้างแบบรีเลชัน (Relational Schemes) ซึ่งมีลักษณะเป็นรูปแบบของตาราง หลังจากนั้นนำรีเลชันต่าง ๆ มาทำการนอร์มัลไลเซชันเพื่อให้ฐานข้อมูลที่ออกแบบมานั้น    มีความซ้ำซ้อนน้อยที่สุด
 
 
Data Analysis
              เป็นการสำรวจระบบงานและนำมาวิเคราะห์ว่า  ในระบบงานนั้นมีข้อมูลอะไรบ้าง มีข้อบังคับเงื่อนไขอะไร  มีใครเกี่ยวข้องบ้างและสารสนเทศที่ได้จากฐานข้อมูลที่ผู้ใช้ต้องการมีอะไรบ้าง
สร้าง ER Diagram
              เมื่อได้ข้อมูลจากขั้นตอน Data Analysis แล้ว  ต่อจากนั้นก็จะนำข้อมูลที่ได้มาเขียนเป็น ER Model  ในการ สร้าง ER  Diagram  มีขั้นตอนต่อไปนี้
               1. กำหนดเอนติตี้

               2. กำหนดแอททริบิวท์ให้แต่ละเอนติตี้

               3. กำหนดความสัมพันธ์ระหว่างเอนติตี้
อ่านรายละเอียดได้ที่....http://demo4.rc.ac.th/chap8_p2/chap8_p2.html

ผังงานระบบ (System Flowchat)

ผังงานระบบ คือ รูปภาพหรือสัญลักษณ์ที่ใช้แทนลำดับ หรือขั้นตอนในโปรแกรมรูปภาพหรือสัญลักษณ์ที่ใช้เป็นเอกลักษณ์ และแทนความหมายอย่างใดอย่างหนึ่ง

โดยทั่วไปผังงานคอมพิวเตอร์แบ่งเป็น 2 ประเภทใหญ่

1. ผังงานระบบ (System Flowchat)
เป็นผังงานที่แสดงถึงขั้นตอนการทำงานภายในระบบหนึ่ง ๆ โดยจะแสดงถึงความเกี่ยวข้องของส่วนที่สำคัญต่างๆ ในระบบนั้น เช่น เอกสารเบื้องต้น หรือสื่อบันทึกข้อมูลที่ใช้อยู่เป็นอะไร และผ่านไปยังหน่วยงานใด มีกิจกรรมอะไรในหน่วยงานนั้น แล้วจะส่งต่อไปหน่วยงานใด เป็นต้น ดังนั้นผังงานระบบอาจเกี่ยวข้องกับคน วัสดุ และเครื่องจักร ซึ่งแต่ละจุดจะประกอบไปด้วย การนำข้อมูลเข้า วิธีการประมวลผลและการแสดงผลลัพธ์ (Input – Process - Output) ว่ามาจากที่ใดอย่างกว้าง ๆ จึงสามารถเขียนโปรแกรมจากผังงานระบบได้

2. ผังงานโปรแกรม (Program Flowchat) หรือเรียกสั้น ๆ ว่า ผังงาน
ผังงานประเภทนี้แสดงถึงขั้นตอนของคำสั่งที่ใช้ในโปรแกรม ผังงานนี้อาจสร้างจากผังงานระบบโดยผู้เขียนผังงานจะดึงเอาแต่ละจุดที่เกี่ยว ข้องการทำงานของเครื่องคอมพิวเตอร์ที่ปรากฏในผังงานระบบมาเขียน เพื่อให้ทราบว่าถ้าจะใช้คอมพิวเตอร์ทำงานในจุดนั้นเพื่อให้ได้ผลลัพธ์ที่ตาม ต้องการ ควรที่จะมีขั้นตอนคำสั่งอย่างไร และจะได้นำมาเขียนโปรแกรมคอมพิวเตอร์ทำงานต่อไป

การใช้งานผังงานระบบ

เพื่อให้ทราบถึงความเกี่ยวพันของระบบตั้งแต่เริ่มต้น ว่ามีการปฏิบัติแต่ละขั้นตอนอย่างไร ใช้วิธีการอะไรบ้าง เหมาะสำหรับผู้บริหาร ผู้วิเคราะห์ระบบ และผู้เขียนโปรแกรม จะได้ทราบถึง ความสัมพันธ์ของแผนกต่างๆ

ตัวอย่าง ผังงานระบบและผังงานโปรแกรมของการคำนวณพื้นที่สามเหลี่ยม 100 รูป


ศึกษารายละเอียดเพิ่มเติมได้ที่ >> http://itd.htc.ac.th/st_it50/it5012/P_3/System%20Analysis%20and%20Design/B6.htm

ศิริพร ประวิสารัตน์ 52040811