Software Engineering Unit 1

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 53

SOFTWARE ENGINEERING

Richard Ngalu
Introduction
What is Software?

The product that software professionals build and then


support over the long term.
Software encompasses: (1) instructions (computer programs)
that when executed provide desired features, function, and
performance; (2) data structures that enable the programs to
adequately store and manipulate information and (3)
documentation that describes the operation and use of the
programs.
3
Software products
• Generic products
• Stand-alone systems that are marketed and sold to any customer who wishes to buy
them.
• Examples – PC software such as editing, graphics programs, project management tools;
CAD software; software for specific markets such as appointments systems for dentists.
• Customized products
• Software that is commissioned by a specific customer to meet their own needs.
• Examples – embedded control systems, air traffic control software, traffic monitoring
systems.

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.

• The Main aspect of achieving these aspects is fluidity in the processes


(Processes in development and maintenance of software)
Factors that Enhance Quality and Productivity
Management Issues

• Software projects need to have managers/supervisors


• Often times these come from administrative circles and not technical
gurus
• This creates a hostile environment as there is very little understanding of
requirements and expectations
• But Often times technical people don’t have managerial Capabilities
Managers Responsibility in SE
Managers also have the responsibility for ensuring that software products are
delivered on time and within cost estimates and that products exhibit the
functional and quality attributes desired by the customer. Other management
responsibilities include developing business plans, recruiting the customers,
developing marketing strategies and recruiting and training employees
Management problems that are to be solved
1.Planning Problem
2.Procedures and techniques for the selection of project managers are poor.
3.The accountability of many software engineering projects is poor leaving
some questions as to who is responsible for various project functions.
4.The ability to accurately estimate the resources required to accomplish a
Software development project is poor.
5.Success criterion for software development projects are frequently
inappropriate. This results in software products that are unreliable difficult to
Use and difficult to maintain.
6.Decision rules to aid in selecting the proper organizational structure are not
available.
7 .Decision rules to aid in selecting the correct management techniques for.
Software engineering projects are not available.
8.Procedures methods and techniques for designing a project control system that
Will enable project managers to successfully control their project are not readily
available.
9.Procedures,techniques,strategies and aids that will provide visibility of
Progress to the project manager are not available.
10.Standards and techniques for measuring the quality of performance and
the
Quality of production expected from programmers and data processing
analysts are not available
Solution to Management Problem
• Educate
• Train
• Good analysis of past, present and future projects
• Ensure standards and procedures
• Clearly define objectives
• Establish goals and milestones
• Allow for contingency planning
• Managers should be selected based on ability to manage projects rather
than on technical knowledge or availability
• Software developers should have specific jobs/modules/tasks to allow for
performance indicators
Planning a Software Project

WHY DO SOFTWARE PROJECTS FAIL?

• 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

What is a Software Development Process?


Planning the Development Process
• The first consideration in the development process is to consider software
Product lifecycle model
• The software lifecycle includes all activities that are required to
define,develop,test,deliver, operate and maintain a software product
• There are different lifecycle models so it is imperative for the team to
agree on a model as this enhances communication, good resource
allocation,Manageability, product quality and reliability
Lifecycle Models

• Phased Model
• Cost Model
• Prototype Model
• Successive versions model
Phased Model

• The Phased Model consists of 5 prominent stages/phases


• Analysis Phase
• Design Phase
• Implement Phase
• System Testing
• Maintenance Phase
The Phased model has a lot of reviews as stipulated in the table below
Software Requirements Specification
The Cost Model
Prototype Model
• The basic idea in Prototype model is that instead of freezing the requirements
before a design or coding can proceed, a throwaway prototype is built to
understand the requirements. This prototype is developed based on the
currently known requirements. Prototype model is a
software development model. By using this prototype, the client can get an
“actual feel” of the system, since the interactions with prototype can enable the
client to better understand the requirements of the desired system.  Prototyping
is an attractive idea for complicated and large systems for which there is no
manual process or existing system to help determining the requirements.
Successive version Model
• It is an extension of the Prototype model also known as Evolutionary
model

Planning an Organisational Structure
• “today’s major problems with software development are not technical problems, but
management problems”
Management Functions & Activities
• Functions of management
• Planning
• Organizing
• Staffing
• Directing (leading)
• Controlling
Project Structure

• 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

You might also like