Software Engineering

by Magolor

Discipline

● Lack of metrics for measuring the properties of software.

● No "off-the-shelf" components.

● Practitioners & theoreticians.

● Computer-Aided Software Engineering tools                                      (CASE tools)

● Project planning systems

● Project management systems

● Documentation tools

● Prototyping and simulation systems

● Interface design systems

● Programming systems

Integrated Development Environments (IDE)

Discipline

Life Cycle

Use

Maintenance

Development

Discarded

Development Phase

Requirements Analysis

Design

Implementation

Testing

Requirements Analysis

● Commercial Off-The-Shelf (COTS)

● For ultimate users

● For stakeholders

software requirements specification

Testing

Implementation

Design

Requirements Analysis

Design

Requirements Analysis

Design

Implementation

Testing

● Modularity

● Design Tools & Notations

● Design Patterns

Implementation

Requirements Analysis

Design

Implementation

Testing

● Software analysts & programmers

The entire process

Only implementation

Requirements Analysis

Design

Implementation

Testing

● Basis path testing: run every statement at least once

   use graph theory and other mathematical techniques

Testing

● Pareto principle: rapid progress by concentration

   a small number of modules contain most of the BUGs

Testing

● Glass-box testing: interior structures known

   software testers use such knowledge to design tests

● Black-box testing: interior structures unknown

   users test merely correctness, accuracy and timeliness

Boundary value analysis of equivalence classes

Beta testing

Alpha testing

Methodologies

Requirements Analysis

Design

Implementation

Testing

Waterfall Model

Incremental Model

Iterative Model

Rational Unified Process (RUP)

Unified Process (UP)

Prototyping

Evolutionary

Throwaway

Rapid

Open-Source Development

Agile Methods

eXtreme

  Programming (XP)

Modularity

for

Design

Maintenance

(Intermodule) Coupling

(Intramodule) Cohesion

Data Coupling

Passing by parameters

Sharing Global Data

Object-oriented to minimize coupling

Logical Cohesion

Functional Cohesion

\max: \text{Cohesion}
\min: \text{Coupling}

Modularity

Information Hiding

Component: a reusable unit of software.

                         (mostly object-oriented)

Component architecture

Component assembler

Modularity

● Structure Chart

Tools & Notations

● Data Diagram

● Data Dictionary

Tools & Notations

Unified Modeling Language (UML)

use cases

actors

actors

actors

actors

system

Use case diagram

use cases

use cases

use cases

use cases

use cases

Tools & Notations

Unified Modeling Language (UML)

Class diagram

Tools & Notations

Unified Modeling Language (UML)

Interaction diagrams: Sequence diagram

life line

frame

interaction fragments

Tools & Notations

● Class Responsibility Collaboration cards (CRC cards)

Structured Walkthroughs

● Adapter pattern:

   wrapping prefabricated modules & designing interfaces

● Decorator pattern:

   combining additional functions

Design Pattern

Quality Assurance

● Software Quality Assurance (SQA) groups

● Reviews

Documentation

● User documentation

● System documentation

Maintenance

for

● Technical documentation

Use

for

and

Development

for

Maintenance

Interface

● Ergonomics & Cognetics

GOMS model:

   Goals, Operators, Methods and Selection rules

Ownership

● Intellectual property law

● Software license: a legal agreement

● Patent laws

● Copyright statement

● Liability disclaimers

Thank You

Quiz

IDE:

Integrated Development Environments

Computer-Aided Software Engineering

CASE:

COTS:

Commercial Off-The-Shelf

RUP:

Rational Unified Process

UML:

XP:

eXtreme Programming

Unified Modeling Language

CRC:

Class Responsibility Collaboration

SQA:

Software Quality Assurance

GOMS:

Goals, Operators, Methods and Selection rules

International Electrotechnical Commission

IEC:

IEEE:

Institute of Electrical and Electronics Engineers

Association for Computing Machinery

ACM:

Life Cycle:

Use

Maintenance

Development

Waterfall Model:

Testing

Implementation

Design

Requirements Analysis

\min
\max

Cohesion

Coupling

Intramodule

Intermodule

Thank You