Вы находитесь на странице: 1из 31

Unit 1

Introduction
System & System engineering
Ø System are designed to solve specific
problem(s). A system consist of a set of
inter-related components which are
organized with a purpose. System always
operates within a larger environment
framework.
Ø System engineering involves analysis,
designing and organizing various elements
of a system.
Ø System engineering is a inter disciplinary
activity.
E.g. Software, Hardware, People, Database,

Documents, Procedure etc.


What is Software?
 Instructions (computer programs) that when
executed provide desired function and
performance
 Data structures enable the programs to
adequately manipulate information
 Documents that describe the operation and
use of the program
Software Development: Schematic

Systems  Systems Analysis Systems Design


Engineering
 Software is engineered or developed, not
manufactured in the traditional sense.
 Software does not wear out in the same sense
as hardware.

 Most software is custom built, and customer


never really knows what she/he wants
Types of software(Generally):

vSystem Software
vEmbedded Software
vApplication Software
vOpen source software


Who’s who
CUSTOMER Sponsors system
development

$$$, DEVELOPER
needs
USER Contractual
obligation
Uses Builds
system system
Needs

Software system
What is Software Engineering
 What is Software Engineering (SE)?
The process of building a software product.

Some questions to put SE in perspective:

 What are the sizes of some typical software


products?
 Maple.exe = 1.3 Mbytes.-- System over 3.8
Mbytes
 Netscape.exe = 1.26 megabytes.
 Microsoft Office 97 > 180 megabytes.
 How many people would it take to build these in
 1 year? 2?
 What would you do if a bug could cost lives and
$2 billion?
 What would you do if a delay could cost $100’s of

Definition
 Open University: The systematic application of
an appropriate set of techniques to the
whole process of software development.
 IEEE87: Systematic approach to development,
operations, maintenance and retirement of
software.
 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.
 Software Engineering is a layered technology.

Tools
 Editors

 Design aids

 Compilers

 Computer Aided Software Engineering (CASE)


Methods

 Includes standards (formal or informal)

 May include conventions, e.g., low level such


as
 naming, variable, language construct use, etc.

 May involve design methodologies.



Some Generic Engineering
Phases: Building

vSystem or information engineering (leading to


requirements)
 Software project planning

 Requirements analysis

 Development

 Software design

vCoding
vTesting
vMigration
vMaintenance

Maintenance
 Correction -- bugs will appear

 Adaptation -- to changing operating systems,


 CPU’s, etc.
 Enhancement -- changing customer needs

 Prevention -- software reengineering


constarints

Software Characteristics
v Understandability–clarity of purpose
v Completeness–presence of all constituent parts,
with each part fully developed.
v Conciseness–minimization of excessive or
redundant information or processing
v Portability–ability to be run well and easily on
multiple computer configurations.
v Maintainability–propensity to facilitate updates to
satisfy new requirements.
v Testability–disposition to support acceptance
criteria and evaluation of performance.
v Usability–convenience and practicality of use.
v Reliability–ability to be expected to perform its
intended functions satisfactorily.
v Efficiency–fulfillment of purpose without waste of
resources
v Security–ability to protect data against
unauthorized access
Software Lifecycle Models
A software lifecycle model is a standardised
format for

 planning
 organising, and
 running
a new development project.

 Hundreds of different kinds of models are known


and used.

 Many are minor variations on just a small number


of basic models. In this section we:

 survey the main types of model, and


 consider how to choose between them.

Planning with Models
SE projects usually live with a fixed financial
budget. (An exception is maintainance?)

Additionally, time-to-market places a strong


time constraint.

There will be other project constraints such


as staff.

*SE= Software Engineering



designers
programmers managers

money staff

Project constraints

Computing 
resources time

Examples of Project Constraints   
Project planning is the art of scheduling the
necessary activities, in time, space and

across
staff in order to optimise:

 project risk [low]


 profit [high]

 customer satisfaction [high]

 worker satisfaction [high]

 long-term company goals



What is a Lifecycle Model?
Definition.


A (software/system) lifecycle
model is a description of the
sequence of activities carried
out in an SE project, and the
relative order of these
activities.

It provides a fixed generic framework that
can be tailored to a specific project.

Project specific parameters will include:

 Size, (person-years)

 Budget,

 Duration.

 project plan =
 lifecycle model + project
parameters

The Incremental Model

 The incremental model combines elements of


the linear sequential model (applied
repetitively) with the iterative philosophy of
prototyping. The incremental model applies
linear sequences in a staggered fashion as
calendar time progresses. Each linear
sequence produces a deliverable
“increment” of the software.
 When an incremental model is used, the first
increment is often a core product. That is,
basic requirements are addressed, but many
supplementary features (some known,
others unknown) remain undelivered. The
core product is used by the customer (or
undergoes detailed review).

Incremental Model
Waterfall Model
REQUIREMENTS vLinear sequential model
ANALYSIS
vTries to define each part of the cycle 
SYSTEM vVery good method for developing large        
DESIGN
    systems
PROGRAM
DESIGN

CODING

UNIT & INTE-


GRATION TESTING

SYSTEM
TESTING

ACCEPTANCE
TESTING
OPERATION
& MAINTENANCE
Phases
 Requirement Analysis: Determine whether
developing the software is FINANCIALLY,
TECHNICALLY and BEHAVIORALLY feasible.
 System Design: System must design for last long
 Program Design: It collects Input of the system,
Output of the system, constraints, Processing
 Coding: Any level programming language
 Translate program specification into source code.
 Unit and Integrating Testing: To confirm that each
module works correctly by itself.
 Maintenance: After successful implementation
according to software errors and work
environment changes some changes are
required.


Advantages & Disadvantages
1. Easy to understand and implement.
2. Widely used and known (in theory!)
3. Reinforces good habits: define-before- design,
 design-before-code
4. Identifies deliverables and milestones
5. Document driven, URD, SRD, … etc. Published
documentation standards, e.g. PSS-05.
6. Works well on mature products and weak teams.

1. Software is delivered late in project, delays discovery


of serious errors.
2. Difficult to integrate risk management

3. Difficult and expensive to make changes

4. Significant administrative overhead, costly for small

teams and projects.



Waterfall with Prototyping
REQUIREMENTS
ANALYSIS Validate

SYSTEM
DESIGN Verify

PROGRAM
DESIGN

CODING

PROTOTYPING UNIT & INTE-


GRATION TESTING

SYSTEM
TESTING

ACCEPTANCE
TESTING
OPERATION
& MAINTENANCE
“Interactive” (Chaotic) Model
REQUIREMENTS
ANALYSIS
MAINTENANCE
SYSTEM
DESIGN

DELIVERY

PROGRAM
DESIGN
SYSTEM
TESTING

PROGRAM
IMPLEMENTATION
INTEGRATION
TESTING UNIT
TESTING
Prototyping Cycles
LIST OF LIST OF LIST OF
REVISIONS REVISIONS REVISIONS

revise user/
prototype customer
review

PROTOTYPE PROTOTYPE PROTOTYPE TEST


REQUIREMENTS DESIGN SYSTEM

DELIVERED
SYSTEM
SYSTEM
REQUIREMENTS
(sometimes informal
or incomplete)
Multiple Builds
Development systems
DEVELOPERS

Build Release 1 Build Release 2 Build Release 3

Time

Use Release 1 Use Release 2 Use Release 3


USERS

Production systems
Spiral Model
          Since end­user  requirements are  hard 
to    obtain/define,  it  is  natural  to 
develop  software  in  an  experimental 
way: e.g.
1.Build some software
2.See if it meets customer requirements
3.If no goto 1 else stop.
This loop approach gives rise to structured
iterative lifecycle models.
Key idea: on each iteration identify and 
solve the sub­problems with the highest 
risk.
Spiral Model

Planning

Customer  Risk 
Communication Analysis

Start Axis

Customer 
Development
Evaluation

Integration

Each cycle follows a waterfall model 
Customer communication—tasks required to 
establish effective communication between 
developer and customer.
Planning—tasks required to define resources, 
timelines, and other project related information.
Risk analysis—tasks required to assess both 
technical and management risks.
Engineering—tasks required to build one or more 
representations of the application.
Construction and release—tasks required to 
construct, test, install, and provide user support 
(e.g., documentation and training).
Customer evaluation—tasks required to obtain 
customer feedback based on evaluation of the 
software representations created during the 
Software Project Management

Understand the four P’s—
People,
Product
Process, and 
Project. 
People must be organized to perform 
software work effectively.

Вам также может понравиться