JINKA UNIVERSITY
C O L L E G E O F N AT U R A L A N D
C O M P U TAT I O N A L S C I E N C E
D E PA RT M E N T O F C O M P U T E R S C I E N C E
S O F T WA R E E N G I N E E R I N G
CHAPTER ONE
INTRODUCTION
By: Senbetu A.
Nov 2022 12/22/2024 1
JKU, Jinka, Ethiopia
What is Software ?
• Software can be defined as a set of programs and associated
documentations.
• Which includes
A number of single programs
Configuration files
System documentation
User documentation
• May be developed for a particular customer or may be developed for a
general market.
12/22/2024 2
TWO ORTHOGONAL VIEWS OF SOFTWARE
Traditional technique and Object oriented methodologies
• TRADITIONAL APPROACH
Collection of procedures(functions)
Focuses on function and procedures, different styles and
methodologies for each step of process
Moving from one phase to another phase is complex.
Increases duration of project and
Increases complexity
12/22/2024 3
Continued…
• OBJECT ORIENTED SYSTEM DEVELOPMENT
Combination of data and functionality
Focuses on object, classes, modules that can be easily replaced,
modified and reused.
Moving from one phase to another phase is easier.
decreases duration of project
Reduces complexity and redundancy
12/22/2024 4
What is Software Engineering?(1)
¨ Software Engineering can be defined as the construction of quality
software with a limited budget and a given deadline in the context of constant
change.
• Software engineering is an engineering discipline that is concerned with all
aspects of software production.
• is not just concerned with the technical processes of software development.
• It also includes activities such as software project management and the
development of tools, methods, and theories to support software production.
• A professional software is developed by a group of software developers
working together in a team.
• Necessary to use some systematic development methodology 12/22/2024 5
Elements of a Software Development Paradigm
• Conceptualization
What elements are involved in how the developers think about
the software system?
• Representation
Must take what the software project is all about
Most effectively done with a software modeling notation
• Implementation
Addresses how the source code is structured
12/22/2024 6
Challenges of software engineering
• Heterogeneity: Developing techniques for building software that
can cope with heterogeneous platforms and execution
environments;
• Delivery : Developing techniques that lead to faster delivery of
software;
• Trust: Developing techniques that demonstrate that software can
be trusted by its users.
12/22/2024 7
The software process (1)
• A structured set of activities required to develop a
software system
• Process activities are:
Specification;
Design & Implementation;
Validation;
Evolution.
There is no ideal process that can fit to all types of software
system development.
12/22/2024 8
Continued…
• Software specification: The process of establishing what services are
required and the constraints on the system’s operation and
development.
• Software design and implementation: The process of converting the
system specification into an executable system.
Software design: Design a software structure that realises the
specification;
Implementation: Translate this structure into an executable
program;
The activities of design and implementation are closely related and
may be inter-leaved.
12/22/2024 9
Continued
• Programming and debugging: Translating a design into a program and
removing errors from that program.
Programming is a personal activity - there is no generic programming
process.
Programmers carry out some program testing to discover faults in the
program and remove these faults in the debugging process.
• Software validation: Verification and validation (V & V) is intended to
show that a system conforms to its specification and meets the
requirements of the system customer.
Involves checking and review processes and system testing.
System testing involves executing the system with test cases that are
derived from the specification of the real data to be processed by the12/22/2024 10
Continued…
• Software evolution: Software is inherently flexible and can change.
As requirements change through changing business circumstances, the
software that supports the business must also evolve and change.
Although there has been a distinction between development and
evolution (maintenance) this is increasingly irrelevant as fewer and fewer
systems are completely new.
12/22/2024 11
The software process paradigms/models
• Software process model is an abstract representation of a software
process.
• Each process models represents a process from a particular
perspective , and thus provides only partial information about that
process.
• The generic models are not definitive descriptions of software process.
• Rather they are abstractions of the process that can be used to explain
the different approaches to software development.
• We can think of them as a process frameworks that may be extended
and adapted to create more specific software engineering processes.
12/22/2024 12
Generic software process models (1)
• The waterfall model: this takes the fundamental process activities of
specification, development, validation and evolution and represents them as the
separate process phase.
• Evolutionary development: this approach interleaves the activities of
specification, development and validation.
An initial system is rapidly developed from abstract specification
Then refined with customer input to produce a system that satisfies the
customer’s needs.
• Component based software engineering: This approach is based on the existence
of a significant number of reusable components.
These system development process focuses on integrating these components
into a system rather than developing them from the scratch. 12/22/2024 13
The waterfall model (1)
• Is the first published model of the software development process.
• The classic waterfall model was introduced in the 1970s by Win Royce at
Lockheed.
• It is so named because it can be represented or graphically modeled as a
cascade from establishing requirements, to design , to program
implementation, to system test, to release to customer.
• The principal stages of the model map to fundamental development activities.
• In principle the result of each phase is one or more documents that are approved
and the following phase should not start until the previous phase finished.
12/22/2024 14
The Waterfall model (2)
Requir
e ments
definition
System and
software design
Implementa tion
and unit testing
Integration and
system testing
Operation and
maintenance
12/22/2024 15
The Waterfall model (3)
• In practice these stages overlap and feed information
to each other.
• The stages in waterfall includes
• Requirements definition
• System and software design
• Implementation and unit testing
• Integration and system testing
• Operation and maintenance
12/22/2024 16
Evolutionary approach (1)
• Evolutionary development is based on the idea of developing an initial
implementation, exposing this to the user comment and refining it
through many versions until an adequate system has been developed.
• Specification , development and validation activities are interleaved rather
than separate, with rapid feedback across activities.
• As a result these approach is often more effective than the waterfall
approach in producing systems that meets the immediate needs of
customers.
12/22/2024 17
Evolutionary approach (2)
Concurr ent
activ ities
Initial
Specifica
tion version
Outline Interm ediate
description Development versions
Final
Validation version
12/22/2024 18
The two fundamental types of evolutionary development are
• Exploratory development
The objective of Incremental/Exploratory development is to deliver a working system to end
users.
This means that you should normally start with the user requirements that are best
understood and that have the highest priority.
Lower priority and vague requirements are implemented when and if the users demand
them.
• Throwaway prototyping
The objective of throwaway prototyping is to validate or derive the system requirements that
are not well understood because you need to find out more about them.
Requirements that are straight forward may never need to be prototyped.
• For large systems it is recommended to combine the best features of waterfall and evolutionary
development approaches. 12/22/2024 19
Component-based software engineering
• Based on systematic reuse where systems are integrated from existing
components or COTS (Commercial-off-the-shelf) systems.
• Process stages
• Requirement specification
• Component analysis;
• Requirements modification;
• System design with reuse;
• Development and integration.
• This approach is becoming increasingly used as component standards have
emerged.
12/22/2024 20
Reuse-oriented development
Requirements Component Requirements System design
specification analysis modification with reuse
Development System
and integration validation
12/22/2024 21
Essentials of CBSE
Independent components must exist
Component standard that facilitate the integration of components
Middleware that provides software support for component integration
• Advantages
Reducing the amount of software to be developed and so reducing cost and risk.
Faster delivery of the software
• Disadvantages
Requirement compromises that leads to a system that do not meet the real needs of
the users.
Control over evolution of the system is lost.
12/22/2024 22
Agile methods
• Dissatisfaction with the heavyweight development approach led a number of
software developers in the 1990s to propose new agile methods.
• These method allows the development team to focus on the software itself rather
than on its design and documentation .
• Agile methods universally relay on an iterative approach to software
specification, development and delivery, and were designed primarily to support
business application development where the system requirements usually
changed rapidly during the development process.
• They are intended to deliver working software quickly to customers, who can
then propose new and changed requirements to be included in later iterations of
the system. 23
12/22/2024
Principles of agile methods
• Customer involvement:- customers should be closely involved through the development
process. their role is provide and prioritize new system requirements and to evaluate the
iterations of the system.
• Incremental delivery:- the software is developed in increments with the customer
specifying the requirements to be included in each increment.
• People not process:- the skills of the development team should be recognized and
exploited. Team members should be left to develop their own ways of working without
prescriptive processes.
• Embrace change:- expect the system requirements to change, so design the system to
accommodate these changes .
• Maintain simplicity:- focus on simplicity in both the software being developed and in the
development process. Wherever possible , actively work to eliminate complexity from the
12/22/2024 24
Model Selection
• The decision on whether to use an agile or a plan-
driven approach to development should depend on the
type of software being developed, the capabilities of
the development team, and the culture of the company
developing the system.
12/22/2024 25
OBJECT ORIENTED SYSTEMS DEVELOPMENT
METHODOLOGY
• Object oriented systems development methodology develops software by building
objects that can be easily replaced , modified and reused.
• It is a system of cooperative and collaborating objects.
• Each objects has attributes (data) and methods (functions).
Why an object orientation?
• Object oriented systems are
Easier to adapt to changes
More robust
Easier to maintain
Promote greater design and code reuse
12/22/2024 26
Reasons for working of object oriented systems:
• Higher level of abstraction: Object orientation approach support abstraction at
object level.
So designing, coding, testing and maintaining the system are much simpler.
• Seamless (Unified) transition among different phases of software
development
• Encouragement of good programming techniques: Changing one class has no
impact on other classes
But there is communication between classes through interface
Promote clear design
Implementation is easy
• Promotion of reusability: Objects are reusable because they are modeled
directly out of real world problem domain. 12/22/2024 27
OVERVIEW OF UNIFIED APPROACH
• The UML (Unified Modeling Language) is a set of notations and conventions used
to describe and model an application.
• The Unified Approach (UA) specifies the tasks or steps to developed an
application,
• The UA consists of the following concepts:
Use case driven approach
Utilizing the UML for modeling
Object oriented analysis and design
Repositories of reusable classes and maximum reuse
The layered approach, Incremental development and prototyping
Continuous testing
12/22/2024 28
OBJECT ORIENTATION PHILOSOPHY
• Object oriented methods enable us to create sets of objects that work together
synergistically to produce software that better module their problem domains
than similar systems produced by traditional techniques.
• The system created using object oriented methods are easier to adapt changing
requirements, easier to maintain, more robust, promote greater design.
12/22/2024 29
Continued…
• Object-oriented approaches attempt to build models that mimic the “real
world”
• Many systems we want to build involve things that exhibit behavior as well
as having structure, and also may exhibit time-dependent aspects
• OO approaches attempt to consistently capture ALL these aspects
• Object orientation emerged during the 1970s, particularly in programming
languages like Simula, Smalltalk, Eiffel and, later, C++ and Java
12/22/2024 30
OO CONCEPTS
12/22/2024 31
OBJECT AND CLASSES
• Informally, an object represents an entity, either physical, conceptual, or
software
physical entity, conceptual entity and software entity
• A more formal definition: An object is a concept, abstraction, or thing with
sharp boundaries and meaning for an object.
• In an OO system, everything is an object
• Classes are used to distinguish one type of object from another
• A Class = a set of objects that share a common structure and a common
behavior.
12/22/2024 32
Continued…
• A single object is simply an instance of a class
• A class is a specification of structure (instance variables), behavior(methods),
and inheritance for objects
• Classes are an important mechanism for classifying objects
• Main role of a class is to define the properties and procedures (the state &
behavior) and applicability of its instances.
• E.g., Class CAR, Defines the property = color, Each individual car will have a
value for this property, such as maroon, red, blue or black
12/22/2024 33
ATTRIBUTES AND METHODS
• Objects can be described by their properties (attributes ) and methods
(operations)
E.g., Class: CAT, Attributes: Colour Food, preference Size, Weight, and
Methods: Catch mouse Eat miaow.
• object behavior is described in methods or procedures
• a method = a function or procedure that is defined for a class and typically can
access the internal state of an object of that class to perform some operation
• operations are things an object does or can have done to it
• in an object model, all data is stored as attributes of some object
• the attributes of an object are manipulated by the operations
12/22/2024 34
Object state and properties (Attributes)
• Properties represent the state of an object.
• In an object oriented methods we want to refer to the description of these properties
rather than how they are represented in a particular programming language.
• We could represent each property in several way in programming language.
• E.g., Color can be declared as character to store sequence or character like Blue,
Black, White etc.
• Color can be declared as numbers to store a stock number of paint like, White
paint, yellow paint etc.
12/22/2024 35
The End of Chapter
Thank you!
?
12/22/2024 36