0% found this document useful (0 votes)
26 views35 pages

Software Engineering SE

This document provides an introduction to software engineering, covering definitions, methodologies, and the software development process. It distinguishes between software engineering and computer science, and outlines various software development models such as Waterfall, Prototyping, and Incremental. The document emphasizes the importance of systematic approaches in software production and the role of object-oriented development methodologies.

Uploaded by

tagesseabate887
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)
26 views35 pages

Software Engineering SE

This document provides an introduction to software engineering, covering definitions, methodologies, and the software development process. It distinguishes between software engineering and computer science, and outlines various software development models such as Waterfall, Prototyping, and Incremental. The document emphasizes the importance of systematic approaches in software production and the role of object-oriented development methodologies.

Uploaded by

tagesseabate887
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
You are on page 1/ 35

Software Engineering

Course code: CoSc 3061

Chapter One
Introduction
The main topics/contents covered under this chapter will be:
• Definition of Software
• Orthogonal view of software
• Definition of Software engineering
• Software dev't process model
• Object oriented system dev't methodology
Introduction

What is software?

What are the two orthogonal view of software?

What is software engineering?

What is the difference between software engineering and computer science?

What is the difference between system engineering and software engineering?

3/3/2024 Compiled By Amanuel T. (MSc.) 2


What is Software

Instructions (computer programs) that executed and provide desired features,


function and performance,
Data structures that enable the programs to adequately manipulate information,
Documents that describe the operation and use of the programs/software,
In generally, it’s is collection of computer programs, data and associated
documentation such as requirements, design models and user manuals.

3/3/2024 Compiled By Amanuel T. (MSc.) 3


Two orthogonal view of software

• A software development methodology is a series of processes leads to the


development of an application.
• There are two orthogonal view of software development approaches/methods:
1) Traditional approach
 a collection of programs or functions and isolated data
 Programs are divided a number of functions
 focuses on the functions of the system
 moving from one phase to another phase is complex
 increases duration of project
 increases complexity

3/3/2024 Compiled By Amanuel T. (MSc.) 4


Cont.

2) Object-oriented systems development approach


data and functionality are put together in a single entity.
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

3/3/2024 Compiled By Amanuel T. (MSc.) 5


What is software Engineering

Software engineering is an engineering discipline that is concerned with all


aspects of software production.
Software engineers should adopt a systematic and organized approach to their
work and use appropriate tools and techniques depending on the problem to be
solved, the development constraints and the resources available.
It’s the process of solving customers’ problem by the systematic development and
evolution of large, high quality software system within cost, time and other
constraints.

3/3/2024 Compiled By Amanuel T. (MSc.) 6


Cont.

 Difference between software engineering and computer science


Computer science is concerned with theory and fundamentals, whereas
software engineering is concerned with the practicalities of developing and
delivering useful software.
 The difference between system engineering and software engineering
System engineering is concerned with all aspects of computer-based systems
development including hardware, software and process engineering. Software
engineering is part of system engineering process concerned with developing
the software infrastructure, control, applications and databases in the system.

3/3/2024 Compiled By Amanuel T. (MSc.) 7


Cont.

 Software products may be developed for a particular customer or may be


developed for a general market:
Generic - developed to be sold to a range of different customers e.g. PC
software such as Microsoft office (like word or excel, etc.)
Bespoke (custom) - developed for a single customer according to their
specification.
New software can be created by developing new programs, configuring
generic software systems or reusing existing software.

3/3/2024 Compiled By Amanuel T. (MSc.) 8


Software development process model
 Software process
 It is a set of related activities that leads to the production of a quality and effective a software
product.
 These activities may involve the development of software from scratch in a standard programming
language like Java or C.
 There are many different software processes but all must include four activities that are fundamental to
software engineering:
o Software Specification - what does the customer needs (functionality of the software) and its development
constraints.
o Software design and implementation- The software to meet the specification must be produced.
o Software Validation - software must be validated to ensure that it does meets what customer wants.
o Software Evolution - The software must evolve to meet changing customer needs.

3/3/2024 Compiled By Amanuel T. (MSc.) 9


Software development life cycle
Its set of activities and their relationships to each other to support the
development of a software system.
Software development life cycle has several clearly defined phases:
1) Requirements gathering: collect all relevant information from the customer regarding the
software product to be developed.
2) Requirements analysis: identify all ambiguities and contradictions in the requirements and
resolve them through further discussions with the customer & requirements properly
understood.
3) Requirements specification: user requirements are systematically organized into a Software
Requirements Specification (SRS) document like functional requirements, the nonfunctional
requirements.
4) Design: The systems design process allocates the requirements to either hardware or software
systems by establishing an overall system architecture.

3/3/2024 Compiled By Amanuel T. (MSc.) 10


Cont.

5) Implementation: translate the software design into source code.


6) Integration and system testing: The individual program units or programs are integrated and
tested as a complete system to ensure that the software requirements have been met.
7) Deployments: After testing, the software system is delivered to the customer that to preform
required function
8) Maintenance: mean modification and upgrading the software when the need arises.
Requirement gathering, analysis and specification are performed iteratively. Design,
implementation, Integration and testing are done sequentially.

3/3/2024 Compiled By Amanuel T. (MSc.) 11


Software process models

1. Waterfall
2. Prototyping
3. Spiral
4. Iterative
5. Incremental

3/3/2024 Compiled By Amanuel T. (MSc.) 12


Water-fall Model

3/3/2024 Compiled By Amanuel T. (MSc.) 13


Cont.
The waterfall model progress flows from the top to the bottom.
Waterfall model starts with feasibility study, which explains about the economical
(cost), legal (political) studies and so on.
The outcome of the feasibility study is “feasibility report “which acts as an input
to the requirement and analysis phase.
Each phase must be completed before the next phase can begin.
 Each and every phase has a defined output. The output of one phase acts as
input to the next phase.
This model is simple and easy to understand and use.

3/3/2024 Compiled By Amanuel T. (MSc.) 14


Limitations of waterfall model

Waterfall model works well for smaller projects where requirements are very well
understood. It poor model for long and ongoing projects.
Waterfall model is also known as “All-nothing” it means that the end user has a
chance to see the output only at the end of the project.
Water-fall model is a linear model.
 Once an application is in the testing stage, it is very difficult to go back and
change something that was not well-thought in the first stage.

3/3/2024 Compiled By Amanuel T. (MSc.) 15


Prototyping model

Prototyping model:

User interaction

Agreed
requirements
Prototype
development

3/3/2024 Compiled By Amanuel T. (MSc.) 16


Cont.

The project should start with the minimum requirements of the user,
Based on the minimum requirements developers develop a prototype
model.
To overcome the limitation of the water-fall model, prototyping model
is introduced which is also called as throw away prototyping.
The prototype is given to the user to interact with it and the user will
end intangible values.
The user feels that as if he is using the complete project but it is just a
model.

3/3/2024 Compiled By Amanuel T. (MSc.) 17


Cont.
During this phase, the developer will understand the rest of the
requirements.
The same process will continue until the user satisfies.
Once the developer knows all the requirements the prototype will be
throwaway.
Preparing the prototype model it contains following phases: such as
requirement analysis, design, coding and testing.
Used for large and complex projects.

3/3/2024 Compiled By Amanuel T. (MSc.) 18


Iterative model

3/3/2024 Compiled By Amanuel T. (MSc.) 19


Cont.
Iterative model is the combination of waterfall model and prototyping.
The developer starts the project with some of the requirements in a
prototype manner as the developer knows all the requirements of the project
The project should contain the phases like:
 Planning
 requirements analysis
 Design
 Implementation
 Testing
 Deployment

3/3/2024 Compiled By Amanuel T. (MSc.) 20


Spiral model
Spiral model:

Evaluate alternatives,
Determine objectives identify, resolve risks,
alternatives, constraints develop prototypes

Develop, verify
next-level product
Plan next phases

3/3/2024 Compiled By Amanuel T. (MSc.) 21


Cont.
Spiral model is a combination of water-fall model, prototyping model,
iterative model and risk analysis factor.
 Unlike water-fall it is not linear it is spiral which is also known as
Cartesian model which is divided into four quadrants.
The first quadrant deals with the phases to evaluate the risk.
The second quadrant deals with determining objectives.
The third quadrant deals with planning next phase.
The fourth quadrant deals to develop the product.

3/3/2024 Compiled By Amanuel T. (MSc.) 22


Cont.
The activities in this spiral model are organized as a spiral which
consists of several cycles.
Radius of the spiral explains about cost of the project.
Angular of the spiral explains about the progress of the project.

3/3/2024 Compiled By Amanuel T. (MSc.) 23


Incremental model

This model interleaves the activities of specification, development, and validation.


The system is developed as a series of versions (increments), with each version
adding functionality to the previous version.
The original project is divided into several increments/builds where each increment
contains the phases like requirement analysis and specification, design, coding,
testing, deployment and maintenance.
The project can be completed within different schedules (increments).
While user is working with the increment1 developed by a developer based on
requirements.
Again the developer will develop increment 2 by using the requirements which are
known while working on increment1 by making use of the design

3/3/2024 Compiled By Amanuel T. (MSc.) 24


Incremental model:

3/3/2024 Compiled By Amanuel T. (MSc.) 25


Incremental model is used for more complicated systems.

3/3/2024 Compiled By Amanuel T. (MSc.) 26


Advantages of Incremental Model
 Generates working software quickly and early during the software life cycle.
 This model is more flexible – less costly to change scope and requirements.
 It is easier to test and debug during a smaller iteration.
 In this model customer can respond to each built.
 Lowers initial delivery cost.
 Easier to manage risk because risky pieces are identified and handled during its
iteration.

3/3/2024 Compiled By Amanuel T. (MSc.) 27


Disadvantages of Incremental Model

• Needs good planning and design.


• Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
• Total cost is higher than waterfall model.

3/3/2024 Compiled By Amanuel T. (MSc.) 28


Software process metrics

Process metrics are measures of the software development process,


such as overall development time and type of methodology used.
Usually related to events or things that occur.
 Examples: # defects found in test, # requirements changes, # days to
complete task …

3/3/2024 Compiled By Amanuel T. (MSc.) 29


Cont.
Software process metrics consists:
 Defect: in code or errors uncovered during each software engineering task are
tracked.
 Reliability:- the probability that a program will perform its specified
function for a stated time under specified conditions.
 Availability:- software provide service for user/customer effectively.
 Usability: is a measure of how easy it is to use a product to perform
prescribed tasks.
 Maintenance:- software allow for maintenance, to add new feature.
 Management : software developed with min cost, min development time.
 Performance:- software perform task with acceptable performance.
3/3/2024 Compiled By Amanuel T. (MSc.) 30
Object oriented system development methodology.
It is a way to develop software by building self-contained modules or objects that
can be easily replaced, modified, and reused.
In an object-oriented environment,
 Software is a collection of discrete objects that encapsulate their data as well as the
functionality to model real-world "objects.“
 An object oriented yields important benefits to the practice of software
construction.
 Each object has attributes and methods
 Objects are grouped into classes
Object-oriented methods enable us to create sets of objects that works together to
produce software that better model their problem domains.

3/3/2024 Compiled By Amanuel T. (MSc.) 31


Cont.
The systems are easier to adapt changing requirements, easier to maintain, more
robust, and promote greater design and code reuse.
 Why an object oriented?
• Easier to adapt to changes
• More robust
• Easier to maintain
• Promote greater design and code reuse
• Creates modules of functionality

3/3/2024 Compiled By Amanuel T. (MSc.) 32


Overview of the unified approach

• Unified Approach (UA) specifies the tasks or steps to develop an application.


• The UA consists of the following concepts:
o Use-case driven approach
o Utilizing the UML for modeling
o Object oriented analysis
o Object oriented design
o Repositories of reusable classes and maximum reuse
o Incremental development and prototyping

NB: An object-oriented philosophy (Reading Assignment)

3/3/2024 Compiled By Amanuel T. (MSc.) 33


Basic concepts of an object
• object has a collection of procedures or methods-things it can do-as reflected in its
package of methods.
• It can represent anything or some real-world entity with which you can associate
properties and behavior.
• Properties or attributes characterize the object, describing its current state.
• Behavior is the way an object acts and reacts, possibly changing its state.
• For example, a car has certain attributes; such as color, year, model, and price, and can
perform a number of operations/methods, such as go, stop, turn left, and turn right.
• For example, employee is an object, class employee declares that all its instances have a name, a
date of birth, an address and a position.
Car
color
year
model
price
go()

3/3/2024 Compiled By Amanuel T. (MSc.) 34


3/3/2024 Compiled By Amanuel T. (MSc.) 35

You might also like