वस्तु-उन्मुख विश्लेषण और प्रारुप

वस्तु-उन्मुख विश्लेषण और प्रारुप (ओओएडी) वस्तु अभिमुखित प्रोग्रामन को उपयोजित करके किसी अनुप्रयोग, प्रणाली या व्यवसाय का विश्लेषण और प्रारुप करने के लिए एक तकनीकी दृष्टिकोण है, साथ ही हितधारक संचार और उत्पाद की गुणवत्ता का मार्गदर्शन करने के लिए सॉफ्टवेयर विकास प्रक्रिया के समय दृश्य मॉडलिंग का उपयोग करता है।

आधुनिक सॉफ्टवेयर अभियांत्रिकी में OOAD विशिष्ट रूप से पुनरावृत्तीय और वृद्धिशील प्रकार से संचालित किया जाता है। OOAD गतिविधियों के आउटपुट क्रमशः विश्लेषण निदर्श (OOA के लिए) और प्रारुप निदर्श (OOD के लिए) हैं। उद्देश यह है कि जोखिम और व्यावसायिक मूल्य जैसे प्रमुख कारकों द्वारा संचालित इन्हें लगातार परिष्कृत और विकसित किया जाता है।

इतिहास
1990 के दशक के मध्य से पहले वस्तु-उन्मुख तकनीक के पूर्व दिनों में, सॉफ़्टवेयर विकास और वस्तु-उन्मुख मॉडलिंग के लिए कई अलग-अलग प्रतिस्पर्धी पद्धतियाँ थीं, जो प्रायः विशिष्ट कंप्यूटर एडेड सॉफ्टवेयर अभियांत्रिकी (CASE) टूल विक्रेताओं से जुड़ी होती थीं। उस समय कोई मानक संकेत पद्धति, सुसंगत नियम और प्रक्रिया मार्गदर्शिकाएँ प्रमुख चिंताएँ नहीं थीं, जिससे संचार दक्षता में गिरावट आई और सीखने की अवधि लंबी हो गई थीं।

कुछ सुप्रसिद्ध आरंभिक वस्तु-उन्मुख पद्धतियाँ ग्रेडी बूच, जेम्स रंबॉघ, इवर जैकबसन (तीन एमिगोस), रॉबर्ट सेसिल मार्टिन, पीटर कॉड, सैली श्लैयर, स्टीफ़न जे. मेलोर और रेबेका विर्फ्स-ब्रॉक जैसे गुरुओं से और उनसे प्रेरित थीं।

1994 में, तर्कसंगत सॉफ्टवेयर के तीन अमीगो ने एकीकृत मॉडलिंग भाषा (यूएमएल) विकसित करने के लिए एक साथ काम करना प्रारंभ किया था। बाद में, फिलिप क्रुचटेन और वॉकर रॉयस (विंस्टन रॉयस के सबसे बड़े बेटे) के साथ मिलकर, उन्होंने अपनी स्वयं की कार्यप्रणाली, ओएमटी, ओओएसई और बूच पद्धति को संयोजित करने के एक सफल मिशन का नेतृत्व किया है, तर्कसंगत एकीकृत प्रक्रिया (आरयूपी) में अन्य उद्योग जगत के नेताओं की विभिन्न अंतर्दृष्टि और अनुभवों के साथ, सॉफ्टवेयर विकास और परियोजना प्रबंधन की उद्योग की सर्वोत्तम प्रथाओं को सीखने के लिए एक व्यापक पुनरावृत्तीय और वृद्धिशील प्रक्रिया मार्गदर्शिका और रूपरेखा का नेतृत्व किया है। तब से, एकीकृत प्रक्रिया परिवार वस्तु-उन्मुख विश्लेषण और प्रारुप के लिए संभवतः सबसे लोकप्रिय पद्धति और संदर्भ निदर्श बन गया है।

अवलोकन
सॉफ़्टवेयर जीवन चक्र को विशिष्ट रूप से समस्या के अमूर्त विवरण से लेकर प्रारुप, फिर कोड और परीक्षण और अंत में प्रस्तरण तक के चरणों में विभाजित किया जाता है। इस प्रक्रिया के पूर्वतर चरण विश्लेषण और प्रारुप हैं। विश्लेषण चरण को प्रायः "आवश्यकताओं का अधिग्रहण" भी कहा जाता है। सॉफ़्टवेयर विकास के कुछ दृष्टिकोणों में - जिन्हें सामूहिक रूप से वॉटरफ़ॉल निदर्श के रूप में जाना जाता है - प्रत्येक चरण के मध्य की सीमाएँ पूरी तरह से कठोर और अनुक्रमिक होती हैं।  वॉटरफॉल  शब्द ऐसी पद्धतियों के लिए गढ़ा गया था, जो यह दर्शाता था कि प्रगति क्रमिक रूप से केवल एक ही दिशा में होती है, अर्थात, एक बार विश्लेषण पूरा हो गया था और उसके बाद ही प्रारुप प्रारम्भ किया गया था और यह दुर्लभ था (और त्रुटि का स्रोत माना जाता था) जब किसी प्रारुप समस्या के लिए विश्लेषण निदर्श में बदलाव की आवश्यकता होती थी या जब कोडिंग समस्या के लिए प्रारुप में बदलाव की आवश्यकता होती है।

वॉटरफॉल निदर्श का विकल्प पुनरावृत्त निदर्श हैं। इस भेद को बैरी बोहम ने पुनरावृत्तीय सॉफ्टवेयर विकास के लिए अपने स्पाइरल निदर्श पर एक बहुत प्रभावशाली दस्तावेज़ में लोकप्रिय बनाया था। पुनरावृत्त निदर्श के साथ निदर्श के विभिन्न चरणों में समानांतर रूप से कार्य करना संभव है। उदाहरण के लिए, यह संभव है - और इसे त्रुटि के स्रोत के रूप में नहीं देखा जाता है - एक ही दिन में विश्लेषण, प्रारुप और यहां तक ​​कि कोड पर काम करना और एक चरण से मुद्दों को दूसरे चरण से प्रभावित करना है। पुनरावृत्त निदर्श पर जोर यह है कि सॉफ्टवेयर विकास एक ज्ञान-गहन प्रक्रिया है और विश्लेषण जैसी चीजों को प्रारुप के मुद्दों को समझे बिना वास्तव में पूरी तरह से नहीं समझा जा सकता है, कोडिंग संबंधी समस्याएं प्रारुप को प्रभावित कर सकती हैं, परीक्षण से यह जानकारी मिल सकती है कि कोड या यहां तक कि प्रारुप को कैसे संशोधित किया जाना चाहिए, आदि।

यद्यपि वॉटरफॉल निदर्श का उपयोग करके वस्तु-उन्मुख विकास करना संभव है, व्यवहार में अधिकांश वस्तु-उन्मुख प्रणाली पुनरावृत्त दृष्टिकोण के साथ विकसित किए जाते हैं। परिणामस्वरूप, वस्तु-उन्मुख प्रक्रियाओं में  विश्लेषण और प्रारुप  पर प्रायः एक ही समय में विचार किया जाता है।

वस्तु-उन्मुख प्रतिमान मॉड्यूलरिटी और पुन: प्रयोज्यता पर महत्त्व देता है। वस्तु-उन्मुख दृष्टिकोण का लक्ष्य  खुले बंद सिद्धांत  को संतुष्ट करना है। एक मॉड्यूल खुला है यदि यह विस्तार का समर्थन करता है, या यदि मॉड्यूल नए व्यवहार जोड़ने या नए राज्यों का वर्णन करने के लिए मानकीकृत प्रकार प्रदान करता है। वस्तु-उन्मुख प्रतिमान में यह प्रायः स्थित वर्ग का एक नया उपवर्ग बनाकर पूरा किया जाता है। एक मॉड्यूल को बंद कर दिया जाता है यदि इसमें एक अच्छी तरह से परिभाषित स्थिर अंतरापृष्ठ है जिसका उपयोग अन्य सभी मॉड्यूल को करना चाहिए और यह परस्पर क्रिया और संभावित त्रुटियों को सीमित करता है जिन्हें एक मॉड्यूल में दूसरे में परिवर्तन द्वारा प्रस्तावित किया जा सकता है। वस्तु-उन्मुख प्रतिमान में यह वस्तुओं पर सेवाओं को उपयोजित करने वाली विधियों को परिभाषित करके पूरा किया जाता है। विधियाँ या तो सार्वजनिक या निजी हो सकती हैं, अर्थात, कुछ व्यवहार जो वस्तु के लिए अद्वितीय हैं, अन्य वस्तुओं के संपर्क में नहीं आते हैं। यह कंप्यूटर प्रोग्रामिंग में कई सामान्य त्रुटियों के स्रोत को कम करता है।

सॉफ़्टवेयर जीवन चक्र को विशिष्ट रूप से समस्या के अमूर्त विवरण से लेकर प्रारुप, फिर कोड और परीक्षण और अंत में प्रस्तरण तक के चरणों में विभाजित किया जाता है। इस प्रक्रिया के पूर्वतर चरण विश्लेषण और प्रारुप हैं। विश्लेषण और प्रारुप के मध्य अंतर को प्रायः  क्या बनाम कैसे  के रूप में वर्णित किया जाता है। विश्लेषण में विकासक यह परिभाषित करने के लिए उपयोगकर्ताओं और डोमेन विशेषज्ञों के साथ काम करते हैं कि प्रणाली को क्या करना चाहिए। इस चरण में माना जाता है कि कार्यान्वयन विवरण को अधिकतर या पूरी तरह से (विशेष विधि के आधार पर) अनदेखा कर दिया जाता है। विश्लेषण चरण का लक्ष्य उपयुक्त प्रौद्योगिकी जैसी बाधाओं की परवाह किए बिना प्रणाली का एक कार्यात्मक निदर्श बनाना है। वस्तु-उन्मुख विश्लेषण में यह विशिष्ट रूप से उपयोग के प्रकरणों और सबसे महत्वपूर्ण वस्तुओं की अमूर्त परिभाषाओं के माध्यम से किया जाता है। बाद का प्रारुप चरण विश्लेषण निदर्श को परिष्कृत करता है और आवश्यक प्रौद्योगिकी और अन्य कार्यान्वयन विकल्प बनाता है। वस्तु-उन्मुख प्रारुप में विभिन्न वस्तुओं, डेटा, व्यवहार और पारस्परिक क्रिया का वर्णन करने पर महत्व दिया जाता है। प्रारुप निदर्श में सभी आवश्यक विवरण होने चाहिए ताकि क्रमादेशक प्रारुप को कोड में उपयोजित कर सकें।

वस्तु-उन्मुख विश्लेषण
सॉफ़्टवेयर जीवन-चक्र में किसी भी विश्लेषण गतिविधि का उद्देश्य प्रणाली की कार्यात्मक आवश्यकताओं का एक निदर्श बनाना है जो कार्यान्वयन बाधाओं से स्वतंत्र है।

वस्तु-उन्मुख विश्लेषण और विश्लेषण के अन्य रूपों के मध्य मुख्य अंतर यह है कि वस्तु-उन्मुख दृष्टिकोण से हम वस्तुओं के चारों ओर आवश्यकताओं को व्यवस्थित करते हैं, जो वास्तविक दुनिया की वस्तुओं के आधार पर व्यवहार (प्रक्रियाओं) और स्थिति (डेटा) दोनों को एकीकृत करते हैं जिनके साथ प्रणाली प्रभावित करता है। अन्य या पारंपरिक विश्लेषण पद्धतियों में, दो पहलुओं: प्रक्रियाओं और डेटा पर अलग से विचार किया जाता है। उदाहरण के लिए, डेटा को ईआर आरेखों द्वारा और व्यवहार को प्रवाह संचित्र या संरचना संचित्र द्वारा निदर्श किया जा सकता है।

OOA में उपयोग किए जाने वाले सामान्य निदर्श उपयोग के प्रकरण और वस्तु निदर्श हैं। उपयोग के प्रकरण मानक डोमेन फलन के लिए परिदृश्यों का वर्णन करते हैं जिन्हें व्यवस्था को पूरा करना होता है। वस्तु निदर्श मुख्य वस्तुओं के नाम, वर्ग संबंध (उदाहरण के लिए वृत्त आकार का एक उपवर्ग है), संचालन और गुणों का वर्णन करते हैं। समझने में सहायता के लिए उपयोगकर्ता-अंतरापृष्ठ मॉकअप या आदिप्ररूप भी बनाए जा सकते हैं।

वस्तु-उन्मुख प्रारुप
वस्तु-उन्मुख प्रारुप (ओओडी) के समय, एक विकासक वस्तु-उन्मुख विश्लेषण में उत्पादित वैचारिक निदर्श पर कार्यान्वयन बाधाओं को उपयोजित करता है। ऐसी बाधाओं में हार्डवेयर और सॉफ़्टवेयर प्लेटफ़ॉर्म, प्रदर्शन आवश्यकताएं, लगातार भंडारण और लेनदेन, प्रणाली की उपयोगिता और बजट और समय द्वारा लगाई गई सीमाएं सम्मिलित हो सकती हैं। विश्लेषण निदर्श में अवधारणाएं, जो प्रौद्योगिकी से स्वतंत्र हैं, कार्यान्वयन वर्गों और अंतरापृष्ठ पर मानचित्र की जाती हैं, जिसके परिणामस्वरूप समाधान डोमेन का एक निदर्श बनता है, अर्थात, इसका विस्तृत विवरण की ठोस प्रौद्योगिकियों पर व्यवस्था कैसे बनाई जाती है।

OOD के समय महत्वपूर्ण विषयों में वस्तु-उन्मुख प्रारुप सिद्धांतों के साथ वास्तुशिल्प पैटर्न और प्रारुप पैटर्न्स उपयोजित करके सॉफ़्टवेयर वास्तुशिल्प का प्रारुप भी सम्मिलित है।

वस्तु-उन्मुख मॉडलिंग
वस्तु-उन्मुख मॉडलिंग (ओओएम) संपूर्ण विकास जीवन चक्रों में वस्तु-उन्मुख प्रतिमान का उपयोग करके मॉडलिंग अनुप्रयोगों, व्यवस्था और व्यावसायिक डोमेन के लिए एक सामान्य दृष्टिकोण है। OOM एक मुख्य तकनीक है जिसका उपयोग आधुनिक सॉफ्टवेयर अभियांत्रिकी में OOD और OOA दोनों गतिविधियों द्वारा बड़े पैमाने पर किया जाता है।

वस्तु-उन्मुख मॉडलिंग विशिष्ट रूप से काम के दो पहलुओं में विभाजित होती है: व्यावसायिक प्रक्रियाओं और उपयोग के प्रकरणों जैसे गतिशील व्यवहारों का मॉडलिंग, और वर्गों और घटकों जैसी स्थिर संरचनाओं की मॉडलिंग होती है। OOM के समय OOA और OOD दो अलग-अलग अमूर्त स्तर (यानी विश्लेषण स्तर और प्रारुप स्तर) हैं। एकीकृत मॉडलिंग भाषा (यूएमएल) और SysML दो लोकप्रिय अंतरराष्ट्रीय मानक भाषाएं हैं जिनका उपयोग वस्तु-उन्मुख मॉडलिंग के लिए किया जाता है।

OOM के लाभ हैं:

सक्षम एवं प्रभावी संचार
उपयोगकर्ताओं को विशिष्ट रूप से व्यापक दस्तावेज़ों और प्रोग्रामिंग भाषा कोड को अच्छी तरह से समझने में कठिनाई होती है। दृश्य निदर्श आरेख अधिक समझने योग्य हो सकते हैं और उपयोगकर्ताओं और हितधारकों को प्रणाली की उचित आवश्यकताओं और संरचना पर विकासक को प्रतिक्रिया देने की अनुमति दे सकते हैं। वस्तु-उन्मुख दृष्टिकोण का एक मुख्य लक्ष्य व्यवस्था और वास्तविक दुनिया के मध्य  अर्थ संबंधी अंतराल  को कम करना है, और प्रणाली का निर्माण शब्दावली का उपयोग करके करना है जो लगभग उसी तरह है जैसे हितधारक प्रतिदिन के व्यवसाय में उपयोग करते हैं। इसे सुविधाजनक बनाने के लिए वस्तु-उन्मुख मॉडलिंग एक आवश्यक उपकरण है।

उपयोगी एवं स्थिर अमूर्तन
मॉडलिंग कोडिंग में सहायता करती है। अधिकांश आधुनिक सॉफ़्टवेयर पद्धतियों का लक्ष्य पहले "क्या" प्रश्नों को संबोधित करना है और फिर "कैसे" प्रश्नों को संबोधित करना है, अर्थात पहले कार्यान्वयन की बाधाओं पर विचार किए बिना प्रणाली द्वारा प्रदान की जाने वाली कार्यक्षमता का निर्धारण करना, और फिर विचार करें कि इन अमूर्त आवश्यकताओं के लिए विशिष्ट समाधान कैसे बनाएं, और उन्हें प्रौद्योगिकी और बजट जैसी बाधाओं के आधार पर विस्तृत प्रारुप और कोड में परिष्कृत करें। वस्तु-उन्मुख मॉडलिंग प्रणाली आवश्यकताओं और प्रारुप दोनों के अमूर्त और सुलभ विवरण तैयार करके इसे सक्षम बनाता है, अर्थात निदर्श जो प्रक्रियाओं और वस्तुओं जैसी उनकी आवश्यक संरचनाओं और व्यवहारों को परिभाषित करते हैं, जो ठोस और जटिल स्रोत कोड के ऊपर उच्च अमूर्त स्तर के साथ महत्वपूर्ण और मूल्यवान विकास संपत्तियां हैं।

यह भी देखें

 * एटलस परिवर्तन भाषा (एटीएल)
 * वर्ग-जिम्मेदारी-सहयोग कार्ड (सीआरसी कार्ड)
 * डोमेन विशिष्ट भाषा (डीएसएल)
 * डोमेन-संचालित प्रारुप
 * डोमेन-विशिष्ट मॉडलिंग (डीएसएम)
 * मेटा-वस्तु सुविधा (एमओएफ)
 * मेटामॉडलिंग
 * मॉडल-संचालित अभियांत्रिकी (एमडीई)
 * मॉडल-आधारित परीक्षण (एमबीटी)
 * ऑब्जेक्ट मॉडलिंग भाषा
 * वस्तु-उन्मुख मॉडलिंग
 * वस्तु उन्मुख क्रमादेशन
 * ऑब्जेक्ट-उन्मुख उपयोगकर्ता अंतरापृष्ठ
 * QVT
 * श्लेर-मेलोर
 * सॉफ्टवेयर विश्लेषण पैटर्न
 * कहानी-संचालित मॉडलिंग
 * एकीकृत मॉडलिंग भाषा (यूएमएल)
 * एक्सएमएल मेटाडेटा विनिमय (XMI)

अग्रिम पठन

 * Grady Booch. "Object-oriented Analysis and Design with Applications, 3rd edition":http://www.informit.com/store/product.aspx?isbn=020189551X Addison-Wesley 2007.
 * Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener. Designing Object Oriented Software. Prentice Hall, 1990. [A down-to-earth introduction to the object-oriented programming and design.]
 * A Theory of Object-Oriented Design: The building-blocks of OOD and notations for representing them (with focus on design patterns.)
 * Martin Fowler. Analysis Patterns: Reusable Object Models. Addison-Wesley, 1997. [An introduction to object-oriented analysis with conceptual models]
 * Bertrand Meyer. Object-oriented software construction. Prentice Hall, 1997
 * Craig Larman. Applying UML and Patterns – Introduction to OOA/D & Iterative Development. Prentice Hall PTR, 3rd ed. 2005.,mnnm,n,nnn
 * Setrag Khoshafian. Object Orientation.
 * Ulrich Norbisrath, Albert Zündorf, Ruben Jubeh. Story Driven Modeling. Amazon Createspace. p. 333., 2013. ISBN 9781483949253.

बाहरी संबंध

 * Article Object-Oriented Analysis and Design with UML and RUP an overview (also about CRC cards).
 * Applying UML – Object Oriented Analysis & Design tutorial
 * OOAD & UML Resource website and Forums – Object Oriented Analysis & Design with UML.
 * Software Requirement Analysis using UML article by Dhiraj Shetty.
 * Article Object-Oriented Analysis in the Real World