Assignment
Name: Naaz Ahmed
Roll no : K24SW003
Subject: Introduction to Software Engineering
Teacher: Dr. Nouman Qadeer Soomro
1. Design and Implementation
Overview
Design and implementation are two critical stages in the software development lifecycle. The
design phase involves analyzing the requirements and creating a structured plan for the
system architecture. The implementation phase translates this plan into executable code.
Key Concepts
Modular Design:
Dividing the system into discrete, manageable modules that can be developed and
maintained independently.
Design Patterns:
Proven templates for solving common software design issues, such as:
o Singleton Pattern: Ensures only one instance of a class exists.
o Factory Pattern: Creates objects without specifying the exact class of object to
create.
Implementation:
Writing and integrating code components using the chosen programming language
based on the system's design.
Case Study Example: Library Management System
Design Phase
Identify core modules:
o Book
o Member
o Loan
Implementation Phase
Develop corresponding classes in a language like Java or Python.
UML Class Diagram
+-----------+ +-----------+
| Book | | Member |
+-----------+ +-----------+
| - title | | - name |
| - author | | - memberID|
+-----------+ +-----------+
| |
+--------+----------+
|
+--------+
| Loan |
+--------+
|dueDate |
+--------+
2. UML Diagrams
Overview
The Unified Modeling Language (UML) provides standardized notations to model software
systems, making them easier to understand, design, and document.
Types of UML Diagrams
Structural Diagrams
Represent static elements of a system.
Examples: Class Diagram, Component Diagram
Behavioral Diagrams
Show dynamic behavior and workflows.
Examples: Use Case Diagram, Sequence Diagram
Interaction Diagrams
Detail interactions between objects.
Examples: Communication Diagram, Timing Diagram
Use Case Example: Library Management System
+----------------------+
| Library System |
+----------------------+
| |
| +------------------+ |
| | Borrow Book | |
| +------------------+ |
| +------------------+ |
| | Return Book | |
| +------------------+ |
+----------------------+
Represents the system’s features from an end-user’s point of view.
Popular UML Tools
PlantUML:
Text-based tool for generating UML diagrams.
ArgoUML:
Open-source application for designing and editing UML diagrams.
3. Software Testing and Quality Assurance (QA)
Overview
Software Testing ensures the application meets specified requirements and identifies
defects.
Quality Assurance (QA) focuses on improving the processes to prevent defects and
maintain quality standards throughout development.
Comparison: Testing vs. QA
Aspect Software Testing Quality Assurance (QA)
Focus Identifying bugs and errors Ensuring process and product quality
Approach Reactive Proactive
Activities Unit testing, integration testing Reviews, audits, process improvement
Tools Selenium, JUnit Checklists, QA audit frameworks
Types of Testing
Functional Testing:
Validates that the system functions as intended.
Non-Functional Testing:
Evaluates system attributes like performance, usability, and security.
Functional Testing Example – “Borrow Book” Feature
Test Scenario:
Confirm that a member can successfully borrow a book if it is available.
Expected Result:
The book’s status changes to “borrowed”, and the member’s borrowing record is
updated accordingly.
Common Testing Tools
Selenium:
Tool for automating web application testing.
JUnit:
A framework used for unit testing in Java-based applications