0% found this document useful (0 votes)
16 views25 pages

Introduction to Software Engineering

The document provides an introduction to software engineering, defining it as the systematic application of scientific principles to software development, operation, and maintenance. It discusses the need for software engineering due to the complexity of systems, the importance of quality, and cost-effectiveness, while outlining various software development process models such as Waterfall, Iterative, and Spiral. Additionally, it covers object-oriented software development methodologies, emphasizing the significance of concepts like classes, inheritance, and encapsulation in designing software systems.

Uploaded by

sinandagne47
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views25 pages

Introduction to Software Engineering

The document provides an introduction to software engineering, defining it as the systematic application of scientific principles to software development, operation, and maintenance. It discusses the need for software engineering due to the complexity of systems, the importance of quality, and cost-effectiveness, while outlining various software development process models such as Waterfall, Iterative, and Spiral. Additionally, it covers object-oriented software development methodologies, emphasizing the significance of concepts like classes, inheritance, and encapsulation in designing software systems.

Uploaded by

sinandagne47
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like