Software Engineering Unit 1
Software Engineering Unit 1
Software Engineering Unit 1
Richard Ngalu
Introduction
What is Software?
4
Why Software is Important?
• The economies of ALL developed nations are dependent on software.
• More and more systems are software controlled ( transportation, medical,
telecommunications, military, industrial, entertainment,)
• Software engineering is concerned with theories, methods and tools for
professional software development.
• Expenditure on software represents a
significant fraction of GNP in all developed countries.
Why Software Projects Fail
• According to the Standish Group in 1995, only 16% of software projects
were successful, 53% challenged (that is cost overruns, budget overruns or
content deficiencies) and 31% cancelled. ... A good starting point is by
addressing some of the key reasons software projects fail.
Software Engineering Definition
The seminal definition:
[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.
The IEEE definition:
Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study of
approaches as in (1).
SE GOALS
• Improve software quality
• Production of cost Effective Software solutions
• Standardise development
• Bring order in the software development process
• Minimise intellectual distance between problem and solution
SIZE FACTORS
• This is where we look at the effort that is devoted to development and
maintenance of Software and the distribution of efforts in the activities
their in. Size Factors also looks at general categories of software projects
• Current demand for software technologists exceeds the available supply
and it is Estimated that demand will exceed supply by750,000 to
2,000,000 people in the future. Thus, a major goal of software engineering
is to provide tools and techniques to increase the productivity of the
available software engineers.
Distribution of Effort
Software lifespan is:
• 1-3 years in development
• 5-15 years in use (maintenance)
The Distribution effort:
• Between development and maintenance= 40/60, 10/90, 30/70
• Mantenance=enhancement,adaptationandcorrection=60, 20, 20
• Development=Analysis and design,Implementation, integration and
acceptance testing=40,20,40
Project Size Categories
• Size, in a software development context, is the complete set of business
functionalities that the end user gets when the product is deployed and in
use. And the person months required to produce the software application
of a given size is the effort. (To clear confusion on size and effort)
• Project size determines the resources required for the software
development project
Size Categories
How Programmers/Software Engineers Spend
Their Time
Skills that Programmers/Software Engineers
Lack
Quality and Productivity Factors
• The major goals of software engineering is to promote quality and
enhance productivity and efficiency of programmers and software project
teams.
• Most projects fail because of Lack of planning and insight. A project can
go beyond budget, have uncommitted staff and go beyond estimated
timelines all because of lack of planning
Problem Definition
Developing a solution Strategy
Planning the Development Process
Defining The Problem
• The first step in Software Engineering is problem definition
• This should be defined from a customers perspective and documented in a
form that a customer can easily understand (problem Statement)
• The Problem statement should highlight the major constraints and issues
as well as a path to a solution
• This process requires high levels of skill in analysis and also knowing
how to communicate a computerised solution to a layman
• It is important when defining a problem and suggesting a computerised
solution to give the product owner options that are cost effective and
efficient
• The computerised solution should also define the subsystems that are part
of the main system (Helps define modules for programmers)
• Each subsystem characteristics have to be defined including constraints
and skills required for the development of the subsystems
Goals and Requirements
• After defining the problem statement preliminary goals and requirements
are then defined
• These set the framework for the project
• Goals can be qualitative and quantitative
• Goals apply to the development process and the Product
Qualitative and Quantitative Process and
Product goals
Requirements
Quality Attributes
• The Highlevel goals and Requirements can best be defined in terms of
attributes of the system to be Developed.
• There are several well known Quality attributes that every system must
attain to have
Factors to Consider when Planning a Project
Factors to Consider When Setting Goals
Software Development Process
• Phased Model
• Cost Model
• Prototype Model
• Successive versions model
Phased Model
• Functional format
• Each Phase of the project is conducted by different teams
• Project Format
• One team takes the project from start to finish (Project team)
• Matrix Format
• Each Function has a management team behind it. Works well when an organization is
working on more than one project
Programming Team Structures
• In any form of project structure there must be a structure for the
programming team to allow for smooth operations within the
programming domain
• There are 3 basic programming Team structures
• Democratic Team
• Chief Programmer Teams
• Hierarchical Teams
Democratic Teams
• Every team is part of the decision Making
• Its also called an egoless Team thus every member is equal
•
Chief Programmer Team
Hierarchical Team Structure
Other Planning Activities