จะเห็นว่าขอบเขตเป็นสิ่งสำคัญ ผลจากการทำงานได้เหมือนกันแต่กระบวนการทำงานต่างกัน ทำให้ค่าใช้จ่าย (Cost) ที่เกิดขึ้นต่างกันได้ จากประสบการณ์ ในกรณีที่เราพัฒนาโปรแกรมตามความต้องการของเรา แน่นอนว่าเรารู้ความต้องการ และขอบเขตของโปรแกรม แต่เมื่อเราพัฒนาโปรแกรมตวามความต้องการของผู้อื่น การระบุขอบเขตที่แน่นอนจำเป็นอย่างมาก เนื่องจากต้องใช้ในการออกแบบเลือกส่วนประกอบต่างๆในการพัฒนา
ข้อจำกัดนั้นเป็นส่วนที่เราจะสามารถระบุได้ว่าควรเลือกสิ่งใด เช่น การเลือกเลือกใช้ภาษาในการพัฒนา เมื่อเราต้องพัฒนา web application เราอาจจะมีตัวเลือกมากมาย เช่น perl, php, asp, c#.net, vb.net, python, jsp, ฯลฯ แต่ถ้าระบุว่าต้องทำงานบน *nix platform เราต้องรู้ว่าภาษาใดสามารถทำงานได้บน *nix platform ได้บ้างในที่นี้ตัวเลือกเราก็จะตัด asp, c#.net, vb.net ออกไปได้ ส่วนที่เหลือเราก็เลือกเอาตามความถนัด เนื่องจากภาษาต่างๆความสามารถเกือบจะเท่ากัน ต่างกันตรงที่ความยากง่ายในการพัฒนาเท่านั้น
ในทางการพัฒนาโปรแกรมนั้น ผมสามารถแยกการออกแบบได้เป็น 2 ส่วนคือ
- Control flow การออกแบบเกี่ยวกับการควบคุมโปรแกรมในส่วนต่างๆ
- Data flow การออกแบบเกี่ยวกับการจัดการข้อมูล
การออกแบบ control flow ในที่นี้คือการออกแบบโครงสร้างการทำงานของโปรแกรม การตัดสินใจต่างๆ เช่น เมื่อ user เข้าใช้งานจำเป็นต้องมีการ authorize หรือไม,่ ถ้ามีจะมีกี่ level, permission ต่างๆเป็นอย่างไร, ฯลฯ โดยอาจจะเริ่มจากการเขียน policy ของโปรแกรมที่ต้องการ จากนั้นก็ลงรายละเอียดเป็น flow chart ในส่วนต่างๆ
บ่อยครั้งที่ผมไม่มีการเขียน policy และ flow chart เนื่องจากเหตุผลต่างๆ เมื่อเริ่มการ coding แล้วนั้นโปรแกรมส่วนใหญ่ไม่สามารถเขียนเสร็จได้ภายในวันเดียว ดังนั้น policy และ flow chart จะทำให้ในครั้งต่อๆไป เราสามารถทราบได้ว่าเป้าหมายเป็นจุดใด และต้องเขียนต่อที่ตรงไหน การที่มี policy และ flow chart นั้นจะช่วยได้มากหากมีการพัฒนาเป็นทีม
การออกแบบ data flow เป็นการออกแบบเกี่ยวกับการจัดการข้อมูล ไม่ว่าจะเป็นการเก็บข้อมูล, การรวบรวมข้อมูล ฯลฯ โดยการออกแบบ data flow ที่ดีนั้นต้องให้มีการไหลของข้อมูลได้ดีและปลอดภัยที่สุด ความปลอดภัยของข้อมูลเป็นสิ่งที่ต้องคำนึงถึง แม้ข้อมูลบางอย่างเช่น ข้อมูลการรักษาสิวของนาย ก. อาจจะไม่มีค่าแต่ก็จำเป็นต้องรักษาไว้ให้ดีที่สุด เนื่องจากเป็นข้อมูลส่วนบุคคล