Lecture 03: Programs vs. Software Products & Software Process Methods
Unit 1: Introduction to Software Engineering (4353202)
Lecture Agenda
- Recap of Lecture 02: Layered Approach
- Distinguishing Programs from Software Products
- Understanding the Software Process
- Exploring Software Process Methods
- Summary and Q&A
Recap of Lecture 02: Layered Approach
We discussed software engineering as a layered technology:
- Quality Focus: The foundational commitment.
- Process: The framework of activities.
- Methods: The technical "how-to's".
- Tools: Automated support for process and methods.
Distinguishing Programs from Software Products
While all software products contain programs, not all programs are software products. A software product is a more comprehensive entity.
| Aspect | Simple Program | Software Product |
|---|---|---|
| Purpose & Scope | Often for personal use, solves a specific, narrow problem. | Developed for a market or specific client, solves a broader problem, designed for multiple users. |
| Quality & Robustness | May have limited error handling, less rigorous testing. | Designed for reliability, extensive error handling, thoroughly tested. |
| Documentation | Minimal or informal (e.g., comments in code). | Comprehensive user manuals, installation guides, API documentation, design documents. |
| Maintenance & Support | Little to no ongoing maintenance or user support. | Requires continuous maintenance (bug fixes, updates, enhancements) and dedicated user support. |
| User Interface | May be basic, command-line driven. | User-friendly, intuitive, often graphical (GUI). |
Understanding the Software Process
A Software Process is a structured set of activities, methods, practices, and transformations that people use to develop and maintain software and its associated products (e.g., project plans, design documents, test cases).
It provides a systematic approach to managing the complexity of software development.
Key Characteristics of a Good Software Process:
- Predictability: Allows for reasonable planning and estimation.
- Controllability: Enables management to monitor and adjust progress.
- Repeatability: Can be applied consistently across different projects.
- Efficiency: Optimizes resource utilization and reduces waste.
- Quality Focus: Integrates activities to ensure high-quality deliverables.
Exploring Software Process Methods
Software process methods are the specific technical "how-to's" that are applied to perform the activities within the software process. They provide the detailed techniques for building software.
- Requirements Elicitation Methods: Techniques to gather user needs.
- Examples: Interviews, Use Case modeling, Prototyping, Brainstorming.
- Design Methods: Approaches to define the software's architecture and components.
- Examples: Object-Oriented Design, Data Flow Diagramming, Architectural Pattern selection.
- Construction Methods: Practices for coding and unit testing.
- Examples: Test-Driven Development (TDD), Pair Programming, Code Refactoring, Adherence to Coding Standards.
- Testing Methods: Techniques for verifying and validating the software.
- Examples: Black-box testing (Equivalence Partitioning), White-box testing (Statement Coverage), Regression Testing.
Summary and Q&A
Key Takeaways
- A **Software Product** is a comprehensive, market-ready system, distinct from a simple program.
- A well-defined **Software Process** provides a systematic and repeatable approach to development, ensuring predictability and quality.
- **Software Process Methods** are the specific technical techniques (e.g., for requirements, design, coding, testing) that execute the process activities.
Q & A
Questions & Discussion

