Saturday, July 31, 2010

INTRODUCTION

UNIT 1-INTRODUCTION TO SOFTWARE ENGINEERING

What is Software Engineering Solving Problems

Software products are large and complex

Development requires analysis and synthesis

Analysis: decompose a large problem into smaller, understandable pieces

abstraction is the key

Synthesis: build (compose) a software from smaller building blocks

composition is challenging

Method: refers to a formal procedure; a formal “recipe” for accomplishing a goal that is typically independent of the tools used

Tool: an instrument or automated system for accomplishing something in a better way

Procedure: a combination of tools and techniques to produce a product

Paradigm: philosophy or approach for building a product (e.g., OO vs structured approaches)

Computer science: focusing on computer hardware, compilers, operating systems, and programming languages

Software engineering: a discipline that uses computer and software technologies as a problem-solving tools

How Successful Have We Been? Terminology for Describing Bugs

A fault: occurs when a human makes a mistake, called an error, in performing some software activities

A failure: is a departure from the system’s required behaviour

What Is Good Software

Good software engineering must always include a strategy for producing quality software

Three ways of considering quality

The quality of the product

The quality of the process

The quality of the product in the context of the business environment

The transcendental view: quality is something we can recognize but not define

The user view: quality is fitness for purpose

The manufacturing view: quality is conformance to specification

The product view: quality tied to inherent product characteristics

The value-based view: depends on the amount the customers is willing to pay for it

Who Does Software Engineering

Customer: the company, organization, or person who pays for the software system

Developer: the company, organization, or person who is building the software system

User: the person or people who will actually use the system

System Approach

Hardware, software, interaction with people

Identify activities and objects

Define the system boundary

Consider nested systems, systems interrelationship

The Element of a System

Activities and objects

An activity is an event initiated by a trigger

Objects or entities are the elements involved in the activities

Relationships and the system boundaries

A relationship defines the interaction among entities and activities

System boundaries determine the origin of input and destinations of the output

Building a System

Requirement analysis and definition

System design

Program design

Writing the programs

Unit testing

Integration testing

System testing

System delivery

Maintenance

Members of the Development Team

Requirement analysts: work with the customers to identify and document the requirements

Designers: generate a system-level description of what the system us supposed to do

Programmers: write lines of code to implement the design

Testers: catch faults

Trainers: show users how to use the system

Maintenance team: fix faults that show up later

Librarians: prepare and store documents such as software requirements

Configuration management team: maintain correspondence among various artifacts

How Has Software Engineering Changed

The Nature of the Change

Before 1970s

Single processors: mainframes

Designed in one of two ways

as a transformation: input was converted to output

as a transaction: input determined which function should be performed

After 1970s

Run on multiple systems

Perform multi-functions

How Has SE Changed

Wasserman's Seven Key Factors

  1. Critically of time-to-market
  2. Shifts in the economics of computing
  3. Availability of powerful desktop computing
  4. Extensive local- and wide-area networking
  5. Availability and adoption of object-oriented technology
  6. Graphical user interfaces
  7. Unpredictability of the waterfall model of software development

Wasserman's Discipline of Software Engineering

Abstractions

Analysis and design methods and notations

User interface prototyping

Software architecture

Software process

Reuse

Measurement

Tools and integrated environments

Information Systems Example Piccadilly System

Piccadilly Television: regional British TV franchise

Advertising scheme has many constraints:

alcohol adverts only after 9 pm

if actor in show, no same actor in advert within 45 minutes

if advert in a class of products, no other advert in same class during same break

rates dependent on amount of time bought

Software to determine, track advertising time

Real Time Example

Ariane-5 rocket, from the European Space Agency

June 4, 1996: functioned well for 40 seconds, then veered off course and was destroyed

Contained four satellites: cost was $500 million

Reused code from Ariane-4 rocket

Modeling the Process and Life Cycle

The Meaning of Process

A process: a series of steps involving activities, constrains, and resources that produce an intended ouput of some kind

A process involves a set of tools and techniques

Process Characteristics

Prescribes all major process activities

Uses resources, subject to set of constraints (such as schedule)

Produces intermediate and final products

May be composed of subprocesses with hierarchy or links

Each process activity has entry and exit criteria

Activities are organized in sequence, so timing is clear

Each process guiding principles, including goals of each activity

Constraints may apply to an activity, resource or product

The Importance of Processes

Impose consistency and structure on a set of activities

Guide us to understand, control, examine, and improve the activities

Enable us to capture our experiences and pass them along

Reasons for Modeling a Process

To form a common understanding

To find inconsistencies, redundancies, omissions

To find and evaluate appropriate activities for reaching process goals

To tailor a general process for a particular situation in which it will be used

Software Life Cycle

When a process involves building a software, the process may be referred to as software life cycle

Requirements analysis and definition

System (architecture) design

Program (detailed/procedural) design

Writing programs (coding/implementation)

Testing: unit, integration, system

System delivery (deployment)

- Maintenance

Software Development Process Models

Waterfall model

V model

Prototyping model

Operational specification

Transformational model

Phased development: increments and iteration

Spiral model , Agile methods

Tools and Techniques for Process Modeling

Notation depends on what we want to capture in the model

The two major notation categories

Static model: depicts the process

Dynamic model: enacts the process

Tools and Techniques for Process Modeling Static Modeling: Lai Notation

Element of a process are viewed in terms of seven types

Activity

Sequence

Process model

Resource

Control

Policy

Organization

Several templates, such as an Artifact Definition Template

Process Programming

A program to describe and enact the process

Eliminate uncertainty

Basis of an automated environment to produce software

Does not capture inherent variability of underlying development process

Implementation environment, skill, experience, understanding the customer needs

Provides only sequence of tasks

Gives no warning of impending problems

Practical Process Modeling
Marvel Case Studies

Uses Marvel process language (MPL)

Three constructs: classes, rules, tool envelopes

Three-part process description

rule-based specification of process behavior

pbject-oriented definition of model’s information process

set of envelopes to interface between Marvel and external software tools

Involved two AT&T networks

network carried phone calls

signaling network responsible for routing calls and balancing the network load

Marvel was used to describe the signaling fault resolution

Desirable Properties of Process Modeling Tools and Techniques

Facilitates human understanding and communication

Supports process improvement

Supports process management

Provides automated guidance in performing the process

Supports automated process execution

Information System Example
Piccadilly Television Advertising System

Needs a system that is easily maintained and changed

Requirements may change

Waterfall model is not applicable

User interface prototyping is an advantage

There is uncertainty in regulation and business constraints

Need to manage risks

Spiral model is the most appropriate

Risk can be viewed in terms of two facets

Probability: the likelyhood a particular problem may occur

Severity: the impact it will have on the system

To manage risk, it needs to include characterization of risks in the process model

Risk is an artifact that needs to be described

Real Time Example
Ariane-5 Software

Reuse process model presentation