0% found this document useful (0 votes)
32 views71 pages

#Chapter 1-1

The document provides an overview of software engineering, including definitions, key concepts, and the software development life cycle. It discusses traditional and object-oriented development techniques. It also covers the importance of software engineering principles like requirements analysis, design, implementation, testing, and maintenance in the software development process.

Uploaded by

Dani Getachew
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)
32 views71 pages

#Chapter 1-1

The document provides an overview of software engineering, including definitions, key concepts, and the software development life cycle. It discusses traditional and object-oriented development techniques. It also covers the importance of software engineering principles like requirements analysis, design, implementation, testing, and maintenance in the software development process.

Uploaded by

Dani Getachew
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/ 71

Software Engineering

Mattu University
Engineering and Technology College
Department of Computer Science

Software Engineering

Target Dept.:- Computer Science 3rd year Regular

Prepared by: Diriba G.(Msc in CSE)


Chapter one

Software Engineering: Overview


 Software engineering is concerned with theories, methods and

tools for professional software development.

 Software engineering is the process of designing, developing,

testing, and maintaining software. It is a systematic and disciplined


approach to software development that aims to create high-quality,
reliable, and maintainable software.
Cont’d…

Software Engineering: Overview


 The economies of ALL developed nations are dependent on

software.
 More and more systems are software controlled.

 Software costs

 Software costs often dominate computer system costs.

 The costs of software on a PC are greater than hardware cost.


Cont’d…
Software Engineering: A Problem Solving Activity(Why?)
 Because it focus on: Analysis that deals with understand the nature of the
problem and break the problem into pieces
 For problem solving we use

 Techniques (methods):

 Formal procedures for producing results using some well-defined notation

 Methodologies:
 Collection of techniques applied across software development and unified by a
philosophical approach

 Tools:
 Instrument or automated systems to accomplish a technique
Software : Definition
 Software is a Computer programs and associated documentation such
as requirements, design models and user manuals.
 Software products may be developed for a particular customer or
may be developed for a general market.
 Software products may be

 Generic- developed to be sold to a range of different customers


e.g. PC software such as Excel or Word.
 Bespoke (custom)- developed for a single customer according to their
specification.

e.g. control systems for electronic devices, air traffic control systems.
Software : Definition…
 New software can be created by:

 developing new programs, configuring generic software or reusing


existing software.

 Types of software based on potential application


 System software. (ex: operating system,…)
 Real-time Software. (ex: Browser,…)
 Business Software(ex:Marketing automation software
 ,payroll)
 Artificial intelligence (adding extra functionality to computers) and so
on
Software : Attributes of good software?
 The software should deliver the required functionality and performance
to the user and should be maintainable, dependable and acceptable.
 Maintainability

 Software must evolve to meet changing needs;

 Dependability
 Software must be trustworthy;

 Efficiency
 Software should not make wasteful use of system resources;

 Acceptability
 Software must accepted by the users for which it was designed. This means it must be
understandable, usable and compatible.
Software Engineering: Definition

 Is an engineering discipline that is concerned with all aspects of

software production.

 Software Engineering is a collection of techniques, methodologies and

tools that help with the production of:

a high quality software system

 with a given budget

 before a given deadline

while change occurs


Software Engineering: Definition…

 Software engineers should

 Adopt a systematic and organized approach to their work.

 Use appropriate tools and techniques depending on the problem to


be solved, the development constraints and the resources available.

 Not only concerned with the technical processes of software


development but also with activities such as software project management
and with the development of tools, methods and theories to support
software production.
Software Engineering: Definition…
 Well Engineered Software's: is one that has the following
characteristics:
 It is reliable / consistent
 It has good user-interface
 It has acceptable performance
 It is of good quality
 It is cost-effective
 Stake holders in software engineering
 Users: The end user of the software.

 Customers: Those who pay for the software.

 Software developer: Software engineer.

 Development managers: manage production process- Planning,


Timing(delivery), Budgeting, Human resource, etc.
Software Engineering: Definition…

 Quality of Software Engineer

 Problem solving skill quality.

 Programming skill (for coding).

 Design approach: - translation of requirements into prototype.

 Software technologies: - update themselves with new technologies.

 Project management quality:

 Modelling: - application of software modelling tools.


Software Engineering: Definition…

 Key challenges facing Software Engineer

 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.
Software Engineering: Definition…
 Explain the difference between software engineering
and computer science?
 Computer science is concerned with theory and fundamentals;
 Software engineering is concerned with the practicalities of
developing and delivering useful software.
 Some knowledge of computer science is essential for software
engineers in the same way that some knowledge of physics is
essential for electrical engineers.
Software Engineering: Definition…
 Professional and ethical responsibility
 Software engineers must behave in an honest and ethically responsible way
if they are to be respected as professionals.
 Issues of professional responsibility:
 Confidentiality
 Engineers should respect the confidentiality of their employers or
clients.
 Competence
 Engineers should not misrepresent their level of competence.
 Intellectual property rights
 They should be aware of laws of intellectual property such as
patents, copyright.
 Computer misuse
 Should not use their technical skills to misuse other people‟s
computers.
1.2. Two Orthogonal View of Software

Two Orthogonal view :


1. Traditional development technique
2. Object oriented system development

Traditional technique
 View software as a collection of programs or functions.
 A system that is designed for performing certain actions.
 Algorithms + Data Structures = Programs.
 Software Development Models (Waterfall, Spiral, Incremental, etc..)
 Moving from one phase to another phase is complex.
 Increase duration of project.
Cont’d…
Object oriented system development technique
 OO development offers a different model from the traditional software 
based on functions and procedures.
 Concern on objects, that encapsulate their data as well as the
functionality.
 Each object has attributes (properties) and method (procedures).
 software by building self contained modules or objects that can be easily
REPLACED, MODIFIED and REUSED.
 Objects grouped in to classes and object are responsible for itself.
Six ideas characterize object-oriented systems’ programming:
 Object
 Class
 Message
 Encapsulation
 Inheritance
 Polymorphism
Cont’d…
Difference between Traditional and Object Oriented Approach
1.3. Software Development process model
Software Process?
 A set of activities whose goal is the development or evolution of
software.
 Generic activities in all software processes are:
 Specification - what the system should do and its development
constraints.
 Development – production of the software system
 Validation - checking that the software is what the customer
wants
 Evolution - changing the software in response to changing
demands
 A software process model is an abstract representation of a
process. It presents a description of a process from some particular
perspective.
Cont’d…
Software Process…
Cont’d…
Software Development Life Cycle (SDLC)
 has several clearly defined phases
 Requirements gathering( What does the user want?)
 Feasibility analysis
 Systems analysis :Understanding/documenting requirements
 Design: Planning a possible solution
 Implementation: Building a solution
 Testing the implementation: Ensuring it meets requirements
 Maintenance
(Take below point clearly to understand well)
 Requirements gathering and systems analysis are performed
iteratively.
 Design/Implementation/Testing are done sequentially.
Cont’d…
 Requirements gathering and analysis
 The requirement is the first stage in the SDLC process.
 It is conducted by the senior team members with inputs from
all the stakeholders and domain experts in the industry.
 Planning for the quality assurance requirements and recognition
of the risks involved is also done at this stage.
 This stage gives a clearer picture of the scope of the entire project
and the anticipated issues, opportunities, and directives which
triggered the project.
 Requirements Gathering stage need teams to get detailed and
precise requirements. This helps companies to finalize the
necessary timeline to finish the work of that system.
Cont’d…
 Feasibility Study
 Once the requirement analysis phase is completed the next sdlc
step is to define and document software needs.
 This process conducted with the help of „Software Requirement
Specification‟ document also known as „SRS‟ document.
 There are mainly five types of feasibilities checks:
• Economic: Can we complete the project within the budget or not?
• Legal: Can we handle this project as cyber law and other regulatory
framework/compliances.
• Operation feasibility: Can we create operations which is expected by the
client?
• Technical: Need to check whether the current computer system can
support the software
• Schedule: Decide that the project can be completed within the given
schedule or not.
Cont’d…

 Design
 In this third phase, the system and software design documents
are prepared as per the requirement specification document.

 This helps define overall system architecture.

 This design phase serves as input for the next phase of the
model.
Cont’d…
 Coding
 Once the system design phase is over, the next phase is coding.
 In this phase, developers start build the entire system by
writing code using the chosen programming language.
 In the coding phase, tasks are divided into units or modules and
assigned to the various developers.
 It is the longest phase of the SDLC process.
 In this phase, Developer needs to follow certain predefined
coding guidelines.
 They also need to use programming tools like compiler,
interpreters, debugger to generate and implement the code.
Cont’d…
 Testing
 Once the software is complete, and it is deployed in the testing
environment.
 The testing team starts testing the functionality of the entire
system.
 This is done to verify that the entire application works according
to the customer requirement.
 During this phase, QA and testing team may find some
bugs/defects which they communicate to developers.
 The development team fixes the bug and send back to QA for a
re-test.
 This process continues until the software is bug-free, stable, and
working according to the business needs of that system.
Cont’d…
 Installation / Deployment
 Once the software testing phase is over and no bugs or errors left
in the system then the final deployment process starts.
 Based on the feedback given by the project manager, the final
software is released and checked for deployment issues if any.
 Maintenance
 Once the system is deployed, and customers start using the
developed system, following 3 activities occur
• Bug fixing – bugs are reported because of some scenarios
which are not tested at all
• Upgrade – Upgrading the application to the newer versions
of the Software
• Enhancement – Adding some new features into the existing
software
Cont’d…
Cont’d…
 Software Development Process / Software Engineering process
 A process used to create a software system
 Consists of:
• Methods (steps)
– A sequence of step-by-step approaches that help develop
the information system.
• Techniques
– Processes that the analyst follows to ensure thorough,
complete and comprehensive analysis and design
• Tools
– Computer programs that aid in applying techniques
Cont’d…
What are software engineering methods?
 Tools + steps + techniques= methodology
 Well organized and Structured approaches to software development
which include system models, notations, rules, design advice and
process guidance.
 Model descriptions
• Descriptions of graphical models which should be produced;
 Rules
• Constraints applied to system models.
 Recommendations
• Advice on good design practice.
 Process guidance
• What activities to follow.
Cont’d…
Why is the SDLC important?
 It provides a standardized framework that defines activities and
deliverables.
 It aids in project planning, estimating, and scheduling.
 It makes project tracking and control easier.
 It increases visibility on all aspects of the life cycle to all stakeholders.
 It increases the speed of development.
 It improves client relations.
 It decreases project risks.
 It decreases project management expenses and the overall cost of
production.
Cont’d…
Software Development Process Model
 A simplified representation of a software process, presented from a
specific perspective.
 Generic process models
 Waterfall (linear sequential)
 Prototyping
 Iterative (Evolutionary)development)
 RUP – Rational Unified Process
 Process Iteration models
 Incremental and Spiral development
 Other current software development process models
 Agile
 Cleanroom
 DSDM - Dynamic Systems Development Method
 RAD - Rapid Application Development
 XP – eXtreme Programming
 V-Model
Cont’d…
1. Waterfall Model of SDLC
Cont’d…
Discussion of Waterfall Model

Advantages:
 Process visibility: well known by non-software parties making it easier to
communicate.
 Dependence on individuals: good model to use when requirements are well
understood and are quite stable.
 Easy for Quality and cost control

Disadvantages:
 Inflexible partitioning of the project into distinct stages
 This makes it difficult to respond to changing customer requirements
This model is only appropriate when the requirements are well-understood
Each stage in the process reveals new understanding of the previous stages, that
requires the earlier stages to be revised.
Cont’d…
When to use Waterfall Model

 It works well for products that are well understood and whose
technical methodologies are also clear.

 It also works well for projects that are repeats of earlier work
such as migration, updates, new releases.

 When developing HRMS having had the experience of similar


reporting in the Payroll Systems.
Cont’d…
2. Prototyping (Evolutionary) Model
 What is a Prototype?
 It is a quickly developed, easily modifiable and extendible
working model of the required application.
 A prototype does not necessarily represent the complete system.
 Building a scaled-down working version of the system
 Analysts work with users to determine the initial & basic
requirements for the system.
• The analyst then quickly builds a prototype.
• When the prototype is complete, the users work with him/her & tell what
they like & don‟t like about it.
• The analyst uses this feedback  improve the prototype & takes the new
version back to the users
 This iterative process continues until the users are relatively
satisfied.
Cont’d…
Evolutionary (Prototyping) development Model
Cont’d…
Discussion Prototyping Model
 Advantages:
• Users are involved in the Analyses & Design process
• Captures requirements in concrete form, rather than verbal/abstract
form
 Disadvantages
• Insufficient analysis
• User confusion of prototype and finished system
• Excessive development time of the prototype
• Expense of implementing prototyping
 When to use
• When requirement are not known at the beginning and unstable.
• When quick demonstration required
• For small or medium-size interactive systems;
• For parts of large systems (e.g. the user interface);
Cont’d…
3. Component based software engineering Model
 This Model based on systematic reuse where systems are integrated
from existing components or COTS (Commercial-off-the-shelf)
systems.
 Process stages
 Component analysis;
 Requirements modification;
 System design with reuse;
 Development and integration.
 This approach is becoming increasingly used as component
standards have emerged.
Cont’d…
Reuse oriented development
Cont’d…
4. Process Iterative Model
 System requirements ALWAYS evolve in the course of a project so
process iteration where earlier stages are reworked is always part of
the process for large systems.

 Iteration can be applied to any of the generic process models.

 Two (related) approaches

1. Incremental delivery;

2. Spiral development.
Cont’d…
Iterative development Model
Cont’d…
1. Incremental delivery
 Rather than deliver the system as a single delivery, the development
and delivery is broken down into increments with each increment
delivering part of the required functionality.

 User requirements are prioritised and the highest priority


requirements are included in early increments.

 Once the development of an increment is started, the requirements


are frozen though requirements for later increments can continue to
evolve.
Cont’d…
Incremental delivery …
Cont’d…
Incremental development …
Advantages
 Customer value can be delivered with each increment so system functionality
is available earlier.
 Early increments act as a prototype.
 Lower risk of overall project failure.
 The highest priority system services tend to receive the most testing.
 Dis-advantages
 Use of the Incremental Model requires careful partitioning of the system.
 Total cost is higher than waterfall.
 Lack of early planning may cause project management problems: unknown
schedules, budgets and deliverables.
 When to use
 With lengthy projects, When new technology is being used.
 When it is too risky to develop the overall system as one block.
Cont’d…
2. Spiral Model – as part of evolutionary process
 is a software development process combining elements of both
prototyping-in-stages and sequential waterfall models
 combines advantages of top-down and bottom-up concepts.
 is intended for large, expensive and complicated projects.
 Process is represented as a spiral rather than as a sequence of
activities with backtracking.
 Each loop in the spiral represents a phase in the process.
 No fixed phases such as specification or design - loops in the spiral
are chosen depending on what is required.
 Risks are explicitly assessed and resolved throughout the process.
Cont’d…
Spiral Life Cycle Model
Cont’d…
Spiral development…
 Advantage of Spiral Model
 The spiral model promotes quality assurance through prototyping at each
stage in systems development.
 There are many evolutionary process models
 Weakness
 It requires excellent project management skills.
 It demands expert knowledge of risk analysis and management.
 When to use
 Projects that would benefit the most are those that would be built on untested
assumptions.
5.RUP (Rational Unified Process)

What is process?

Defines Who is doing What, When to do it, and How to


reach a certain goal.

New or changed New or changed


Software Engineering
requirements Process system

#Read as a reading assignment for additional…


6.Agile Software Process Model

 The agile methodology produces ongoing release cycles:


 each featuring small, incremental changes from the
previous release.
 At each iteration, the product is tested.
 The agile model helps teams identify and address small
issues in projects before they evolve into more significant
problems.
 Teams can also engage business stakeholders and get their
feedback throughout the development process.
 The Agile SDLC model has recently become increasingly
popular and in demand.(why?)
Agile Software Process Model
Cont’d…
Cont’d…
 Agile SDLC model is a combination of iterative and
incremental process models with focus on process
adaptability and customer satisfaction by rapid delivery of
working software product.
 Agile Methods break the product into small incremental
builds.
 These builds are provided in iterations.
 Each iteration typically lasts from about one to three weeks.
Cont’d…
 The most popular Agile methods include:
 Rational Unified Process (1994),
 Scrum (1995),
 Crystal Clear,
 Extreme Programming (1996),
 Adaptive Software Development,
 Feature Driven Development, and
 Dynamic Systems Development Method (DSDM) (1995).
 These are now collectively referred to as Agile
Methodologies, after the Agile Manifesto was published in
2001.
Cont’d… pros & cons of Agile Model
 The advantages of the Agile Model are as follows −
 Suitable for fixed or changing requirements
 Little or no planning required and Easy to manage.
 It allows more flexibility to adapt to the changes.
 The new feature can be added easily.
 Customer satisfaction as the feedback and suggestions are taken
at every stage.
 The dis-advantages of the Agile Model are as follows -
 Lack of documentation.
 Agile needs experienced and highly skilled resources.
 If a customer is not clear about how exactly they want the
product to be, then the project would fail.
7.V-shaped Model
 In the V-shaped model, verification phases and validation
phases are run in parallel.
V Model pros & cons
 The advantages of the V-Model method are as follows
 highly-disciplined model and Phases are completed one at a time.
 Works well for smaller projects where requirements are very well
understood.
 Simple and easy to understand and use.
 The disadvantages of the V-Model method are as
follows
 High risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a
moderate to high risk of changing.
Process assessment model
 A software process assessment is an appraisal, or review, performed by
a trained team of software professionals.
 Its purpose is፡
 To determine the current state of an organization's software
process,
 To identify areas of strength and weaknesses,

 To identify the highest priority process issues, and

 To facilitate improvement actions.

 A good assessment requires a competent team, sound leadership, and


a cooperative organization.
Cont’d…

 A software assessment (or audit) can be of 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).
Software Metrics
 A software metric is a measure of software characteristics which are
measurable or countable.
 Software metrics are valuable for many reasons, including measuring
software performance, planning work items, measuring productivity,
and many other uses.
Classification of Software Metrics
 Software metrics can be classified into three types as follows:
1. Product Metrics:
2. Process Metrics:
3. Project Metrics:
Cont’d…
1. Product Metrics: These are the measures of various characteristics
of the software product. The two important software characteristics
are:
 Size and complexity of software.

 Quality, performance and reliability of software.


 These metrics can be computed for different stages of SDLC.
2. Process Metrics: To optimize software development and
maintenance, process metrics can be used.
 For example, the efficiency of fault detection. They are used to measure the
characteristics of methods, techniques, and tools that are used for developing
software.
3. Project Metrics - The characteristics and execution of a project are
described by project metrics.
 The number of software developers, staffing patterns across the software life
cycle, cost, scheduling, and productivity are all examples of factors to consider.
Cont’d…
 Why measure software?
 Software projects are famous for running over schedule and budget,
yet still having quality problems.
 Software measurement lets one to quantify schedule, work effort,
product size, project status, and quality performance.
 What to measure?
 One can measure many aspects of the software products, projects,
and processes.
1.4. Object Oriented System Development
Methodology
 Object-oriented system analysis and design (OOSAD)

is a popular technical approach for

 analysing,

 designing an application, system, or business

 by applying the object oriented paradigm and

 visual modelling throughout the development life cycles


for better communication and product quality.
Cont’d…

 Object-oriented programming (OOP) is a method

 based on the concept of “objects",

 which are data structures that contain data,

 in the form of fields,

 often known as attributes;

 and code, in the form of procedures,

 often known as methods.


Cont’d…
Benefits of OO-system analysis and design
 Faster development,

 reusability. Objects are reusable,

 Increased quality

 Tackle more challenging problems

 Reduced Application Backlog and Maintenance Burdon.

 Manage Complexity by abstraction

 …
Why We Need Object-Orientation ?

 because it produces a systems that are easier to evolve,


more flexible, more robust and more reusable than
traditional approach.
 It adapts to:
 Changing requirements

 Easier to maintain

 More robust

 Promote greater design

 Code reuse
Cont’d…

 Others

 Higher level of abstraction

 Seamless transition among different phases of software


development.

 Encouragement of good programming technique.

 Promotion of reusability.
OVERVIEW OF UNIFIED APPROACH

 The unified approach (UA) is a methodology for software

development.
 UA utilizes the unified modelling language (UML) which is a set

of notations and conventions used to describe and model an


application.
Object Oriented Philosophy

 The programming languages provide the programmers the way of

describing the process.

 The ease of description, reusability, extensibility, readability,

computational efficiency, and ability to maintain depends on


languages used.

 Object-Oriented Programming Concepts allows closer ideas and terms

for the development of certain applications.


Cont’d…

EXAMPLES OF OBJECT ORIENTED SYSTEMS

 In OO system , “everything is object”.

 A spreadsheet cell, bar chart, title in bar chart, report,

numbers, arrays, records, fields, files, forms, an invoice, etc.

 A window object is responsible for things like opening,

sizing, and closing itself.

 A chart object is responsible for things like maintaining

data and labels even for drawing itself.


Basic concepts of an Object…
 Since you have learnt the objet in OOP, it won‟t be the major focus
of this course. Therefore for additional read the following as a
reading assignment:
 What is an object, object‟s methods and object‟s attributes and also

 Inheritance

 Methods and Message


 Polymorphism

 Encapsulation

 Abstraction

 Coupling and Cohesion


 Interfaces, Components, Patterns
End of Chapter One

You might also like