Module1-Introduction to Software Engineering
Module1-Introduction to Software Engineering
Fundamentals
Software engineering
branch associated with
development of software
product using well-
defined scientific
principles, methods and
procedures.
The outcome of software
engineering is an efficient
and reliable software
product.
Chapter 1 Introduction 2
What is Software Engineering?
Component Design
Describes the internal module structure
Interfaces, data design, process design
Object-Oriented Design
Describes the classes, their responsibilities,
relationships, dependencies, and interactions
Internal Class Design
Methods, responsibilities, algorithms and interactions
between them
Software Design Document
(SDD)
The Software Design Document (SDD) is a formal
description of the architecture and design of the system
It contains:
Architecture design
• Modules and their interaction (diagram)
For each module
• Process design (E.g. sequence diagrams)
• Data design (E.g. E/R diagram)
• Interfaces design (E.g. class diagram)
Software Construction
.
Software Testing
Test planning
Establish test strategy and test plan
During requirements and design phases
Test development
Test procedures, test scenarios, test cases, test
scripts
Test execution
Test reporting
Retesting the defects
Test Plan and Test Cases
Quality
What is Software Project
Management?
Software project management
Management discipline about planning, monitoring
and controlling software projects
Project planning
Identify the scope, estimate the work involved, and
create a project schedule
Project monitoring and control
Keep the team up to date on the project's progress
and handle problems
What is Project Plan?
Software
Design
Implementation
(Coding)
Verification
(Testing)
Operation
(Maintenance)
The Agile Manifesto
Incremental
Working software over comprehensive documentation
Cooperation
Customer collaboration over contract negotiation
Straightforward
Individuals and interactions over processes and tools
Adaptive
Responding to change over following a plan
Agile Method: Extreme programming
31
Extreme programming
Small releases The minimal useful set of functionality that provides business
value is developed first. Releases of the system are frequent
and incrementally add functionality to the first release.
Simple design Enough design is carried out to meet the current requirements
and no more.
Test-first development An automated unit test framework is used to write tests for a
new piece of functionality before that functionality itself is
implemented.
Refactoring All developers are expected to refactor the code continuously as
soon as possible code improvements are found. This keeps the
code simple and maintainable.
Chapter 3 Agile software
32
development
Agile Method: Scrum
The Scrum approach is a general agile method but its focus is on managing iterative
development rather than specific agile practices.
33