You are on page 1of 42

Software Engineering

Basic Concepts
Sources: 1. Software Engineering & Testing by Agarwal, Tayal, Gupta 2. Software Engineering by Pressman

Mrs. Ma. Christina Florentino CITE Faculty

November 8, 2011

Software Engineering, 2nd Sem. 2011-12

Introduction to Software
Definition:
It is a set of instructions used to
Acquire inputs Manipulate inputs to produce output

Includes:
Instructions Data Structures Documents that describes the operation and use of the programs

IEEE: It is a collection of computer programs, procedure rules and associated documentation and data
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Importance of Software
It is the engine that drives business decision making Serves as the basis for modern scientific investigation and engineering problem-solving Embedded in all kinds of systems

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Types of Software
2 Categories:
1. System Software. OS and all utilities that enables the computer the function 2. Application Software. Programs that do real work for users.

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Classes of Software
1. Generic Software. Designed for broad customer market whose requirements are very common, fairly stable and well understood by the software engineer. - sold in the open market - there could be several competitors in the market
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Classes of Software
2. Customized Software. Developed for a customer where domain, environment and requirements are unique to that customer and cannot be satisfied by generic products

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Generic vs. Customized


Developer manages Generic products; customer manages customized product Requirements and specifications of a generic product is controlled by the developer

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Introduction to Software Engineering IEEE Definition:


SE is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Introduction to Software Engineering Other Definition:


SE deals with cost-effective solutions to practical problems by applying scientific knowledge in building software artifacts in the service of mankind

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Introduction to Software Engineering Other Definition:


SE is a discipline whose aim is the production of fault free software that satisfies the users needs and that is delivered on time and within budget

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Principles

TOOLS

METHODOLOGIES

METHODS AND TECHNIQUES

PRINCIPLES
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Engineering Principles


Rigor and formality Separation of concerns
Modularity and decomposition Abstraction

Anticipation of change Generality Incrementality Scalability Compositionality Heterogeneity


November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Characteristics
1. Most software is custom-built, rather than assembled from existing components. 2. Software is developed or engineered; it is not manufactured in the classical sense. 3. Software is flexible. 4. Software doesnt wear out.
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

The Bathtub Curve

Reliability Studies for Hardware Products


November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Curve

Failure Intensity

-Software becomes reliable over time -It becomes obsolete if the environment it was developed changes

Time
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Crisis
Crisis problems and causes encountered in the different stages of software development

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Crisis
Problems
Schedules and cost estimates are often grossly inaccurate The Productivity of software people hasnt kept pace with the demand for their services The quality of the software is sometimes less than adequate With no solid indication of productivity, evaluation is impossible Communication between developer and customer is often poor Software maintenance tasks devour the majority of all software funds
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Crisis
Causes
The quality of the software is not good because most developers use historical data to develop the software If there is delay in any process or stage then scheduling does not match the actual timing Communications can break down because the special characteristics of software and problems associated with its development are misunderstood The software people responsible for tapping the potential often change when it is discussed and resist change when it is introduced
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Crisis

from the programmers point of view

Problem of Compatibility Portability In documentation Piracy of software Coordination of work of different people Proper maintenance
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Crisis

from the users point of view

Software cost is very high Hardware goes down Problem of different versions of software Problem of views Problem of bugs

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Myths
If we get behind schedule, we can add more programmers and catch up If we decide to outsource the software product to a third party, we can just relax and let that firm build it. Project requirement continuously changes, but changes can be easily accommodated because software is flexible
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Myths
The only deliverable work product for a successful project is the working program Software with more features is a better software Once we write the program and get it to work, our job is done
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Myths
Until we get the program running, we have no way of assessing its quality Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down A general statement of objectives is sufficient to begin writing programs; we can fill in the details later
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Applications
Applications are grouped into 8 areas 1. System Software 2. Real-time Software 3. Embedded Software 4. Business Software 5. Personal Computer Software 6. Artificial Intelligence Software 7. Web-based Software 8. Engineering and Scientific Software
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Applications:

System Software
Used to run the system as an assistance to other software programs Ex: compilers, editors, utilities, OS components, drivers, interfaces

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

Real-Time Software
Deals with the changing environment; it collects input, converts it to digital, control component that responds to the external environment and performs actions Monitors, controls and analyze realworld events as they occur Ex: Rocket launching, games, etc.
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Applications:

Embedded Software
Written to perform certain functions under control conditions and is further embedded into hardware as part of a large systems Also called intelligent software

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

Business Software
Designed to process and drives business applications through on-line or real-time mode Ex: accounting packages, MIS, payroll, inventory

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

Personal Computer Software


Ex: word processing, spreadsheets, computer graphics, etc.

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

AI Software
Uses non-numeric algorithms to solve complex problems Ex: robotics, expert systems, pattern recognition, neural networks, theorem proving, game playing, signalprocessing software

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

Web-Based Software
Included the languages by which web pages are processed

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Applications:

Engineering and Scientific Software Written for specific applications using the principles and formulae of each field

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes


Process a series of that steps involving activities, constraints, and resources that produce an intended output of some kind. Software Process a set of activities whose goal is the development or evolution of software
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes


Four Fundamental process activities:
1. 2. 3. 4. Software Specifications Software Development Software Validation Software Evolution

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes

Software Specifications
The functionality of the software and constraints on its operation must be defined

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes

Software Development
Software that meets the specifications must be produced

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes

Software Validation
The software must be validated to ensure that it does what the customer wants

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Software Engineering Processes

Software Evolution
The software must evolve to meet changing customer needs

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Some Terminologies
Deliverables and Milestones
Deliverables are generated during software development Milestones are the events that ascertain the status of the project

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Some Terminologies
Product and Process
Product is what is delivered to the customer (deliverables) Process is the way we produce software

November 9, 2011

Software Engineering, 2nd Sem. 2011-12

Some Terminologies
Measure, Metrics, Indicators
Measures provides a quantitative indication of amount, dimension, capacity, or size of a given attribute of a product Metrics are quantitative measure of the degree to which a system possesses a given attribute of a product Indicators are is a combination of metrics
November 9, 2011 Software Engineering, 2nd Sem. 2011-12

Programs vs. Software Products


Programs Developed by individuals for their personal use Small in size Single user Single developers Lack proper documentation Adhoc development Lack of user interface Limited functionality
November 9, 2011

Software Product Developed by a group of engineers working as a team Usually large in size Large number of users Team of developers Good documentation support Systematic development Good user interface More functionality
Software Engineering, 2nd Sem. 2011-12

You might also like