BIT302 Software Engineering

Software EngineeringUnit 110 min read

Software Engineering Basics: Definitions, Attributes, Challenges & Real-World Impact

Unit 1 of Software Engineering introduces core concepts: defining software, its attributes, development challenges, and real-world applications in Nepalese tech (eSewa, Ncell) and global platforms (Google, WhatsApp). Learn through visual models, case studies, and exam-focused explanations.

TAKEAWAYS:

  • Software is not just code—it includes processes, documentation, and user interactions, with 10 key attributes (correctness, usability, efficiency, etc.) that define quality.
  • Real-world impact: eSewa uses transactional integrity (Unit 5 preview) to ensure secure payments, while WhatsApp’s event-driven architecture (Unit 5) handles millions of messages instantly.
  • Challenges like scalability (e.g., Ncell’s network traffic) and maintenance (e.g., NEPSE’s legacy systems) require careful planning from the start.
  • Process models (waterfall, incremental, agile) shape how software is built—each has trade-offs (e.g., waterfall’s rigidity vs. agile’s flexibility).
  • Configuration management (Unit 7 preview) is critical for tools like GitHub, which tracks changes in open-source projects like Linux.
  • Exam focus: Memorize definitions (e.g., "software = programs + data + docs + procedures") and compare models using visual diagrams (e.g., waterfall vs. spiral).

What Is Software?

Software is not just code. It includes:

  • Programs (instructions for computers).
  • Data (input/output, databases).
  • Documentation (user manuals, system specs).
  • Procedures (installation, maintenance guides).
classDiagram
    class Software {
        +Programs
        +Data
        +Documentation
        +Procedures
    }
    class Program {
        <<stereotype>>
        Code + Algorithms
    }
    class Data {
        <<stereotype>>
        Inputs + Outputs + Databases
    }
    Software --> Program : contains
    Software --> Data : uses

Why this matters: eSewa’s software includes payment APIs (programs), user transaction data, KYC documentation, and customer support procedures—all critical for its success.


Attributes of Good Software

The 10 key attributes (memorize these for exams!) ensure software meets user and business needs:

Attribute Definition Example (Nepal) Example (Global)
Correctness Meets specifications without errors. eSewa’s payment gateway never fails. Google Maps’ accurate directions.
Usability Easy to learn and operate. Daraz’s mobile app for non-tech users. WhatsApp’s simple UI.
Efficiency Optimized for speed and resource use. Ncell’s 4G network handles peak hours. YouTube’s adaptive streaming.
Reliability Operates correctly under expected conditions. NTC’s power grid during load-shedding. Amazon’s 99.99% uptime.
Maintainability Easy to update and fix. Pathao’s app updates for new features. Linux kernel’s modular design.
Portability Runs on different platforms. Cross-platform apps (e.g., Facebook). Android apps on any device.
Reusability Components used in multiple projects. NEPSE’s trading software reused for SEBON. Open-source libraries (e.g., React).
Scalability Handles growth in users/data. Daraz’s Black Friday traffic surge. Netflix’s global streaming.
Security Protects against unauthorized access. Khalti’s two-factor authentication. Bank of America’s encryption.
Interoperability Works with other systems. eSewa integrating with banks. Zoom’s API for third-party apps.

Worked Example: Ncell’s Network Efficiency Ncell’s 4G network must balance efficiency (minimize latency) and reliability (no drops during calls). During Dasain, when usage spikes, their software dynamically allocates bandwidth (scalability) and prioritizes voice calls (correctness) over data. This is achieved through:

  1. Load balancing (distributing traffic across towers).
  2. Caching (storing frequent data locally).
  3. Fallback mechanisms (switching to 3G if 4G fails).

Challenges in Software Development

Software projects face 5 major challenges (exam favorite!):

mindmap
  root((Challenges in Software))
    High Cost
      Hardware/Software Licenses
      Labor (Developers, Testers)
    Complexity
      Interdependent Modules
      Example: eSewa’s payment flow (user → bank → merchant)
    Changing Requirements
      Example: NEPSE’s new trading rules → software updates
    Unclear Requirements
      Example: "User wants a faster app" → What’s "fast"?
    Scheduling
      Delays in NTC’s smart meter project

Real-World Tie-In: NEPSE’s Trading System NEPSE’s online trading platform faces:

  • Complexity: Integrates with banks, brokers, and regulators.
  • Changing Requirements: New SEBON rules require constant updates.
  • Unclear Requirements: Traders demand "real-time data," but what’s the latency threshold?

Solution: NEPSE uses incremental development (Unit 2) to release features in phases (e.g., first user login, then order matching).


Software Development Approaches

Three core models define how software is built. Compare them visually:

Model Phases Flexibility Best For Example (Nepal) Example (Global)
Waterfall Linear (requirements → design → ... → maintenance) Low Small, stable projects NTC’s billing system NASA’s space mission software
Incremental Delivers in small releases Medium Evolving requirements eSewa’s feature rollouts Google Docs’ updates
Agile Iterative (sprints, feedback loops) High Dynamic, user-centric projects Pathao’s app updates Spotify’s playlists

Real Picture:


In the Real World

  1. eSewa’s Transaction Integrity

    • Idea: Atomic transactions (Unit 5) ensure money moves only if all steps succeed (e.g., deduct from sender → add to receiver).
    • How: Uses database locks to prevent double-spending during Dasain’s high-volume transactions.
    • Failure Impact: If a transaction fails midway, users get refunds automatically.
  2. Pathao’s Event-Driven System

    • Idea: Event-driven architecture (Unit 5) triggers actions based on events (e.g., "ride requested" → "find nearest driver").
    • How: When you book a ride, Pathao’s backend:
      1. Publishes an "order_created" event.
      2. Drivers’ apps subscribe to this event and compete to accept it.
    • Result: Faster matches during peak hours (e.g., 7–9 PM in Kathmandu).
  3. NTC’s Network Scalability

    • Idea: Load balancing (Unit 4) distributes traffic across servers.
    • How: During load-shedding, NTC’s software:
      • Routes users to less congested towers.
      • Uses CDN (Content Delivery Network) to cache frequent queries (e.g., "status of ward X").
    • Outcome: Reduces latency by 40% during outages.

Exam Tip

  1. Definitions Are Key

    • Memorize:
      • "Software = programs + data + docs + procedures."
      • "Good software has 10 attributes (list them!)."
    • Exam trick: If asked to "explain software," use the class diagram above.
  2. Compare Models Visually

    • For questions on waterfall vs. incremental vs. agile, draw a table (like above) or a flowchart showing phases.
    • Example answer:

      "Waterfall is rigid (phases are sequential), while agile is flexible (iterative). eSewa used incremental delivery to release features gradually, reducing risk."

  3. Real-World Examples Score Marks

    • Always tie answers to Nepalese tech (eSewa, Ncell, NTC) or global apps (Google, WhatsApp).
    • Example:

      "Like Pathao’s event-driven system, a bank’s loan approval process uses events: ‘application_submitted’ → ‘credit_check’ → ‘approval’."

  4. Diagrams > Text

    • Must-draw diagrams for exams:
      • Class diagram for software components.
      • Sequence diagram for configuration management (Git → Build → Deploy).
      • Mindmap for challenges (cost, complexity, etc.).
    • Pro tip: Sketch diagrams on scrap paper during the exam to organize answers.
  5. Common Pitfalls

    • ❌ Don’t confuse software with just "code." Include data, docs, and procedures.
    • ❌ Don’t mix up incremental (small releases) with iterative (repeating phases).
    • ❌ For attributes, don’t forget interoperability (often missed in exams!).

Summary Checklist

Before the exam, verify you can:

  • Define software and list its 4 components.
  • Name and explain the 10 attributes of good software.
  • Compare 3 development models (waterfall, incremental, agile) with Nepalese examples.
  • Draw a sequence diagram for configuration management.
  • Explain 2 real-world applications (eSewa, Pathao, NTC) using this unit’s concepts.
  • Describe 5 challenges in software development with examples.

Based on the TU BIT syllabus for Software Engineering (BIT302), unit 1.

Discussion

Loading…