Software Engineering - BSCS Notes

Software Engineering — Complete BSCS Notes

Introduction to Computer-based System Engineering

Definition: Software Engineering is the disciplined and systematic approach to designing, developing, testing, deploying, and maintaining software systems. It applies engineering principles to software so that systems are reliable, efficient, maintainable, and cost-effective.
Why Software Engineering?
• reduces development cost
• improves quality
• supports teamwork
• manages c

Project Management

Definition: Project management is the planning, organizing, monitoring, and controlling of software development activities to achieve goals within time and budget.
Main Areas:
• Scope management
• Time scheduling
• Cost estimation
• Human resource management
• Communication management
• Risk management
Scheduling Tools:
Gantt Chart, PERT, CPM, milestone charts.
Risk Management:
Identify risks → analyze impact → mitigation plan.
Example: developer leaves project, server failure.
Cost Estimation:
COCOMO model, expert judgment, function points.
Example: 4-member team builds LMS in 3 months with frontend, backend, QA, and documentation roles.
isis.
Software Types:
• System software
• Application software
• Embedded software
• Web and mobile applications
• AI-based systems
Real Example: University Management System including admissions, fee, attendance, results, and teacher portal.

Project Management

Definition: Managing software projects in terms of time, cost, resources, and scope.
Subtopics: Gantt charts, scheduling, budgeting, risk management, team roles.
Example: Assigning tasks to frontend and backend developers with deadlines.

Software Specification & Requirements Engineering

Definition: This phase focuses on gathering, analyzing, validating, and documenting what the software must do.
Functional Requirements:
Features the system must perform.
Example: student login, fee voucher generation.
Non-Functional Requirements:
Performance, security, usability, reliability, response time.
Requirement Gathering Techniques:
Interviews, questionnaires, observation, JAD sessions.
SRS (Software Requirement Specification):
A formal document describing all requirements, constraints, assumptions, and interfaces.
Example Chapter Style:
Problem statement → stakeholders → use cases → business rules → acceptance criteria.

System Modelling

Definition: Visual representation of system structure and behavior.
Subtopics: Use case diagrams, class diagrams, data flow diagrams, sequence diagrams.
Example: Use case diagram for library system.

Software Prototyping

Definition: Early working model of software for feedback and validation.
Types: Throwaway prototype, evolutionary prototype.
Example: UI mockup of LMS portal before final development.

Software Design

Architectural Design: Defines high-level modules and communication.
Examples: layered architecture, client-server, microservices.
Object-Oriented Design:
Classes, objects, inheritance, encapsulation, polymorphism, class relationships.
UML Modeling:
Use case, class, sequence, activity, state, component diagrams.
Function-Oriented Design:
Breaks system into modules and functions using DFDs and structure charts.
User Interface Design:
Layout, navigation, color hierarchy, accessibility, usability principles.
Detailed Example:
Dashboard → login → course panel → fee module → result module with complete screen flow.
Design Principles:
Low coupling, high cohesion, modularity, reusability, abstraction.

Quality Assurance

Definition: Ensuring software meets standards and requirements.
Subtopics: Testing, verification, validation, reviews.
Example: Unit testing login module.

Processes & Configuration Management

Software Process: Steps followed in development like waterfall, agile, spiral.
Configuration Management: Version control and change tracking.
Example: Using Git and GitHub for version control.

Advanced Issues

Reusability: Reusing existing modules/components.
Patterns: Common design solutions like Singleton, Factory.
Example: Reusing authentication module in multiple projects.

Assignments & SDLC Deliverables

Full SDLC:
Planning → Requirement Analysis → Design → Coding → Testing → Deployment → Maintenance
Deliverables per Phase:
• Planning: feasibility report
• Analysis: SRS
• Design: UML diagrams
• Coding: source code
• Testing: test cases / bug report
• Deployment: release notes
• Maintenance: update log
Mini Project Example:
Hostel Management System with room allocation, fee tracking, complaints, reports.
Exam Style Questions:
Explain waterfall model, compare agile vs spiral, define verification and validation, write note on SCM.