Software Engineering
Definition
Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures.
Properties
- Complexity
- Conformity
- Changeability
- Invisibility
Process Models
- Generic Process Model
Prescriptive Process Models
- Waterfall Model
- Evolutionary Process Models
- Extreme Programming (XP)
- Scrum
- V-model
- Incremental Process Models
- Kanban model
- Concurrent Models
Requirement Specifications
Correctness of SRS should be checked
Ambiguity should be avoided
Requirements should be complete
Consistent requirements
Verification of expected result
Testing environment
Security and Performance criteria
Pre-conditions defined clearly
The Management Spectrum
The management spectrum describes the management of a software project or how to make a project successful
The Product
The Process
The People
Software Project Estimation
LOC
Empirical Estimation Models
COCOMO II Model
Specialized Estimation Techniques
Project scheduling
Defining a Task Set for the Software Project
Earned Value Analysis
Tracking the Schedule
Timeline charts
Software Design
Component-level design
User Interface Design
Architectural Design
Testing
Strategic Approaches
Validation Testing
Unit testing
Integration testing
Verification
System Testing
Software Testing
White-Box Testing
Basis Path Testing
Control Structure Testing
Black-Box Testing
Maintenance
Need
Correct faults.
Improve the design.
Implement enhancements.
Interface with other systems.
Migrate legacy software.
Retire software.
Categories
Corrective maintenance
Adaptive maintenance
Perfective maintenance
Preventive maintenance
Reverse Engineering
Providing proper system documentatiuon.
Recovery of lost information.
Assisting with maintenance.
Facility of software reuse.
Discovering unexpected flaws or faults.