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.