You are on page 1of 50

Hawassa University

Faculty of Informatics
Department of Computer Science

Course Title:- Fundamentals of Software Engineering

Course Code:- CoSc3091

ECTS:- 5
Lecturer: Kibrebeal Getinet
BSc. In Computer Science
MSc. In Information Systems
Mail: mailtokibrebeal@gmail.com
History and overview
Contents
1. Introduction of software
2. Software life cycle
3. Software engineering
4. Software process
5. Software process Model
6. Challenges of Software engineering
What is Software?
 Software is

1. Instructions (Computer programs) that when


executed provide desired function and performance.

2. Data structures that enable the programs to


adequately manipulate information.

3. Documents that describe the operation and use of


the programs.
Software Life Cycle
 It is sequence of different activities in the software

development.

 There are also different deliverables produced.

 Deliverables are objects, such as source code or user

manuals.

 Usually, the activities and deliverables are closely

related.
TYPES OF SOFTWARE LIFE CYCLE ACTIVITIES
 Feasibility

 Determining if the proposed development is worthwhile.

 Market analysis

 Determining if there is a potential market for this product.

 Requirements

 Determining what functionality the software should contain.

o Requirement elicitation

Obtaining the requirements from the user.

o Domain analysis

 Determining what tasks and structures are common to this problem.


 Project planning
 Determining how to develop the software.
o Cost analysis
Determining cost estimates.
o Scheduling
Building a schedule for the development.
o Software quality assurance
Determining activities that will help ensure quality of the
product.
o Work-breakdown structure
Determining the subtasks necessary to develop the product.
 Design

 Determining how the software should provide the


functionality.
o Architectural design
Designing the structure of the system.
o Interface design
Specifying the interfaces between the parts of the
system.
o Detailed design
Designing the algorithms for the individual parts.
Testing

 Executing the software with data to help ensure that the


software works correctly.

o Unit testing

 Testing by the original developer.

o Integration testing

 Testing during the integration of the software.


o System testing

Testing the software in an environment that matches

the operational environment.

o Alpha testing

Testing by the customer at the developer’s site.

oBeta testing

Testing by the customer at the customer’s site.


o Acceptance testing

Testing to satisfy the purchaser.

o Regression testing

Saving tests from the previous version to ensure that

the new version retains the previous capabilities.

Implementation

Building the software.


Delivery
 Providing the customer with an effective software
solution.
oInstallation : Making the software available at the
customer’s operational site.
oTraining: Teaching the users to use the software.
oHelp desk: Answering questions of the user.
Maintenance

 Updating and improving the software to ensure


continued usefulness.
Professional Software Development
 A lots of people write programs for:
 Spread sheet programs (Business people to simplify
jobs).
 Scientist and Engineers write programs (For data
experimentation).
 Program written for own (For Interest and Enjoyment)
 Professional software development is done by teams rather
than individuals.
 It includes techniques that support program specification,
design, coding, and evolution, etc.

 It is maintained and changed throughout its life.


 A professional developed software is often more than a
single program.
 The program usually consists of numbers of separate
programs and configuration of the files, it may include:
System documentation:- Which describes the structure
of the system.
User documentation:-Which describes how to use the
system.
Website for users to download recent product
information.
Figure 1.1:- Frequently asked questions about software
Software Products

 Software engineers are concerned with software


products.

 There are two kinds of software products:

 Generic Products

 Customize(or bespoke) products


Generic Products
 These are:
 Stand-alone Systems
 Produced by a development organization.
 Sold on the open market to any customers.
 Examples:- Software for PCs such as:
 Database software, Word Processors, Drawing Packages,
Project Management Tools, etc.
 The organization that develop the software controls the
software specification.
Customized Products

 The products are commissioned by a particular


customer.
 A software contractor develops a software especially for
the customer.
 Examples: Software to control Systems such as:
Electronic devices, System written to support particular
business process, Air Traffic Control Systems etc.
 The specification usually developed and controlled by
the organization that is buying the software .
What is software engineering?
 Software engineering is the establishment and use of sound
engineering principles in order to obtain economically
software that is reliable and works efficiently on real
machines.
 Software engineering is an engineering discipline that is
concerned with all aspects of software production.
 In this definition, there are two key phrases:
Engineering discipline
All aspects of software production
Engineering Discipline
 Engineers make things work.

 They apply theories, methods and tools where these


are appropriate.

 They try to discover solutions to problems even when


there are no applicable theories and methods.

 Engineers also recognise that they must work to


organisational and financial constraints, so they look
for solutions within these constraints.
All aspects of software production
Software engineering is not just 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.
In general:
 Software engineers adopt a systematic and organised
approach to their work, as this is often the most effective
way to produce high-quality software.
 However, engineering is all about selecting the most
appropriate method for a set of circumstances ,and a more
creative, less formal approach to development may be
effective in some circumstances.
 Less formal development is particularly appropriate for the
development of web-based systems, which requires a blend
of software and graphical design skills.
The software Engineering Layers
• Software engineering can be viewed as layered
technologies. o Provide computerized or semi-
computerized support for Method
and Process layer.
Tools o These are CASE tools.

o Provide technical knowledge for


Method developing software.

o Enables rational and timely


Process development of software.
o Defines set of key process areas.
The software Engineer
Software engineer is a person responsible for the
• Analysis
• Design Of an effective and efficient
• Testing software system
• Implementing
• Maintaining
The software engineering should possess the following
qualities:
• Problem solving skills
• Programming skills
• Design approaches
• Software technologies
• Project management
• Model of the application
Problem- solving skills
• Software engineer should be able to develop
Algorithms
Solve programming problems
Programming skills
• Software engineer
Should be well versed in data structures and
algorithms.
Must be expert in one or more programming language.
Must posses strong programming capabilities.
Design approaches

• Software engineer:

 Should familiar with numerous design approaches.

 Should be able to translate ambiguous requirement


and need into precise specification.

 Should be able to converse with the use of a system


in terms of applications.
Software technologies

• Software engineer:

 Should have a good understanding of software


technologies.

 Should have ability to move among several


levels of abstraction (from stages to stages of
software project).
Project management
• Software engineer
 Should be able to how to make a project work(on time
and budget) in order to produce quality applications and
systems.
Model of Application
• Software engineer
 Should be able to create and use a model of application.
 The model is used to answer to find answers of questions
about the behaviour of the system.
What is Software Process?
 A software process is the set of activities and
associated results that produce a software product.
 There are four fundamental process activities that are
common to all software processes. These are:
1. Software specification where customers and
engineers define the software to be produced and the
constraints on its operation.
2. Software development where the software is
designed and programmed.
3. Software validation where the software is
checked to ensure that it is what the customer
requires.

4. Software evolution where the software is


modified to adapt it to changing customer and
market requirements.
 Different types of systems need different development
processes.

For example:

 Real-time software in an aircraft has to be completely


specified before development begin.

 In e-commerce systems, the specification and the program


are usually developed together.

 Consequently, these generic activities may be organised in


different ways and described at different levels of detail
for different types of software.
However, use of an inappropriate software process
may

o Reduce the quality or

o Usefulness of the software product to be


developed and/or increase the development costs.

Software engineering is related with

 Computer Science.

 System Engineering.
Computer Science:
It is concerned with theories and methods that under
computer and software systems.
System Engineering :
It is concerned with:
 All aspects of the development and evolution of
complex system.
 Hardware development.
 Policy and process development.
 System Development.
 Specifying the system.
 Defining the system overall architecture.
 Integrating the system part to create the final
system.
Software Engineering:
 It is concerned with the practical problems of
producing software.
 Some knowledge of computer science is essential
for software engineering.
What is a software process model?
A software process model is a simplified
description of a software process that presents one
view of that process.
Process models may include activities that are part
of the software process, software products and the
roles of people involved in software engineering.
 Some examples of the types of software process
model that may be produced are:
 A workflow model

It represent the sequence of activities in the process.

It also show the inputs, outputs and their dependencies.

The activities in this model represent human actions.

 A dataflow or activity model

It represent the process as a sets of activities.

Each activities carries some data transformation.

It shows how the input to the process, such as a


specification, is transformed to an output, such as a design.
The activities here may represent transformations carried
out by people or by computers

 A role/action model

This represents:

o The roles of the people involved in the software process.

o The activities for which the people are responsible


What are the costs of software engineering?'

 There is no simple answer to this question as the


distribution of costs across the different activities in
the software process depends on the process used and
the type of software that is being developed.
For example:
 Real-time software usually requires more extensive
validation and testing than web-based systems.
 However,
What are the attributes of good software?
Software products have a number of attributes that

reflect the quality of that software.

These attributes are not directly concerned with

what the software does.

Rather, they reflect its behaviour while it is

executing and the structure and organisation of the

source program and associated documentation.


 Examples of these attributes (sometimes called non-
functional attributes) are the software response time
to a user query and the understand-ability of the
program code.
 The specific set of attributes that you might expect
from a software system obviously depends on its
application.
 Therefore, a banking system must be secure, an
interactive game must be responsive, a telephone
switching system must be reliable, and so on.
Product Description
Characteristics

Maintainability Software should be written in such a way that it may evolve to


meet the changing needs of customers. This is a critical attribute
because software change is an inevitable consequence of a
changing business environment

Dependability Software dependability has a range of characteristics, including


reliability, security and safety. Dependable software should not
cause physical or economic damage in the event of system failure.

Efficient Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Product Description

Characteristics
Usability Software must be usable, without undue effort, by the type of
user for whom it is designed. This means that it should have an
appropriate user interface and adequate documentation.

Portability. The capability to be adapted for different specified environments


without applying actions or means other than those provided for
this purpose in the product.

Reliability. The capability to provide failure-free service..

Table 1: Essential attributes of good software


What are the key challenges facing software engineering?
 Software engineering in the 21st century faces three key
challenges:
 The heterogeneity challenge
o Increasingly, systems are required to operate as distributed
systems across networks that include different types of
computers and with different kinds of support systems.
o It is often necessary to integrate new software with older legacy
systems written in different programming languages.
o The heterogeneity challenge is the challenge of developing
techniques for building dependable software that is flexible
enough to cope with this heterogeneity.
The delivery challenge
o Many traditional software engineering techniques are
time-consuming. The time they take is required to
achieve software quality.
o However, businesses today must be responsive and
change very rapidly. Their supporting software must
charge equally rapidly.
o The delivery challenge is the challenge of shortening
delivery times for large and complex systems without
compromising system quality.
The trust challenge
o As software is intertwined with all aspects of our
lives, it is essential that we can trust mat software.
o This is especially true for remote software systems
accessed through a web page or web service
interface.
o The trust challenge is to develop techniques that
demonstrate that software can be trusted by its
users.
Software Engineering diversity
 There are different application of software engineering,
including:
 Stand-alone application
 Interactive transaction- based application
 Embedded control systems
 Batch processing system
 Entertainment System
 System for modelling and simulations
 Data collection systems
 Systems of systems
Professional and ethical responsibility
 Software engineering is carried out within a legal and social
framework that limits the freedom of engineers.

 Software engineers must accept that their job involves wider


responsibilities than simply the application of technical
skills.

 They must also behave in an ethical and morally responsible


way if they are to be respected as professionals.

 It goes without saying that you should always uphold normal


standards of honesty and integrity.
 You should not use your skills and abilities to behave in a
dishonest way or in a way that will bring disrepute to the
software engineering profession.

 However, there are areas where standards of acceptable


behaviour are not bounded by laws but by the more tenuous
notion of professional responsibility. Some of these are:

 Confidentiality

 Competence

 Intellectual property rights

 Computer misuse
Reading Assignment
Case Studies: Read about
A. An Insulin Pump Control System.
B. A patient Information System for Mental Health Care.
C. A wilderness Weather Station.
Questions
1. What are they key features of MHC-PMS?
2. What are the kinds of Wilderness of Weather Station System?
3. What kinds of the Insulin Pump Control System is?
Reference book: Software Engineering 9th edition, Ian
Sommerville pp. 15-21.

You might also like