Anda di halaman 1dari 16

Radiant info school kandy BCS DIPLOMA S/E

software engineering

Software is

(1) instructions that when executed provide desired function and performance
(2) data structures that enable the programs to adequately manipulate information, and
(3) documents that describe the operation and use of the programs.

So Software is both a product and a vehicle for delivering

To gain an understanding of software, it is important to examine the characteristics of


software that make it different from other things that human beings build. When
hardware is built, the human creative process (analysis, design, construction, testing) is
ultimately translated into a physical form. If we build a new computer, our initial
sketches, formal design drawings, and bread boarded prototype evolve into a physical
product (chips, circuit boards, power supplies, etc).

Software is a logically rather than a physical system element. Therefore, software has
characteristics that are considerably different than those of hardware:

1. Software is developed or engineered, it is not manufactured in the


classical sense.

Although some similarities exist between software development and hardware


manufacture, the two activities are fundamentally different. In both activities, high
quality is achieved through good design, but the manufacturing phase for hardware can
introduce quality problems that are nonexistent (or easily corrected) for software. Both
activities are dependent on the people, but the relationship between people applied and
work accomplished is entirely different. Both activities require the construction of a
"product" but the approaches are different.
Software costs are concentrated in engineering. This means that software projects can not
be managed as if they were manufacturing projects.

1
Radiant info school kandy BCS DIPLOMA S/E

2. Software doesn't "wear out."

Figure above depicts failure rate as a function of time for hardware. The relationship
often called the "bath tub curve" indicates that hardware exhibits relatively high failure
rates early in its life (these failures are often attributable to design or manufacturing
defects); defects are corrected and the failure rate drops to a steady-state level (ideally,
quite low) for some period of time. As time passes, however, the failure rate rises again
as hardware components suffer from the cumulative effects of dust, vibration, abuse,
temperature extremes, and any other environmental maladies. Stated simply, the
hardware begins to wear out.
Software is not suspect able to the environmental maladies that cause hardware to wear
out. In, theory, therefore, the failure rate curve for the software should take the form of
the "idealized curve". Undiscovered defects will cause high failure early in the life of a
program. However these are corrected (ideally, without introducing other errors) and the
curve flattens. However, the implication is clear--software doesn't wear out. But it does
deteriorate!

Software Applications

2
Radiant info school kandy BCS DIPLOMA S/E

 system software

 application software

 engineering/scientific software

 embedded software

 product-line software

 WebApps (Web applications)

 AI software

Software—New Categories

 Ubiquitous computing—wireless networks

 Net sourcing—the Web as a computing engine

 Open source—”free” source code open to the computing community


(a blessing, but also a potential curse!)

Also …

 Data mining

 Grid computing

 Cognitive machines

 Software for nanotechnologies

Legacy Software

Why must it change?

 Software must be adapted to meet the needs of new


computing environments or technology.

 Software must be enhanced to implement new business


requirements.

 Software must be extended to make it interoperable with


other more modern systems or databases.

3
Radiant info school kandy BCS DIPLOMA S/E

 Software must be re-architected to make it viable within


a network environment.

3. Although the industry is moving towards component-based assembly, most


software continues to be custom built.

Consider the manner in which the control hardware for a computer-based product is designed
and built. The design engineer draws a simple schematic of the digital circuitry, does some
fundamental analyst to assure that proper function will be achieved, and then goes to the shelf
where catalogs of digital components exist. Each integrated circuit (called an IC or a chip) has a
part number, a defined and validated function, a well-defined interface, and a standard set of
integration guidelines. After each component is selected, it can be ordered off the shelf.

As an engineering discipline evolves, a collection of standard design components is created.


Standard screws andoff-the-shelfintegrated circuits are only electrical engineers as they design
new system. The reusable components have created so that the engineer can concentrate on the
truly innovative elements of a design, that is, the parts of the design that represents something
new. In the hardware world, component reuse is a natural part of the engineering process. In the
software world, It is something that has only begun to be achieved on a broad scale.

What is software engineering?

Software engineering is the establishment and use of sound engineering principles in order to obt
ain economically software that is reliable and works efficiently on real machines

A collection of theories, techniques, and tools which enable fallible humans to design, construct
and maintain large software products in a reliable and cost effective manner

Software engineering is the application of a systematic,disciplined, quantifiable approach to


development, operation, and maintenance of software; that is, the application of engineering to
software

Quality Software crisis examples

 June 9, 1980

… a alarm indicated that Soviet Union had started a missile attack

 US airline

lost 50M because of an error in their seat reservation system

4
Radiant info school kandy BCS DIPLOMA S/E

April 1983

 The court discharged a woman (54), who was on trial for murdering her daughter…

Essence: the difficulties inherent in the nature of software

 complexity: development process, application domain, internals of the system (e.g.,


number of states, size of software, functionality, structures, and management).
 conformity: software must adapt to interact with people according to their diverse needs;
therefore, software cannot be completely represented formally.
 changeability: software component is usually the easiest one to modify.
 invisibility: software structure is hidden, only behavior can be observed when executing
the software.

Phases in the Development of Software

Waterfall

Incremental model

System/information in c r e m e n t 1
engineering

analysis design code test d e liv e r y o f


1 s t in c r e m e n t

in c r e m e n t 2 analysis design code test d e liv e r y o f


2 n d in c r e m e n t

in c r e m e n t 3analysis design code test d e liv e r y o f


3 r d in c r e m e n t

in c r e m e n t 4 analysis design code test

d e liv e r y o f
4 t h in c r e m e n t

c a le n d a r t im e

5
Radiant info school kandy BCS DIPLOMA S/E

prototype

lis te n
to b u ild /re v is e
c u s to m e r m o c k -u p

c u s to m e r
te s t-d riv e s
m o c k -u p

Rapid application development

team #3
team #2
business
mode ling

team #1 business data


modeling modeling

process
business mode ling

modeling data
modeling application
generation

testing
&
process turnover

data modeling
modeling

application
generation
process
modeling testing
&
turnover

application
generation

testing
&
turnover

60 - 90 days

6
Radiant info school kandy BCS DIPLOMA S/E

spiral

Planning
Risk Analysis

Customer
Communication

Engineering

Customer
Evaluation Construction & Release

Software Failure Case Studies

 Historical case studies contain a wealth of wisdom about the nature of design and the
engineering method

 Failures in software engineering are multi-dimensional

1. Technical slip
2. Bad management
3. Bad communication
 Ariane 5, Flight 501

m Failure was caused by reusing a flawed component


 Therac-25

1. Bad usability (bad user interface)

2. Bad exception handling

3. Over-confidence on software

7
Radiant info school kandy BCS DIPLOMA S/E

 The London Ambulance Service

1. Bad communication

2. Bad schedule (too tight)

3. Less experience in complex system (bad management)

4. Bad risk management

 Wrong expectation on hardware (bad feasibility study)

 Why projects Fail?

m an unrealistic deadline is established

m changing customer requirements

m an honest underestimate of effort

m predictable and/or unpredictable risks

m technical difficulties

m miscommunication among project staff

m failure in project management

The software Development Crisis

• For every 6 large software projects put into operation, 2 are cancelled
• The average software development project overshoots its schedule by half
• Three quarters of all large systems are “operating failures.” (Don’t function as
intended or are not used at all)

8
Radiant info school kandy BCS DIPLOMA S/E

Software Engineering – A Layered Technology

Software Engineering must rest on an organizational commitment to quality, which leads to


continued improvements in the software engineering process.

A Process defines a framework for a set of key process areas that must be established to ensure
effective delivery of software engineering technology.

The Key process areas form the basis for management control of software projects. These
include tasks such as:

- Determining Deliverables
- Establishing milestones
- Software Quality Assurance
- Software Configuration (change) Management

Software Engineering methods provide the technical how to for building software.

Methods include a wide array of tasks such as:

- Requirements Analysis
- Design
- Program Construction
- Testing
- Maintenance

Software Engineering Tools provide automated or semi-automated support for the process and
the methods.

- Example: CASE (Computer Aided Software Engineering)

9
Radiant info school kandy BCS DIPLOMA S/E

The Software Engineering Paradigm (Process Model):

A software engineering strategy that encompasses the process, methods, and tools used for
system development.

Classes of Process Models include:

The Linear Sequential Model (also known as classic life cycle model and waterfall model):

- The oldest and most commonly used software engineering model

- Demands a systematic, sequential approach to software development that begins


at the system level and progresses through analysis, design, coding, testing, and
maintenance.

- Problems with linear models:

• Real projects rarely follow sequential model


• Difficult for customers to state all requirements explicitly
• Customer does not get the feel for system until the end of
development.

1. The Prototyping Model

- A mechanism for determining customer requirements

- Developer and customer meet and define the overall objectives for the software,
identify whatever requirements are known, and outlines areas where further definition is
mandatory.

- A quick design and implementation is carried-out (mostly representing graphical


user interfaces)

10
Radiant info school kandy BCS DIPLOMA S/E

- The customer/developer review the prototype making adjustments to and/or


adding requirements

- Iteration occurs as prototype is tuned to satisfy the needs of customer.

- Problems with Prototyping:

• Customer thinks system is ready or just needs a few adjustments to be


useable
• Software quality was not considered in development
• No well prepared design is available
• Maintenance is difficult

The Spira Rapid Application Development Model


Rapid application development

Rapid application development is an incremental software development process model that


emphasizes an extremely short development cycle. the RAD model is a 'high-speed" adaptation
of linear sequential modeling which rapid development is achieved by using component based
construction. If requirements are well understood and project scope is constrained, the RAD
process enables a development team to create a "fully functional system" within very short time
periods.
Phases of RAD;
. Business Modeling
. Data Modeling
. Process Modeling
. Application Modeling
. Testing and Turnover

i)- Business Modeling


The information flow among business functions is modeled in a way that answers the following
questions;

11
Radiant info school kandy BCS DIPLOMA S/E

. What information drive the business?


. What information is generated?
. Who generates it?
. Where does the information go?
. Who processes it?

ii)- Data Modeling


The information flow defined as part of the business modeling phase is refined into a set of data
objects that are needed to support the business. The attributes of each object are identified and
relationships b/w these objects are defined.

iii)- Process Modeling


The data objects defined in the data modeling phase are transformed to achieve the information
flow necessary to implement a business function . Processing descriptions are created for
adding , deleting , modifying or retrieving a data object.

iv)- Application Modeling


RAD assumes the use of 4th generation techniques rather than conventional techniques. The
RAD process works to reuse existing program components ( when possible ) or create reusable
components ( when necessary ) For the construction of s/w CASE tools are used in RAD.

v)- Testing and Turnover


Testing cost is reduced as we use reuse components which are already tested so testing cost is
reduced. New components must be tested and all interfaces must be fully exercised.l Model

The spiral modal


Pla nning
Risk Analysis

Customer
Communication

Engineering

C ustomer
Evaluation Construc tion & Release

spiral modal is an evolutionary software process model that couples the iterative nature of
prototyping with the controlled and systematic aspects of the linear sequential model. Using the

12
Radiant info school kandy BCS DIPLOMA S/E

spiral model, software is developed in a series of incremental releases. During early iterations,
the incremental release might be a paper model or prototype. During later iterations, increasingly
more complete versions of the engineered system are produce. A spiral model is divided into a
number of frame work activities.
. Customer Communication
. Planning
. Risk Analysis
. Construction and releases
. Customer Evaluation

i)- Customer Communication


The tasks required to establish effective communication between developer and customer.

ii)- Planning
The tasks required to define resources, timelines and other project related information.

iii)- Risk Analysis


The tasks required to assess both technical and management risks.

iv)- Engineering
The tasks required to build one or more representations of the application.

v)- Construction and Release


The tasks required to construct, test, install, and provide user support.( documentation and
training )
vi)- Customer Evaluation
The tasks required to obtain customer feed back based on evaluation of the software
representations created during the engineering stage and implement during the installation stage.

2. Other Models:

- Incremental model

Develop complete sub-systems to be built on later

- Evolutionary model (Spiral model):

Combine sequential and prototyping models


13
Radiant info school kandy BCS DIPLOMA S/E

- The Formal Method Model:

Use rigorous mathematical notation to specify, develop, and verify a computer-based


system.

Software Quality Assurance (SQA)

- Conformance to
- explicitly stated functional and performance requirements,
- explicitly documented development standards, and
- implicit characteristics that are expected of all professionally developed software.

- Quality is built into the system starting with methods and tools used to help analyze and
design the system, and not reached after the system has been developed.

- Quality factors:

- Correctness
- Reliability
- Efficiency
- Integrity
- Usability
- Maintainability
- Flexibility
- Testability
- Portability
- Reusability
- Interoperability

- Activities for quality assessment and control:

- Formal Technical Reviews (RTF)


- Software Testing
- Change Control
- Measurement
- Record Keeping and Recording

Software Configuration Management (SCM)

- The art of identifying, organizing, and controlling modifications to the software being built
by a programming team.

- SCM Activities:

14
Radiant info school kandy BCS DIPLOMA S/E

- Identify change
- Control change (improve quality and reduce error)
- Ensure correct implementation of change
- Report change to those who may be effected

The Technical Spectrum

The methodologies and disciplines for developing software projects.

 Software Engineering falls into three different approaches (categories) of development:

1. Conventional Development

View software as an information transform and approach each problem using a input-
process-output viewpoint.

2. Object-Oriented Development

Consider each problem as a set of classes and work to create a solution by implementing a
set of communicating objects that are instantiated from these objects.

3. Formal Methods

Describe the problem in mathematical terms, enabling rigorous evaluation of completeness,


consistency, and correctness.

 Technical Software Engineering Tasks Include:

1. Requirements Analysis (problem Definition)


2. Design
3. Code Construction
4. Testing
5. Maintenance

15
Radiant info school kandy BCS DIPLOMA S/E

TESTING:

A process of executing a program with the intent of finding an error


Can help determine that a program is functioning correctly (according to reuirements)

Good testing includes different levels of testing:

- Low-level (unit testing):

Verify that a small segment of source code has been correctly implemented

- Intermediate-Level (integration testing):

Discover errors in the interfaces between modules

- High-level (system testing):

Validate major system functions against customer requirements

Further Issues of Software Engineering:

- Reuse
- Reengineering
- Retooling

16

Anda mungkin juga menyukai