ฉันชอบคำตอบของ William Pietri มาก (+1) แต่ฉันเชื่อว่าต้องเพิ่ม แม้แต่สันนิษฐานว่าสิ่งที่คุณหมายถึงโดยระบบประกอบด้วยซอฟต์แวร์เพียงอย่างเดียว
แต่ก่อนที่ฉันจะเข้าไปในเนื้อของมันฉันไม่รู้หนังสือเพื่อช่วย ทุกสิ่งที่ตามมาฉันเรียนรู้จากประสบการณ์ (หมายถึงสามประเด็นที่วิลเลียมทำ)
สิ่งที่คุณกำลังพูดถึงมีช่วงอย่างน้อยสี่บทบาทในวงกว้าง บางครั้งคนคนหนึ่งอาจเติมเต็มทุกบทบาทเหล่านั้นสำหรับโครงการขนาดเล็กถึงขนาดกลาง แต่เมื่อคุณเริ่มต้นในโครงการขนาดใหญ่คุณต้องแยกบทบาทเหล่านั้นออกเป็นอย่างน้อย มันยากสำหรับทุกคนที่จะเป็นผู้เชี่ยวชาญในทุกวิถีทางที่มีความหมาย
นักวิเคราะห์ธุรกิจ
นั่นคือคนที่พูดคุยกับลูกค้าและแปลความต้องการของพวกเขาเป็นสิ่งที่สถาปนิกสามารถเข้าใจได้ รายการความต้องการที่จัดทำขึ้นโดยทั่วไป ซึ่งรวมถึงข้อกำหนดการทำงานที่ชัดเจน (ระบบนี้จะต้องมีอะไรบ้าง) แต่ยังมีข้อกำหนดด้านการใช้งานที่ไม่เหมือนกัน (คุณสมบัติทั่วไปที่ระบบต้องปฏิบัติตามคืออะไร) ซึ่งอาจรวมถึงความปลอดภัยความน่าเชื่อถือความพร้อมใช้งานความยืดหยุ่นประสิทธิภาพความแข็งแกร่ง ข้อกำหนดอื่น ๆ ดังกล่าวจากมุมมองของผู้ใช้)
นี่เป็นครั้งแรกที่สิ่งที่ระบบต้องทำคือการเริ่มต้นของการคิดอย่างจริงจัง
สถาปนิกระบบ
บุคคลนี้สร้างกรอบทางเทคนิคระดับสูงในการทำงาน พวกเขาให้แผนจับคู่เค้าร่าง เครื่องมือทั่วไปเทคนิคการสร้าง พวกเขาแบ่งระบบทั้งหมดออกเป็นส่วนประกอบที่เล็กลงวิธีที่พวกเขาเข้ากันได้อย่างลงตัวกับโลกภายนอก ...
สิ่งนี้ช่วยได้หลายวิธีในการปรับแต่งสิ่งที่ต้องคำนึงถึง บ่อยครั้งที่ปัญหาจะถูกค้นพบในขั้นตอนนั้นเกี่ยวกับข้อกำหนดที่เขียนโดยนักวิเคราะห์ธุรกิจ กลับไปที่พวกเขาเพื่อทำซ้ำเพื่อปรับปรุงความเข้าใจในสิ่งที่พวกเขาต้องการและการแสดงออกของพวกเขา
ผู้ออกแบบระบบ
บทบาทนี้เกี่ยวกับวิธีทำให้มันใช้งานได้ทั้งหมด นี่อาจเป็นการทำงานเป็นทีมมากกว่าการแสดงเดี่ยว แต่มีแนวโน้มว่าผู้ออกแบบหลักจะคอยดูแลการออกแบบระบบทั้งหมด บุคคลนี้ต้องขุดลงไปในรายละเอียดและทำให้แน่ใจว่ามุมมองของสถาปนิกเป็นสิ่งที่สามารถสร้างขึ้นได้จริง
คาดว่าจะมีการปรับปรุงสถาปัตยกรรมของระบบต่อไปและอาจเป็นการวิเคราะห์ธุรกิจ
ผู้จัดการการทดสอบ
บทบาทนี้มักถูกลืมไปมาก แต่ในตอนท้ายของวันถ้าคุณไม่สามารถทดสอบได้คุณจะพิสูจน์ได้อย่างไรว่าคุณสามารถสร้างมันได้ จะต้องมีการตรวจสอบผลลัพธ์ของทุกขั้นตอน: การวิเคราะห์ธุรกิจ, สถาปัตยกรรมและการออกแบบโดยคนที่มีความสามารถในการทดสอบที่จะสามารถเน้นข้อบกพร่องและเปิดใช้งานการแก้ไขก่อนวิธีก่อนที่จะเขียนรหัสใด ๆ
นั่นเป็นบทสรุปสั้น ๆ
คน / gals เหล่านั้นเป็นเพียงการดำเนินการทั่วไปของคนในโรงสีเพื่อคิดเกี่ยวกับสิ่งที่ต้องคิด
สำหรับโครงการที่ซับซ้อนเช่นแอพพลิเคชั่นธนาคารขนาดใหญ่หรือการใช้พื้นที่เพื่อเพียงสองตัวอย่าง (คิดว่าหลายร้อยถึงหลายพันคนต่อวัน) มีผู้เชี่ยวชาญหลายเรื่องที่เราเรียกพวกเขาให้ตรวจสอบและสนับสนุนโครงการในทุกขั้นตอน บทบาทเหล่านี้รวมถึงการวิเคราะห์ความปลอดภัยการปรับขนาดระบบความจุประสิทธิภาพฐานข้อมูลการจัดกลุ่มและอื่น ๆ อีกมากมายที่มีความเชี่ยวชาญเช่นพื้นที่ธุรกิจที่แม่นยำ บทบาทที่หลากหลายขึ้นอยู่กับขนาดและความซับซ้อนของระบบ
ทั้งหมดที่จะบอกว่าคุณไม่ควรลองและรู้ทุกอย่างคุณจะไม่ทำ อย่างไรก็ตามคุณสามารถเข้าใจภาพรวมและในโครงการขนาดเล็กที่คุณสามารถเจาะลึกได้มากกว่าในโครงการขนาดใหญ่เพียงเพราะระดับความซับซ้อนช่วยให้คุณสามารถปัดเศษได้มากขึ้น
หากคุณต้องการทราบวิธีการออกแบบระบบคุณต้องเริ่มถามคำถามโดยคิดนอกกรอบ ใส่ตัวเองให้เพียงพอในรองเท้าของลูกค้าและลองคิดว่าอะไรผิดพลาดอะไรต้องทดสอบ จากนั้นได้พบปะกับลูกค้าตัวจริงและผลักดันพวกเขาให้อธิบายขอบเขตและขีด จำกัด ของระบบที่พวกเขาต้องการ นอกจากนี้เมื่อใดก็ตามที่ฉันพูดว่า 'ลูกค้า' คุณต้องเข้าใจว่าสิ่งนี้ครอบคลุมหลาย ๆ คน มีคนที่ใช้ระบบวันในวันที่ออกสำหรับสิ่งที่มันถูกออกแบบมาเพื่อทำ มีผู้ดำเนินการ, การสนับสนุนด้านเทคนิค, ผู้จัดการที่ต้องการรายงานหรืออื่น ๆ , ผู้สอบบัญชี, ทีมโครงสร้างพื้นฐาน, ผู้มีส่วนได้เสียที่จ่ายให้มัน, ผู้จัดการคุณภาพที่ต้องการเครื่องมือทดสอบระบบของคุณ ... ถามพวกเขาทั้งหมด (และหาก พวกเขาเป็นหนึ่งคน ขอให้พวกเขาใส่หมวกเหล่านี้ทีละตัว) ดังนั้นขอให้พวกเขาทุกอย่างที่พวกเขาต้องการและคุณจะได้เริ่มต้นที่ดีในการรู้ว่าความต้องการของระบบของคุณคืออะไร จากที่นั่นคุณสามารถสืบทอดสถาปัตยกรรมและจากนั้นการออกแบบ
สำหรับระบบที่ซับซ้อน (ไม่ว่าจะเป็นซอฟต์แวร์เท่านั้นหรือรวมเข้ากับฮาร์ดแวร์ในแง่สามัญที่สุด) ไม่เพียงแค่คนเดียวไม่เพียงพอสำหรับแต่ละบทบาททั้งสี่ที่ฉันได้กล่าวไว้ข้างต้น แต่คุณต้องจัดการโครงการแม้คำจำกัดความของระบบ ทำนับประสาขั้นตอนอื่นเพียงอย่างเดียว
HPH, asm