Site icon Gyanodhan

Unit 8: Software Engineering

👨‍💻 Software Engineering का परिचय (Introduction to Software Engineering)

Software Engineering एक ऐसी शाखा है जो संगठित, योजनाबद्ध और अनुशासित तरीके से सॉफ्टवेयर का निर्माण, रखरखाव और मैनेजमेंट करने से संबंधित है।


🧩 1. सॉफ्टवेयर की विशेषताएँ (Characteristics of Software)


🌟 2. Software Engineering का उदय (Emergence of Software Engineering)

🔁 क्यों ज़रूरी हुआ Software Engineering?

इसलिए एक नियमित, व्यवस्थित और प्रोफेशनल तरीका जरूरी हुआ — और यहीं से Software Engineering का विकास हुआ।


📊 3. Software Metrics & Models

📏 Software Metrics (मापदंड)

Software की गुणवत्ता, प्रगति और प्रदर्शन को मापने के लिए जो मानक अपनाए जाते हैं, उन्हें Software Metrics कहते हैं।

उदाहरण:

🧮 Software Models (मॉडल)

Software का विकास कैसे किया जाए — उसके लिए बनाए गए नियम या ढांचे।
जैसे: Waterfall, Spiral, Agile, V-Model आदि।


⚖️ 4. Process & Product Metrics

🔄 Process Metrics

Software Development Process को मापते हैं।

उदाहरण:

📦 Product Metrics

Software प्रोडक्ट की गुणवत्ता और performance को मापते हैं।

उदाहरण:


🧬 5. Software Life Cycle Models (SDLC Models)

1. Waterfall Model (वॉटरफॉल मॉडल)

📌 स्टेप-बाय-स्टेप मॉडल, एक स्टेज पूरी हो जाने के बाद ही अगली शुरू होती है।

चरण
1. Requirement Gathering
2. System Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance

✅ लाभ: सरल और समझने में आसान
❌ नुकसान: बदलाव करना मुश्किल, फ्लेक्सिबल नहीं


2. Prototype Model (प्रोटोटाइप मॉडल)

📌 पहले एक प्रोटोटाइप (डेमो वर्जन) बनाया जाता है, जिसे यूज़र से फीडबैक लेकर बेहतर किया जाता है।

✅ लाभ: यूज़र की जरूरतों को जल्दी समझा जाता है
❌ नुकसान: फाइनल प्रोडक्ट में देरी हो सकती है


3. Spiral Model (स्पाइरल मॉडल)

Spiral Model एक सॉफ्टवेयर डेवलपमेंट मॉडल है जो Waterfall Model और Prototyping Model का मिश्रण है। इसमें विकास प्रक्रिया को चरणों (phases) में विभाजित किया जाता है और हर चरण को बार-बार (स्पाइरल के रूप में) दोहराया जाता है।

📌 यह एक रिस्क आधारित मॉडल है। हर चक्र में 4 चरण होते हैं:

  1. Planning
  2. Risk Analysis
  3. Development
  4. Evaluation

मुख्य विचार (Key Idea):

“हर फेज में रिस्क एनालिसिस (Risk Analysis) जरूरी है और हर बार सिस्टम को थोड़ा-थोड़ा विकसित किया जाता है।”

📚 मुख्य चरण (Phases of Spiral Model):

  1. Planning (योजना बनाना):
    • आवश्यकताओं (Requirements) को इकट्ठा किया जाता है।
    • उद्देश्य (objectives), constraints, और विकल्पों को पहचाना जाता है।
  2. Risk Analysis (जोखिम विश्लेषण):
    • संभावित जोखिमों को पहचाना जाता है।
    • उनके समाधान (solutions) खोजे जाते हैं।
    • प्रोटोटाइप (Prototype) तैयार किया जा सकता है।
  3. Engineering (वास्तविक विकास):
    • कोडिंग, टेस्टिंग और विकास का कार्य होता है।
    • एक संस्करण (version) तैयार किया जाता है।
  4. Evaluation (मूल्यांकन):
    • ग्राहक से फीडबैक लिया जाता है।
    • यदि आवश्यक हो तो परिवर्तन किया जाता है।

➡️ फिर अगला चक्र (next spiral) शुरू होता है, जिसमें और ज्यादा refinement किया जाता है।

✅ लाभ: बड़ा और जटिल प्रोजेक्ट के लिए उपयुक्त
❌ नुकसान: महंगा और कठिन प्रबंधन


📋 6. तीनों मॉडल की तुलना (Comparison)

विशेषताWaterfallPrototypeSpiral
लचीलापन (Flexibility)कमज़्यादाबहुत ज़्यादा
यूज़र फीडबैकनहींहाँहाँ
रिस्क हैंडलिंगनहींकमअच्छा
जटिलता के लिए उपयुक्तनहींसीमितहाँ
लागतकममध्यमज़्यादा
उपयुक्तताछोटे प्रोजेक्टUI-आधारितबड़े/जटिल प्रोजेक्ट्स

📚 निष्कर्ष:

टॉपिकसार
Software Engineeringसॉफ्टवेयर के निर्माण और रखरखाव की वैज्ञानिक प्रक्रिया
MetricsSoftware की प्रगति और गुणवत्ता को मापने के तरीके
ModelsSoftware बनाने के लिए प्रक्रिया का खाका
WaterfallStep-by-step, rigid
PrototypeUser feedback आधारित
SpiralRisk analysis पर केंद्रित

👨‍💼 Software Project Management (सॉफ्टवेयर परियोजना प्रबंधन)

Software Project Management एक ऐसी प्रक्रिया है जिसमें हम सॉफ्टवेयर प्रोजेक्ट को योजना बनाते हैं, अनुमान लगाते हैं, उसका विकास करते हैं और उसका ट्रैक रखते हैं, ताकि प्रोजेक्ट समय, बजट और गुणवत्ता के साथ पूरा हो।


📏 1. Size Estimation (आकार का अनुमान)

Software का “Size” मापना ज़रूरी है ताकि हम समय, लागत, और संसाधनों का पूर्वानुमान लगा सकें।

🔹 (a) LOC – Lines of Code

🔸 उदाहरण:
अगर सॉफ्टवेयर में 5000 लाइन्स हैं → LOC = 5000

🔹 (b) FP – Function Point Metrics

🔸 Function Point की गणना में ये शामिल होते हैं:

  1. Inputs
  2. Outputs
  3. User Inquiries
  4. Files
  5. External Interfaces

💰 2. Cost Estimation (लागत का अनुमान)

🔹 (a) Delphi Technique

✅ लाभ: Collective knowledge
❌ नुकसान: Subjetive (व्यक्तिगत राय पर आधारित)


🔹 (b) COCOMO Model (Constructive Cost Model)

COCOMO एक mathematical model है जो सॉफ्टवेयर प्रोजेक्ट की लागत का अनुमान लगाता है।

🔸 Basic COCOMO Formula:

COCOMO के प्रकार:

  1. Basic
  2. Intermediate
  3. Detailed

🔸 उदाहरण:
एक साधारण (organic) प्रोजेक्ट के लिए:


🧠 3. Halstead’s Software Science

Halstead ने software size, effort और difficulty मापने के लिए निम्नलिखित मेट्रिक्स दिए:

MetricDescription
n1Operators की संख्या
n2Operands की संख्या
N1Operators की कुल occurrence
N2Operands की कुल occurrence

🔸 Derived Metrics:

✅ उपयोग: Productivity, Bugs और Maintenance का अनुमान लगाना


👥 4. Staffing Level Estimation (कर्मचारी अनुमान)

🔹 Putnam’s Model (Software Equation)

यह मॉडल बताता है कि प्रोजेक्ट के लिए कितने लोग, कितने समय तक लगेंगे।

Putnam’s Formula:

✅ इस मॉडल से staffing curves बनती हैं — जिससे पता चलता है कि किस समय कितने लोग चाहिए।


📃 5. Software Requirements Specification (SRS)

🔸 SRS Document क्या होता है?

SRS यानी Software Requirements Specification एक औपचारिक डॉक्यूमेंट है जिसमें सॉफ्टवेयर से जुड़ी सभी आवश्यकताएं (functional और non-functional) लिखी जाती हैं।


📑 SRS की विशेषताएँ (Characteristics)

  1. Correct (सही)
  2. Complete (पूर्ण)
  3. Unambiguous (स्पष्ट)
  4. Consistent (संगत)
  5. Verifiable (जाँच योग्य)
  6. Modifiable (बदलने योग्य)
  7. Traceable (ट्रेस किया जा सके)

📂 SRS का संगठन (Organization of SRS Document)

एक सामान्य SRS डॉक्यूमेंट में ये भाग होते हैं:

  1. Introduction
    • Purpose
    • Scope
    • Definitions
  2. Overall Description
    • Product Perspective
    • Product Features
    • User Characteristics
  3. Specific Requirements
    • Functional Requirements
    • Non-functional Requirements
    • Performance, Security, etc.
  4. Appendix & Glossary

📚 संक्षेप में सारांश:

टॉपिकसार
LOCकोड की लाइनों से सॉफ्टवेयर का साइज मापना
FPफंक्शन के आधार पर साइज मापना
DelphiExpert से अनुमान लेना
COCOMOगणितीय तरीका से लागत निकालना
Halstead Metricsऑपरेटर-ऑपरेन्ड के आधार पर effort निकालना
Putnam ModelTime और Staffing का अनुमान
SRSयूज़र की जरूरतों को डॉक्यूमेंट करना

🛠️ Software Design (सॉफ्टवेयर डिज़ाइन)

Software Design वह प्रक्रिया है जिसमें हम सॉफ्टवेयर की रचना, उसकी संरचना और इंटरफेस को तय करते हैं, ताकि प्रोग्रामिंग चरण में उसे आसानी से बनाया जा सके।


📂 1. Classification of Software Design (सॉफ्टवेयर डिज़ाइन के प्रकार)

सॉफ्टवेयर डिज़ाइन को मुख्य रूप से दो भागों में बांटा जाता है:


🧭 2. Software Design Approaches (डिज़ाइन के तरीके)

मुख्य दो तरीके होते हैं:

(a) Function-Oriented Design (कार्य-केंद्रित डिज़ाइन)

(b) Object-Oriented Design (ऑब्जेक्ट-ओरिएंटेड डिज़ाइन)


🛠️ 3. Function Oriented Software Design


📈 4. Structured Analysis and Design

(a) Data Flow Diagrams (DFD)

(b) Structured Design


📦 5. Introduction to Object-Oriented Design (OOD)


📚 संक्षेप में सारांश:

टॉपिकविवरण
Software Designसॉफ्टवेयर की योजना बनाना और संरचना तय करना
Function-Oriented Designकार्यों पर आधारित डिज़ाइन
Data Flow Diagram (DFD)डेटा के प्रवाह का चित्रण
Structured Designमॉड्यूलर और hierarchical design
Object-Oriented Design (OOD)डेटा और फंक्शन को एक साथ रखने वाली डिज़ाइन

👨‍💻 Coding and Testing of Software (सॉफ्टवेयर का कोडिंग और टेस्टिंग)


1. Unit Testing (यूनिट टेस्टिंग)


2. Black Box Testing (ब्लैक बॉक्स टेस्टिंग)


3. White Box Testing (व्हाइट बॉक्स टेस्टिंग)


4. Debugging (डिबगिंग)


5. Program Analysis Tools (प्रोग्राम विश्लेषण उपकरण)


6. System Testing (सिस्टम टेस्टिंग)


📈 Software Reliability and Quality Assurance (सॉफ्टवेयर विश्वसनीयता और गुणवत्ता आश्वासन)


🔹 Software Reliability (सॉफ्टवेयर विश्वसनीयता)


🔹 Reliability Metric – Musa’s Basic Model

जहाँ,


🔹 Quality Assurance (गुणवत्ता आश्वासन)


📚 संक्षेप में सारांश:

टॉपिकविवरण
Unit Testingसॉफ्टवेयर के छोटे हिस्सों की टेस्टिंग
Black Box Testingफंक्शनल टेस्टिंग, बिना कोड देखे
White Box Testingकोड के अंदर के लॉजिक को देखकर टेस्टिंग
Debuggingbugs को ढूँढना और ठीक करना
Program Analysis Toolsकोड की गुणवत्ता जांचने वाले उपकरण
System Testingपूरा सिस्टम एक साथ टेस्ट करना
Software Reliabilityसॉफ्टवेयर की विश्वसनीयता
Musa’s Modelreliability को failure rate से जोड़ना
Quality Assuranceसॉफ्टवेयर की गुणवत्ता सुनिश्चित करना

Software Quality Assurance (सॉफ्टवेयर गुणवत्ता आश्वासन)

सॉफ्टवेयर की गुणवत्ता सुनिश्चित करने के लिए विभिन्न मानक और फ्रेमवर्क बनाए गए हैं। इसमें सबसे प्रसिद्ध हैं:


1. ISO 9000


2. SEI CMM (Capability Maturity Model)

Capability Maturity Model (CMM) एक ऐसा फ्रेमवर्क है जो सॉफ़्टवेयर विकास प्रक्रियाओं की परिपक्वता (maturity) को मापता है।
यह बताता है कि कोई संगठन कितनी प्रभावी, मापनीय और नियंत्रित प्रक्रिया के साथ सॉफ्टवेयर बनाता है।


🧭 मुख्य उद्देश्य:


📶 CMM के 5 स्तर (Levels of CMM):

📊 Level📝 नाम (Name)🔍 विवरण (Explanation)
Level 1Initial (प्रारंभिक)प्रक्रिया अनियमित और अव्यवस्थित होती है। सफलता व्यक्ति पर निर्भर होती है।
Level 2Repeatable (दोहराने योग्य)बुनियादी प्रक्रियाएँ स्थापित होती हैं, जैसे प्रोजेक्ट मैनेजमेंट। कुछ हद तक योजना और ट्रैकिंग संभव होती है।
Level 3Defined (परिभाषित)सारी प्रक्रियाएँ दस्तावेज़ीकृत और मानकीकृत होती हैं। पूरी संस्था में एक जैसा पालन होता है।
Level 4Managed (प्रबंधित)प्रक्रिया का मापन और नियंत्रण डेटा के आधार पर किया जाता है। गुणवत्ता और प्रदर्शन को मापा जाता है।
Level 5Optimizing (सुधार हेतु तत्पर)निरंतर सुधार पर ज़ोर। नई तकनीकों और प्रक्रियाओं को अपनाया जाता है।

🔄 ISO 9000 और SEI CMM की तुलना

पहलू (Aspect)ISO 9000SEI CMM
उद्देश्यगुणवत्ता प्रबंधन सिस्टम बनानासॉफ्टवेयर प्रक्रिया की परिपक्वता बढ़ाना
फोकसप्रक्रिया नियंत्रण और दस्तावेज़ीकरणप्रक्रिया सुधार और परिपक्वता स्तर
स्तरमानक (Standard)maturity levels (5 स्तर)
व्यापकताकई उद्योगों में लागूमुख्य रूप से सॉफ्टवेयर उद्योग के लिए
अनिवार्यताकुछ जगहों पर अनिवार्यवैकल्पिक लेकिन उपयोगी

🔧 Software Maintenance (सॉफ्टवेयर रखरखाव)

सॉफ्टवेयर का विकास पूरा होने के बाद भी उसका रखरखाव ज़रूरी होता है ताकि वह नए परिवर्तनों, बग्स, और आवश्यकताओं के अनुसार काम करता रहे।


1. Maintenance Process Models


2. Reverse Engineering


3. Estimation of Maintenance Costs


📚 संक्षेप सारांश:

टॉपिकविवरण
ISO 9000गुणवत्ता प्रबंधन के लिए अंतरराष्ट्रीय मानक
SEI CMMसॉफ्टवेयर प्रक्रिया की परिपक्वता मापने वाला मॉडल
Maintenance TypesCorrective, Adaptive, Perfective, Preventive
Reverse Engineeringमौजूदा सॉफ्टवेयर से डिजाइन समझना
Maintenance Costरखरखाव पर आने वाली लागत का अनुमान
Exit mobile version