Software Engineering Introduction
Department of Computer Science
Madda Walabu University
Tadele Shimelis
What is Software Engineering?
Software = collection of programs, libraries, documentation.
Engineering = applying scientific and systematic principles.
Software Engineering = Application of systematic,
disciplined, and quantifiable approaches.
systematic approach to development, operation, maintenance
of software.
Need for Software Engineering
Large and complex systems
Scalability and maintainability
High cost of errors
Dynamic nature of software
Ensures quality and cost-effectiveness.
Characteristics of Good Software
Operational: efficiency, correctness, usability
Transitional: portability, reusability, adaptability
Maintenance: modularity, flexibility, scalability
Two Orthogonal Views of Software
Product View: what software does
Two Orthogonal Views of Software
Process View: how software is developed
Both are essential for understanding software engineering.
Software Development Process Models
Provide structure to software development.
Ensure systematic progress.
Examples: Waterfall, Iterative, Prototyping,
Evolutionary, Spiral.
Software Process
Sequence of activities leading to software
creation.
Phases: Requirements, Design, Implementation,
Testing, Deployment, Maintenance.
Software Life Cycle
Phases: Feasibility → Requirement → Design →
Coding → Testing → Maintenance
Defines entry and exit criteria for each phase.
Classical Waterfall Model
Phases: Feasibility, Requirement, Design, Coding, Testing,
Maintenance
Advantages: simple, structured
Disadvantages: inflexible, no feedback.
Iterative Waterfall Model
Adds feedback loops between phases.
Errors corrected early.
More practical than classical model.
Prototyping Model
Builds working model early.
Used when requirements unclear.
Cycle: Build → Evaluate → Refine → Final System.
Evolutionary(Incremental) Model
System built in increments or versions.
Each versions adds functionality.
Good for large or OO projects.
Spiral Model
Combines iteration with risk management.
Phases per loop: Objective setting, Risk analysis,
Development, Review.
Suited for risky, complex projects.
Process Assessment Models
A framework used to systematically evaluate an
organization's software development processes to identify
strengths, weaknesses, and areas for improvement
Help to ensure the continuous improvement of the
development process
Evaluate software process capability.
Software assessment (or audit) methods.
Techniques can be divided into three types
A self-assessment (first-party assessment) is performed internally
by an organization's own personnel.
A second-party assessment is performed by an external
assessment team or the organization is assessed by a customer.
A third-party assessment is performed by an external party or
(e.g., a supplier being assessed by a third party to verify its ability
to enter contracts with a customer).
Incase of Ethiopia INSA is one example.
Software Process Metrics
Software process metrics are numerical indicators used to
measure
effectiveness,
efficiency,
and quality of the software development process.
They help managers and engineers track progress, detect
problems early, and improve future performance.
Software Process Metrics
Product metrics − Describes the characteristics of the product
such as size, complexity, design features, performance, and
quality level.
Process metrics − These characteristics can be used to improve
the development and maintenance activities of the software.
Project metrics − This metrics describe the project
characteristics and execution.
Examples include the number of software developers, the staffing pattern
over the life cycle of the software, cost, schedule, and productivity.
OOS Development Methodology
An approach used to analyze, design, and implement software
systems using the principles of object-oriented
The methodology focuses on modeling the system as a
collection of interacting objects, each representing real-world
entities.
Why an Object Oriented
Coz the Object Oriented Methodology has the following Chxs
Object :- A unit that contains data (attributes) and behavior (methods).
Class :- A blueprint for creating objects. A class defines the structure and
behaviors of objects.
Inheritance :- Allows a class to acquire properties and behavior of another
class.
Polymorphism :- Allows the same operation to behave differently on
different classes.
Encapsulation :- Bundling data and methods, and restricting direct access
to some components.
Steps in OOSD Methodologies
Object-Oriented Analysis
Identify all objects required to develop the system
Object-Oriented Design
Design a class for all identified object clearly
Object-Oriented Programming (Implementation)
Write a code using the designed classes (use your preferred PL)
Steps with Example
In Case Student Registration System
Object-Oriented Analysis
Student
Course
Instructor
Enrollment
Steps with Example
In Case Student Registration System
Object-Oriented Design
Class Student Class Course Class Student
- studentID - courseCode - student
- name - courseTitle - course
- register() - creditHours - enrollmentDate
Steps with Example
In Case Student Registration System
Object-Oriented Programming
Java Code
Student s1 = new Student("S001", "Abebe");
Course c1 = new Course("CS101", "Intro to Programming");
Enrollment e1 = new Enrollment(s1, c1);
Class Work
Identify objects to implement the following system
Online Shopping System
ATM System
Library Management System