applying software engineering practices to etl

Upload: neeharika-uppalapati

Post on 03-Jun-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/12/2019 Applying Software Engineering Practices to ETL

    1/34

    Applying Software

    Engineering Practices to ETL

    December 2010

  • 8/12/2019 Applying Software Engineering Practices to ETL

    2/34

    3

    Disaster or Development

    Disaster Development

    Process adds the structure

    MaintenancePreparation Development

    Testing

    Design

    Migration

    Maintenance

  • 8/12/2019 Applying Software Engineering Practices to ETL

    3/34

    4

    Agenda

    We will discuss process best practices in the

    following areas

    Preparation

    Design

    Build

    Testing

    Migration

    Maintenance Wrap Up

  • 8/12/2019 Applying Software Engineering Practices to ETL

    4/34

    5

    Preparation Best Practices 1/7

    Requirements

    Environment

    Standards

    Conceptual Design

    Initiation Meeting

    Start

    Check List

  • 8/12/2019 Applying Software Engineering Practices to ETL

    5/34

    6

    Preparation Best Practices 2/7

    Required roles and responsibilities

    Project manager/team lead

    Design lead/ETL architect

    Designers

    Developers

    Testers

    Migration administrator

    Solution architect DBAs

    Business analyst

  • 8/12/2019 Applying Software Engineering Practices to ETL

    6/34

    7

    Preparation Best Practices 3/7

    Prerequisites (do we know what we are doing?)

    Requirements

    Documented, reviewed and understood

    Source(s) identified Data format, availability, location

    Target(s) identified

    Data model

    Physical development environment created

  • 8/12/2019 Applying Software Engineering Practices to ETL

    7/348

    Preparation Best Practices 4/7

    Prerequisites (do we know how we are doing it?)

    Standards

    Solution specific

    Naming conventions Error handling

    Document templates

    Tool/Technique specific

    Use SQL for x

    Dont use feature y

    MyData repository

    Media and format

  • 8/12/2019 Applying Software Engineering Practices to ETL

    8/349

    Preparation Best Practices 5/7

    Environment (do w e know where we are doing i t?)

    Development

    10% of production size

    Developer sandbox accounts

    Tool, database, etc.

    Test

    30% of production size

    QA

    As much as possible

    Production

  • 8/12/2019 Applying Software Engineering Practices to ETL

    9/3410

    Preparation Best Practices 6/7

    Conceptual / logical design

    Data flows

    Duplicate data sources?

    Modularization locations Data hops

    Timing dependencies

    Accounts updated weekly, customers monthly?

    Plan it!

    How do you distribute the work Similar complexity

    Associated tasks (unit of work)

    Subject area

  • 8/12/2019 Applying Software Engineering Practices to ETL

    10/3411

    Preparation Best Practices 7/7

    Prerequisites are OK, is the team?

    Team review of requirements

    Allows everyone to understand big picture

    Team review of standards How well do this

    Review overall time line / milestones

    When well do this

    Assign roles / responsibilities

    Who will do what

  • 8/12/2019 Applying Software Engineering Practices to ETL

    11/3412

    Design Best Practices 1/5

  • 8/12/2019 Applying Software Engineering Practices to ETL

    12/3413

    Design Best Practices 2/5

    Use standard design templates

    Functional specifications

    Technical designs

    Traceability matrix

    Keep GUI tool designs tool-independent

    Address the CTQs of ETL in design documents

    Performance

    Error handling

    Meta data

    Reuse

    Latency

  • 8/12/2019 Applying Software Engineering Practices to ETL

    13/3414

    Design Best Practices 3/5

    Achieve goal of design reviewsvalidate it

    Expand design reviews outside of IT

    Distribute designs prior to the review

    Project it line by line

    Get signoff

    Formalize pre-production change requests

    Design

    Approve and sign

    Maintain document of change requests

  • 8/12/2019 Applying Software Engineering Practices to ETL

    14/3415

    Design Best Practices 4/5

    Design for the tools strengths and weaknesses

    Know your tool

    Know your requirements

    Design for both

    Address the CTQs of ETL

    Performance

    Error handling

    Meta data

    Reuse

    Latency ETL Tool

    Strengths WeaknessesDesign

  • 8/12/2019 Applying Software Engineering Practices to ETL

    15/3416

    Design Best Practices 5/5

    Utilize prototypes to drive out detailed

    requirements

    Produce sample target data early

    Start your unit test document now Build functional test cases during design

    Developer will enhance with technical cases

  • 8/12/2019 Applying Software Engineering Practices to ETL

    16/34

    17

    Build Best Practices 1/4

  • 8/12/2019 Applying Software Engineering Practices to ETL

    17/34

    18

    Build Best Practices 2/4 Conduct pre-code reviews

    Tool specific approach

    One common reviewer to produce standard results

  • 8/12/2019 Applying Software Engineering Practices to ETL

    18/34

    19

    Build Best Practices 3/4

    Leverage an object-oriented approach

    Source and target definitions

    Common calculations

    Multiple instances of the same source system Initial load vs. ongoing load

    Source Transformations Targets

  • 8/12/2019 Applying Software Engineering Practices to ETL

    19/34

    20

    Build Best Practices 4/4

    Conduct code reviews

    Match design

    Conformance to standards

    Utilization of common objects Meta data

  • 8/12/2019 Applying Software Engineering Practices to ETL

    20/34

    21

    Testing Best Practices 1/6

  • 8/12/2019 Applying Software Engineering Practices to ETL

    21/34

    22

    Testing Best Practices 2/6

    Test completelyaddress all types

    of testing

    Unitin sandbox development environment

    Unitin development environment Stringin test environment

    Systemin test environment

    User acceptancein QA environment

    Regressionall environments (possible exception of QA)

  • 8/12/2019 Applying Software Engineering Practices to ETL

    22/34

    23

    Testing Best Practices 3/6

    Leverage document templates (or test scripts)

    with common test scenarios defined

    Identify common tests to be performed during design phase

    Create templates with the common tests Customize templates to apply to each program

    Create and use a testing checklist

    Are we testing in the right place

    Are we testing with the right data set(s)

    Are we in sync with any pre/post dependencies

  • 8/12/2019 Applying Software Engineering Practices to ETL

    23/34

    24

    Testing Best Practices 4/6

    Reuse test data

    Create library

    Create at least 2 records to test each scenario

    Use unique set for each program, do not share Use production data, if possible

    Each test should be able to be recreated at any time

    Update and maintain library

    Define processes around introducing new test case data into library

    Build procedure to reset the test database

    Document library

    Understand what each record is testing

  • 8/12/2019 Applying Software Engineering Practices to ETL

    24/34

    25

    Testing Best Practices 5/6

    Roles and responsibilities

    Designer

    Creates test scenarios

    Programmer Executes cursory test of program

    Creates needed test data set

    Tester

    Executes test scripts

    Validates results Lead

    Reviews test results

  • 8/12/2019 Applying Software Engineering Practices to ETL

    25/34

    26

    Testing Best Practices 6/6

    Test execution

    Execute tests completely, do not stop after first error

    Programmer makes necessary program fixes

    Re-test every scenario again, regardless of original pass/failstatus

    Each scenario must pass in a single execution of test

  • 8/12/2019 Applying Software Engineering Practices to ETL

    26/34

    27

    Migration Best Practices 1/4

  • 8/12/2019 Applying Software Engineering Practices to ETL

    27/34

    28

    Migration Best Practices 2/4

    Plan to migrate Identify roles within the migrations

    Develop an architecture that supports migration

    Develop processes and procedures to support migration Create migration checklist

    Code has been reviewed and approved

    Migration request form has been filled out and approved

    System test conditions are ready

    Move units (defined by product)

    Identify tools that will be used

    Test migration strategy before development ends

    Roleslimit privileges for migrating code

  • 8/12/2019 Applying Software Engineering Practices to ETL

    28/34

    29

    Migration Best Practices 3/4

    ETL migration flow

    Development unit test

    Coordinate move to Test

    Testsystem test Coordinate move to Production

    Production validation

    PD T

  • 8/12/2019 Applying Software Engineering Practices to ETL

    29/34

    30

    Migration Best Practices 4/4

    ETL migration process

    Code movement approval

    User acceptance of unit / test

    Migration checklist completed

    Versioning

    Regression testing

    ETL backup and recovery

    Utilize migration completion checklist

    PD T

  • 8/12/2019 Applying Software Engineering Practices to ETL

    30/34

    31

    Maintenance Best Practices 1/3

  • 8/12/2019 Applying Software Engineering Practices to ETL

    31/34

    32

    Maintenance Best Practices 2/3

    Repeat the process!!!

    Code change control

    Requirements

    Design Construct

    Test

    Regression testing

    Migrate

    Documentation

    Upgrade Subject Area

    Contingency Code

  • 8/12/2019 Applying Software Engineering Practices to ETL

    32/34

    33

    Maintenance Best Practices 3/3

    Emergency maintenance

    Requirements

    Quick gather: many times already known (bug)

    Design Construct

    Test

    Usually cant be scheduled into system test

    Can we test in QA?

    Test in dev with system test data Migrate

  • 8/12/2019 Applying Software Engineering Practices to ETL

    33/34

    34

    Best Practices Wrap Up

    OK, what did we just see?

    A collection of simple activities grouped together into a process

    Basic and sometimes obvious yet many times ignored

    Prepare and plan

    What, why, who, and when

    How

    Control it

    Roles/responsibilities

    Checklists

  • 8/12/2019 Applying Software Engineering Practices to ETL

    34/34

    THANK YOU