KEMBAR78
Software Engineering Notes | PDF | Software Development | Software Testing
0% found this document useful (0 votes)
18 views4 pages

Software Engineering Notes

The document provides an overview of software engineering, covering its discipline, life cycle models, requirements analysis, software design, coding, testing, software reliability, quality management, and maintenance. It discusses various software development practices and methodologies, emphasizing the importance of structured approaches and user involvement. Additionally, it highlights the role of Computer-Aided Software Engineering (CASE) tools and the different types of software maintenance activities.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views4 pages

Software Engineering Notes

The document provides an overview of software engineering, covering its discipline, life cycle models, requirements analysis, software design, coding, testing, software reliability, quality management, and maintenance. It discusses various software development practices and methodologies, emphasizing the importance of structured approaches and user involvement. Additionally, it highlights the role of Computer-Aided Software Engineering (CASE) tools and the different types of software maintenance activities.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Software Engineering Notes

Unit I: Introduction & Software Life Cycle Models


Software Engineering Discipline: Systematic approach to software development, including
requirement analysis, design, coding, testing, deployment, and maintenance.

Programs vs. Software Products: Programs are small-scale and often for personal use, while
software products are large-scale, reliable, well-tested, and maintained.

Why Study Software Engineering: Helps manage complexity, improves reliability, reduces
cost, increases efficiency, and ensures high-quality software products.

Emergence of Software Engineering: Emerged in the 1960s to tackle the 'software crisis'
(delays, cost overruns, poor quality).

Changes in Software Development Practices: Transition from ad-hoc coding to structured


methods, use of methodologies, CASE tools, agile practices.

Life Cycle Models:

- Classical Waterfall: Sequential phases, easy to understand but inflexible.

- Iterative Waterfall: Allows feedback between stages.

- Prototyping Model: Focus on building quick prototypes for user feedback.

- Evolutionary Model: Incremental development with continuous improvements.

- Spiral Model: Combines iterative development with risk analysis.

Comparison: Waterfall is rigid; Prototyping improves user involvement; Spiral handles risks
better; Evolutionary supports continuous delivery.

Unit II: Requirements Analysis and Specification & Software Design


Requirements Gathering and Analysis: Process of collecting and analyzing user needs to
ensure system meets expectations.

Software Requirements Specification (SRS): A formal document describing functional and


non-functional requirements.

Good Software Design: Should ensure modularity, low coupling, high cohesion, and easy
maintainability.

Cohesion: Degree to which elements of a module belong together.


Coupling: Degree of interdependence between modules (low coupling is desirable).

Design Approaches:

- Object-Oriented Design: Focuses on objects, encapsulation, inheritance, polymorphism.

- Function-Oriented Design: Focuses on functions, data flow, and transformations.

Unit III: Function-Oriented Software Design & User Interface Design


SA/SD Methodology: Structured Analysis and Structured Design, emphasizes systematic
decomposition of requirements.

Structured Analysis: Breaking down system into processes, data, and data stores.

Data Flow Diagrams (DFD): Graphical representation showing data flow and processing.

Structured Design: Uses modules and hierarchy to implement system functions.

Detailed Design: Specifies algorithms, data structures, and detailed logic.

User Interface (UI) Design:

- Characteristics of Good Interface: Simple, consistent, responsive, user-friendly.

- Types of User Interfaces: Command-line, menu-driven, graphical, natural language.

- Component-based GUI Development: Using pre-built UI components to develop


applications.

- User Interface Methodology: Iterative design, prototyping, user feedback.

Unit IV: Coding, Testing, Software Reliability & Quality Management


Coding: Writing program instructions with focus on readability, maintainability, and
efficiency.

Code Review: Peer-review process to improve quality and detect defects early.

Testing:

- Unit Testing: Testing individual modules.

- Integration Testing: Testing combined modules.

- System Testing: Testing the entire system against requirements.

- Black-box Testing: Tests functionality without looking at internal code.

- White-box Testing: Tests internal logic and code structure.


Debugging: Identifying and fixing defects in code.

Program Analysis Tools: Tools that check code quality, performance, and correctness.

Software Reliability: Probability of software working correctly under given conditions.

Statistical Testing: Using statistical methods to evaluate software reliability.

Software Quality: Ensures software meets requirements and user satisfaction.

Quality Management System: Policies and processes to maintain software quality.

SEI Capability Maturity Model: Framework for process improvement in software


development.

Personal Software Process (PSP): Focus on individual developers improving their work
quality.

Unit V: Computer Aided Software Engineering (CASE) & Software


Maintenance
Computer-Aided Software Engineering (CASE): Tools and techniques to support software
development and maintenance.

CASE Scope: Requirement analysis, design, coding, testing, maintenance.

CASE Environment: Integrated tools providing automated support for software


development.

CASE in Software Life Cycle: Helps in all phases of development.

Characteristics of CASE Tools: Automation, consistency, documentation, integration.

Second Generation CASE Tools: Advanced features like code generation, reverse
engineering.

Architecture of CASE Environment: Repository, tool integration, user interface.

Software Maintenance:

- Corrective Maintenance: Fixing bugs.

- Adaptive Maintenance: Updating software for new environments.

- Perfective Maintenance: Enhancing performance/features.

- Preventive Maintenance: Anticipating future issues.

Reverse Engineering: Analyzing software to extract design and specifications.


Software Maintenance Process Models: Models describing phases of maintenance activities.

Estimation of Maintenance Cost: Based on complexity, size, environment, and change


requests.

You might also like