Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer

Size: px
Start display at page:

Download "Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer"

Transcription

1 Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer for our ERP application. In recent years, I have refocused on the problems of transforming and modernizing legacy ABL applications. To modernize an application, one needs to define the desired target architecture for the new application, and that has led me to focus on Object Orientation as a key tool in designing modern, OERA compliant applications. 1

2 Here s our agenda for today. We ll take a quick look at why we are talking about OO ABL in the first place and then dive into specific considerations for the Data Access layer, Business Logic Layer, and the interface between them. 2

3 3

4 The first question we might ask ourselves is why are we interested in OO in the first place. It is commonly believed that the OO paradigm improves quality by encapsulating logic in easily tested units, promoting code re-use, providing a mechanism for easy and well-controlled extensibility, reducing production error rates by catching errors at compilation, creating a more maintainable system, reducing large problems to simpler components, and providing a more natural relationship between code and the real world. I realize that sounds like a pretty extraordinary set of expectations, but it is all achievable if one follows the best OO practice. 4

5 Some of you have been around long enough to remember the V6 to V7 transition where the recommended programming paradigm changed from a more or less linear procedural model to an event driven model. Lots of programmers had trouble making that transition and had trouble getting used to the idea of letting the user determine the sequence of events. That was a major shift in mindset of the programmer but moving to OO is actually a bigger change in mindset. Learning the syntax is relatively simple, but learning how to think in an OO way is a much harder issue and one that is complicated by there being a lot of examples in 3GL practice which are really bad OO. Getting to think about the problem in the right way is key. 5

6 Select your guidance carefully. Ask for recommendations on books and courses although books oriented toward ABL are nearly non-existent. The OO reference manual in the documentation has good material and deserves careful study. Consider training and mentoring from someone that you trust. Start off being pretty religious about doing things right rather than accepting early sloppiness with the idea you will clean it up later. Chances are you won t clean up and you will end up having to live with the mess. Even if you don t understand yet why a recommended approach is better, try to use it. Through use, you may discover why it works. One place to start are three whitepapers at the URL shown which cover basic OO vocabulary, OO design patterns, and OO design principles. Each could easily be a book, but these are intended for a quick reference and a place to get started. 6

7 While the focus of this talk in OO, there is great synergy between good OO and OERA, so we are going to be talking in OERA terms as well. Everyone may have seen one or more versions of the OERA diagram by now. Here is a version which emphasizes the disconnectedness of the layers. What I am going to be talking about today is patterns for the Data Access layer and the Business Logic layer. Data Access is responsible for obtaining data from data stores and persisting it in those data stores. It may contain relational integrity logic, but does not contain operational business logic. Business Logic is contained in the Business Logic layer which obtains data and control inputs from Data Access, Presentation, and a Service Interface. Note that this apparently simple division into layers actually is a simplification of a complex network of relationships between objects, but is still a useful abstraction. In particular, we should regard each layer as a subsystem and therefore strive for the loose coupling between subsystems which we expect in OO, while objects within a layer can be somewhat more tightly coupled. 7

8 The goal for today is to move beyond this simple OERA diagram and examine patterns and techniques for implementing an OERA architecture using Object Orientation. 8

9 Let s start with to the Data Access Layer. 9

10 In traditional ABL, programmers often make direct data accesses wherever they need the data, mixed in with user interface statements and business logic. This mixture isn t a particularly good programming structure even in traditional ABL, but in OERA we are definitely trying to move to a more layered approach. Layering into distinct subsystems or domains is very consistent with OO thinking where we want Separation of Responsibility. I.e., we want each object to have its own distinct responsibility which does not overlap with other objects and we want each collection of related objects in a layer or subsystem to also be coherent in the responsibility it covers and separate from the responsibilities of other subsystems or layers. 10

11 The Data Access layer allows us to abstract the source of the data from its use. The Business Logic layer should be unaware of where the data is stored, what kind of database was used, whether there was a database access or a request to a remote service, how the data was stored, or basically anything about the persisted form. 11

12 The Data Access layer helps us to separate what is efficient and practical for processing from what is efficient and practical for storage. In OO processing, we normally want to handle one object at a time. Just like in traditional ABL programming where we handle one record at a time, so in most cases we want the Business Logic layer to ask for one object at a time. But, if we know that we are going to need a whole set of data, e.g., all orders for a customer, there is no reason not to efficiently prefetch that data, even though it gets passed along one object at a time. 12

13 Those of you who have heard or read my earlier talks might be familiar that I have criticized many uses of temp-tables and ProDataSets. So, what about Temp-tables and ProDataSets in the context of Data Access? Temp-tables are embodiment of 13

14 relational thinking. Temp-tables are about data arranged in tuples and accessed by keys. Objects are about data and behavior accessed by navigating relationships. Temp-tables thus seem almost antithetical to OO thinking. 13

15 But, temp-tables and ProDataSets have very attractive features for interfacing to the database. In the DA layer, our subject matter is interfacing to the database. A temptable within one object used as interface to DB is quite different than use as a surrogate for collections or passed among multiple objects in business logic. So, the objections which I might have to some uses of 14

16 temp-tables and ProDataSets in the context of OO don t necessarily apply in the context of DA objects. 14

17 Why do we want to consider TTs and PDSs? Query and FILL() very performant and flexible. PDSs can provide a local surrogate to the DB. PDS before-image features provide the information needed for optimistic locking management. 15

18 What s this about optimistic locking? To minimize locking contention, we normally want to use optimistic locking, but that implies tracking the before image. Is that something the Data Access layer does or is it the responsibility of the objects in the Business Logic layer? The answer is, needing that before image data is really an issue about storage, so it belongs in the Data Access layer. Again, ProDataSets are indicated because all the structures are there for holding the before image data, resolving it with the updated data, and managing the optimistic locking logic. 16

19 Optimistic Locking Handling Requires before-image copy to compare to current database copy. If unchanged, then no problem; just commit new copy. If changed, need to decide on what to do simple return to BL or attempt merge. Merge may be more appropriate in BL. I will come back to this a bit when we get to the BL and look at the whole cycle. 17

20 The Data Access layer helps us to separate what is efficient and practical for processing from what is efficient and practical for storage. There is a great role here for ProDataSets since they are very efficient ways to get data to and from the database. Even when we are fetching individual records, we need to keep track of them somewhere until they are ready to be persisted or discarded and a ProDataSet is ideal for that as well. In OO processing, we normally want to handle one object at a time, just like in traditional ABL programming we handle one record at a time, so in most cases we want the Business Logic layer to ask for one object at a time. But, if we know that we are going to need a whole set of data, e.g., all orders for a customer, there is no reason not to efficiently prefetch that data, even though it gets passed along one object at a time. There are some uses, of course, where we are genuinely dealing with a set of data, e.g., a sales matrix we are going to process for forecasting or a set of data used for validation or passing a set of data to the UI. In those cases it makes sense to pass through a set at a time. 18

21 What else belongs in the subject matter of the DA layer? Relational integrity checks. Computations and manipulations which are part of OO to RDB mapping. Composition and analysis of messages from BL. 19

22 Now that we have a pretty good idea of what needs to be in the DA, let s look at the interface between the DA and the BL. 20

23 A key OO principle is Separation of Concerns, i.e., putting each responsibility into its own object -- or subsystem in the case of larger, more complex responsibilities -- and minimizing the interface between objects or subsystems. This clear separation -- related things inside and a minimal necessary connection to things outside -- is one of the key factors which leads to ease of maintenance, ease of modification, and simplifying testing. 21

24 The Data Access to Business Logic interface is a very fundamental subsystem barrier, so we are going to expect this to be a minimal interface, i.e., a real clear separation between what happens on one side and what happens on the other. 22

25 In fact, since data can come from multiple sources, this means that the business logic shouldn t really even be aware of where the data comes from except to the extent it is necessary for providing feedback. All of this data should come to the BL components in the same form. 23

26 In fact, since data can come from multiple sources, this means that the business logic shouldn t really even be aware of where the data comes from except to the extent it is necessary for providing feedback. All of this data should come to the BL components in the same form. 24

27 The normal way of isolating subsystems in OO is by the means of messages. In this case, the normal practice is to package data in a Message Data Packet or MDP. An MDP is a simple value object, i.e., it has no behavior, only data. To supply data to the BL layer, the DA layer creates an MDP, sends it across, and the BL consumes the data and destroys the message object. Incidentally, this is one of the exceptions to the usual rule of you create it; you destroy it since the BL is the one that knows when the MDP is no longer needed. While it might seem that creating and reading an MDP is pure overhead compared to passing the data as parameters, this approach provides a major decoupling between the subsystems for which you will be grateful when you get to debugging and maintenance. It also means that other subsystems can provide identical data packets to be consumed in the same way. 25

28 What does this look like in practice? Each subsystem will have a façade object responsible for communication to other subsystems. The façade object will know about the objects inside the subsystem and the façade objects of other subsystems, but otherwise subsystems will not interact directly with each other. 26

29 Alternatively, we can use a bridge structure in which a single object links two subsystems or layers. A bridge is less flexible and may require more maintenance than a façade, but is particularly appropriate when generating the interface. 27

30 28

31 29

32 30

33 31

34 A factory is the standard pattern for an object which creates other objects, possibly one object type per factory, possibly more than one. It centralizes all of the logic needed to create that type of object in one place. Some people will be tempted to put their object factories in the DA layer because of the direct access to the retrieved data, but the factory belongs in the BL layer since passing a completed Business Entity object between layers would create strong coupling and the DA layer isn t the only possible source of data, for example, order data can come from a service interface or the UI as well as from data access. 32

35 The immediate source for the factory is the MDP that I talked about earlier. Note, that good OO design dictates that one knows one has valid data before one builds the object. It is bad design to build the object and have it fail because of bad data. 33

36 Several people have written about patterns which use ProDataSets to hold data in the Business Logic layer. These include John Sadd s writings on PSDN from a few years ago, the Model-Set-Entity pattern of Progress Professional Services, and NSRA from NomadeSoft. I think these approaches are misdirected because the fundamental building block in OO is a single entity, not a whole set of data. Moreover, passing a TT or PDS creates strong coupling between the layers. Model-Set-Entity admittedly works very hard to make it appear as if the Business Entity and Set objects appear to their clients like traditional separate objects exactly for this reason. I have written about this topic specifically in a whitepaper on my website. 34

37 OO behavior matches OO data, i.e., behavior about an individual entity is packaged with the data for that entity and behavior about a set is packaged with the set 35

38 There are times when one genuinely has sets of data like a sales history matrix on which one is going to do forecasting or a validation table like a list of states. For these, a ProDataSet or Temp-table are perfectly appropriate, but note that any logic on the object should relate to the set, not the elements. If you need to operate on an individual element, bring it out into its own business entity object where it has the entity logic. Each object type should have its clear responsibilities. If those responsibilities are the set, then they should only be about the set. If they are about the individual, then they should only be about the individual. Another possible rôle might be passing set data to the UI, but there are multiple solutions to that problem, including XML and JSON, so some experimentation is required and the best approach might vary according to specifics. 36

39 In traditional linear ABL programs issues of lifecycle and persistence can often seem simple. A program runs until it ends. Persistent procedures and dynamic objects can make this more complex. In an OO world, it might seem that these decisions are more complex because of the separation into subsystems, but the principles remain the same. 37

40 Like traditional ABL, there are some guidelines like you make it, you destroy it. Just as there are exceptions in traditional ABL, there are exceptions for OO, notably for MDP objects since they are created in one subsystem and consumed in another. In the end the real guideline in OO is no different than the considerations one should have in non-oo programming. I.e., the reason one is done needing an object is because one has reached a point where it is no longer needed for business reasons. In OO terms, this means that the object which is controlling the scope of the task, which may be the business entity or, more likely, the task object using a business entity, decides that it has gotten to an important event state changes completed or a phase of processing finished i.e., it is some version of Done. So it sends off a message to the Data Access layer or other appropriate destination announcing that it is done. It may need to wait for a confirmation message, but at some point it knows that it is finished using that entity object. There is a natural point where the object is no longer needed. Likewise, for any given business task or workflow, there are natural beginning and end points, and those define the creation and deletion points for the objects which implement the aspects of that task. 38

41 So, who controls persistence in an OERA environment? BL is not only not connected to the DB, but doesn t even know if there is a local DB, so it can t make decisions about persistence. DA is connected to the DB or other persistent store, but knows nothing about object state. 39

42 Lifecycle is not the same as persistence. Persistence is about having reached a state where it is appropriate to preserve that state. This might happen once or many times in the life of an object and it may happen for different reasons at different points in that lifecycle. So, it is the BL s job to decide when an appropriate state has been reached and to signal that this state has been reached and what should be preserved. It is the DA s job to act on that message. 40

43 Back in talking about the DA layer we talked about this cycle for optimistic locking. So, we know what will happen in the DA layer, but what is going to happen on the BL side? 41

44 Typically we will use a state machine to wait for confirmation. Hint state machines are a key part of managing behavior in objects! If the Done message is confirmed, then we terminate the process or go on to the next step. If it is not confirmed, we have to decide whether to merge or 42

45 reprocess. That decision is based on business requirements first and what data is different second. For example, if we are editing the customer record and have made a change to the address, but find that while we were doing that the credit limit changed, we are going to merge those changes and try again. But, if we were adjusting the discount on an order line and find that the item has changed, we probably need to reprocess. If we don t use a state machine to wait for confirmation, we have to provide handling of reversing transactions when the persistence was not successful. That has potential fan out issues if we act on the supposedly modified data and 42

46 then have to reverse our changes, so we want to partition data carefully to minimize this potential. 42

47 What about Transactions? Historically, ABL programmers think of transactions closely tied to the database. DB transactions are very important because they insure nothing incomplete gets in the DB. Practice has migrated toward very brief DB transactions when 43

48 everything is ready to commit. But, we need to fix and log errors as much as possible. Thus, we have business transactions that are larger in scope than DB transactions. 43

49 With SOA distributed across a DB, the business transaction can often span more than one machine. With DA/BL layer separation, we have a similar situation since the BL can t know what is happening in the DA. Consequently, BL transactions are business transactions which 44

50 need to operate independently of the DB transaction mechanism. 44

51 The same is true of transaction scope, except, in non-oo code we often get used to thinking of a transaction as a DB transaction and tying everything to that. In distributed ESB environments we learn that we have to step back from the DB transaction a bit not that DB transactions are any less important, but that the business transaction may exist at a higher level and thus need to be handled in a different way, often by providing fire and forget messaging for loose coupling associated with reversing transactions to provide the undo when necessary. The same is true of Business Layer transactions in OO, where we need to provide more explicit save point and restart or undo mechanisms. One such mechanism is the Memento pattern which captures the state of an object at a particular point so that one can restore to that state if necessary. 45

52 46

53 47

54 Here are some links for more information on my website. 48

55 And here are some additional resources. You don t need to scramble to write these down as the slides will be on my website in a few days. You also might want to catch Peter Judge s talk in the last breakout slot for a down and dirty, lots of code example of making this separation. 49

56 Thank you. 50

57 And now for questions. 51

58 52

Let me begin by introducing myself. I began working with Progress in 1984 and I have been a Progress Application Partner since 1986.

Let me begin by introducing myself. I began working with Progress in 1984 and I have been a Progress Application Partner since 1986. Let me begin by introducing myself. I began working with Progress in 1984 and I have been a Progress Application Partner since 1986. For many years I was the architect and chief developer for our ERP application.

More information

Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer

Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer for our ERP application. In recent years I have refocused

More information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004

More information

Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. # 20 Concurrency Control Part -1 Foundations for concurrency

More information

As a programmer, you know how easy it can be to get lost in the details

As a programmer, you know how easy it can be to get lost in the details Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 31 Static Members Welcome to Module 16 of Programming in C++.

More information

Divisibility Rules and Their Explanations

Divisibility Rules and Their Explanations Divisibility Rules and Their Explanations Increase Your Number Sense These divisibility rules apply to determining the divisibility of a positive integer (1, 2, 3, ) by another positive integer or 0 (although

More information

OERA Strategies: Object-Oriented or Not? Version 30 April 2007 Thomas Mercer-Hursh

OERA Strategies: Object-Oriented or Not? Version 30 April 2007 Thomas Mercer-Hursh COMPUTING INTEGRITY INCORPORATED 60 Belvedere Avenue Point Richmond, CA 94801-4023 510.233.5400 Sales 510-233.5444 Support 510.233.5446 Facsimile OERA Strategies: Object-Oriented or Not? Version 30 April

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

Biocomputing II Coursework guidance

Biocomputing II Coursework guidance Biocomputing II Coursework guidance I refer to the database layer as DB, the middle (business logic) layer as BL and the front end graphical interface with CGI scripts as (FE). Standardized file headers

More information

(Refer Slide Time: 01:25)

(Refer Slide Time: 01:25) Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture - 32 Memory Hierarchy: Virtual Memory (contd.) We have discussed virtual

More information

Anatomy of a Standard Transcript

Anatomy of a Standard Transcript Anatomy of a Standard Transcript Maddie: Hi everyone! Throughout this joint project, Eli, Christina, & I all had to use technical standards to make sure our products met the necessary requirements & specifications,

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

The Strategy Pattern Design Principle: Design Principle: Design Principle:

The Strategy Pattern Design Principle: Design Principle: Design Principle: Strategy Pattern The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Design

More information

shortcut Tap into learning NOW! Visit for a complete list of Short Cuts. Your Short Cut to Knowledge

shortcut Tap into learning NOW! Visit  for a complete list of Short Cuts. Your Short Cut to Knowledge shortcut Your Short Cut to Knowledge The following is an excerpt from a Short Cut published by one of the Pearson Education imprints. Short Cuts are short, concise, PDF documents designed specifically

More information

UXD. using the elements: structure

UXD. using the elements: structure using the elements: structure defining structure you are here structure essentially defines how users get to a given screen and where they can go when they re done. structure also defines categories of

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Lecture 06 Object-Oriented Analysis and Design Welcome

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

Alan J. Perlis - Epigrams on Programming

Alan J. Perlis - Epigrams on Programming Programming Languages (CS302 2007S) Alan J. Perlis - Epigrams on Programming Comments on: Perlis, Alan J. (1982). Epigrams on Programming. ACM SIGPLAN Notices 17(9), September 1982, pp. 7-13. 1. One man

More information

CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability

CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability Featuring Accenture managing directors

More information

SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7

SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 Hi everyone once again welcome to this lecture we are actually the course is Linux programming and scripting we have been talking about the Perl, Perl

More information

Digital Workflow 10 Tech Rules to Guide You

Digital Workflow 10 Tech Rules to Guide You Last updated: 10/11/10 Digital Workflow 10 Tech Rules to Guide You Introduction Whether your goal is to become paperless, or just to get more out of the technology you use, you need to (1) find the easy

More information

These are notes for the third lecture; if statements and loops.

These are notes for the third lecture; if statements and loops. These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern

More information

Project 1 Balanced binary

Project 1 Balanced binary CMSC262 DS/Alg Applied Blaheta Project 1 Balanced binary Due: 7 September 2017 You saw basic binary search trees in 162, and may remember that their weakness is that in the worst case they behave like

More information

The Adapter Pattern. Interface with anything!

The Adapter Pattern. Interface with anything! The Adapter Pattern Interface with anything! Adapter in a Nutshell - An adapter takes an object with one interface, and changes the interface to make it look like something it s not. - Allows two objects

More information

Embedded Systems Dr. Santanu Chaudhury Department of Electrical Engineering Indian Institute of Technology, Delhi

Embedded Systems Dr. Santanu Chaudhury Department of Electrical Engineering Indian Institute of Technology, Delhi Embedded Systems Dr. Santanu Chaudhury Department of Electrical Engineering Indian Institute of Technology, Delhi Lecture - 13 Virtual memory and memory management unit In the last class, we had discussed

More information

CS 147: Computer Systems Performance Analysis

CS 147: Computer Systems Performance Analysis CS 147: Computer Systems Performance Analysis Test Loads CS 147: Computer Systems Performance Analysis Test Loads 1 / 33 Overview Overview Overview 2 / 33 Test Load Design Test Load Design Test Load Design

More information

Your Data Demands More NETAPP ENABLES YOU TO LEVERAGE YOUR DATA & COMPUTE FROM ANYWHERE

Your Data Demands More NETAPP ENABLES YOU TO LEVERAGE YOUR DATA & COMPUTE FROM ANYWHERE Your Data Demands More NETAPP ENABLES YOU TO LEVERAGE YOUR DATA & COMPUTE FROM ANYWHERE IN ITS EARLY DAYS, NetApp s (www.netapp.com) primary goal was to build a market for network-attached storage and

More information

Publications Database

Publications Database Getting Started Guide Publications Database To w a r d s a S u s t a i n a b l e A s i a - P a c i f i c!1 Table of Contents Introduction 3 Conventions 3 Getting Started 4 Suggesting a Topic 11 Appendix

More information

Keep Track of Your Passwords Easily

Keep Track of Your Passwords Easily Keep Track of Your Passwords Easily K 100 / 1 The Useful Free Program that Means You ll Never Forget a Password Again These days, everything you do seems to involve a username, a password or a reference

More information

10 Tips For Effective Content

10 Tips For Effective  Content 10 Tips For Effective Email Content Nowadays when it comes to online marketing, and the Internet as a whole, so many people are being added to so many email lists. They're being bombarded constantly by

More information

Crash Course in Modernization. A whitepaper from mrc

Crash Course in Modernization. A whitepaper from mrc Crash Course in Modernization A whitepaper from mrc Introduction Modernization is a confusing subject for one main reason: It isn t the same across the board. Different vendors sell different forms of

More information

Rapid Software Testing Guide to Making Good Bug Reports

Rapid Software Testing Guide to Making Good Bug Reports Rapid Software Testing Guide to Making Good Bug Reports By James Bach, Satisfice, Inc. v.1.0 Bug reporting is a very important part of testing. The bug report, whether oral or written, is the single most

More information

Introduction to Access 97/2000

Introduction to Access 97/2000 Introduction to Access 97/2000 PowerPoint Presentation Notes Slide 1 Introduction to Databases (Title Slide) Slide 2 Workshop Ground Rules Slide 3 Objectives Here are our objectives for the day. By the

More information

CPS122 Lecture: Course Intro; Introduction to Object-Orientation

CPS122 Lecture: Course Intro; Introduction to Object-Orientation Objectives: CPS122 Lecture: Course Intro; Introduction to Object-Orientation 1. To introduce the course requirements and procedures. 2. To introduce fundamental concepts of OO: object, class Materials:

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

More information

Making a PowerPoint Accessible

Making a PowerPoint Accessible Making a PowerPoint Accessible Purpose The purpose of this document is to help you to create an accessible PowerPoint, or to take a nonaccessible PowerPoint and make it accessible. You are probably reading

More information

A Step by Step Guide to Postcard Marketing Success

A Step by Step Guide to Postcard Marketing Success A Step by Step Guide to Postcard Marketing Success Table of Contents Why VerticalResponse?...3 Why Postcards?...4 So why use postcards in this modern era?...4 Quickstart Guide...6 Step 1: Setup Your Account...8

More information

AJAX Programming Overview. Introduction. Overview

AJAX Programming Overview. Introduction. Overview AJAX Programming Overview Introduction Overview In the world of Web programming, AJAX stands for Asynchronous JavaScript and XML, which is a technique for developing more efficient interactive Web applications.

More information

C Pointers 2013 Author Riko H i

C Pointers 2013 Author Riko H i http:/cdorm.net/understanding C Pointers 2013 Author Riko H i Copyright 2013 CDorm.net All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form

More information

Civil Engineering Computation

Civil Engineering Computation Civil Engineering Computation First Steps in VBA Homework Evaluation 2 1 Homework Evaluation 3 Based on this rubric, you may resubmit Homework 1 and Homework 2 (along with today s homework) by next Monday

More information

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?

More information

STAUNING Credit Application Internet Sales Process with /Voic Templates to Non-Responsive Prospects 2018 Edition

STAUNING Credit Application Internet Sales Process with  /Voic Templates to Non-Responsive Prospects 2018 Edition STAUNING Credit Application Internet Sales Process with Email/Voicemail Templates to Non-Responsive Prospects 2018 Edition Contents 30-DAY CREDIT APPLICATION INTERNET SALES PROCESS... 2 DAY 1 AUTO-RESPONSE

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

XP: Backup Your Important Files for Safety

XP: Backup Your Important Files for Safety XP: Backup Your Important Files for Safety X 380 / 1 Protect Your Personal Files Against Accidental Loss with XP s Backup Wizard Your computer contains a great many important files, but when it comes to

More information

Tuesday, October 4. Announcements

Tuesday, October 4. Announcements Tuesday, October 4 Announcements www.singularsource.net Donate to my short story contest UCI Delta Sigma Pi Accepts business and ICS students See Facebook page for details Slide 2 1 Design Patterns Design

More information

Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6

Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6 Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6 Some Terms: Architecture the manner in which the components of a computer

More information

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook? 04 537598 Ch01.qxd 9/2/03 9:46 AM Page 11 Chapter 1 Fundamental Features: How Did You Ever Do without Outlook? In This Chapter Reading e-mail Answering e-mail Creating new e-mail Entering an appointment

More information

Design Patterns Design patterns advantages:

Design Patterns Design patterns advantages: Design Patterns Designing object-oriented software is hard, and designing reusable object oriented software is even harder. You must find pertinent objects factor them into classes at the right granularity

More information

Evaluation Guide for ASP.NET Web CMS and Experience Platforms

Evaluation Guide for ASP.NET Web CMS and Experience Platforms Evaluation Guide for ASP.NET Web CMS and Experience Platforms CONTENTS Introduction....................... 1 4 Key Differences...2 Architecture:...2 Development Model...3 Content:...4 Database:...4 Bonus:

More information

SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman

SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman Chapter 9 Copyright 2012 Manning Publications Brief contents PART 1 GETTING STARTED WITH SHAREPOINT 1 1 Leveraging the power of SharePoint 3 2

More information

Categorizing Migrations

Categorizing Migrations What to Migrate? Categorizing Migrations A version control repository contains two distinct types of data. The first type of data is the actual content of the directories and files themselves which are

More information

Responsive Web Design Discover, Consider, Decide

Responsive Web Design Discover, Consider, Decide Responsive Web Design Discover, Consider, Decide Responsive Web Design. Discover, Consider, Decide Q. What is Responsive Design? A. Responsive design is a general mindset where you are designing a website,

More information

NET. Networking. Goals of this lab: Prerequisites: LXB

NET. Networking. Goals of this lab: Prerequisites: LXB NET Networking Goals of this lab: To learn how to configure network connections in a UNIX system. To gain experience with fundamental routing. Prerequisites: LXB REVISION: 2.1 [2015-08-28] 2005-2015 DAVID

More information

SearchWinIT.com SearchExchange.com SearchSQLServer.com

SearchWinIT.com SearchExchange.com SearchSQLServer.com TechTarget Windows Media SearchWinIT.com SearchExchange.com SearchSQLServer.com SearchEnterpriseDesktop.com SearchWindowsServer.com SearchDomino.com LabMice.net E-Guide Mid-Market Guide to Architecting

More information

Module 6. Campaign Layering

Module 6.  Campaign Layering Module 6 Email Campaign Layering Slide 1 Hello everyone, it is Andy Mackow and in today s training, I am going to teach you a deeper level of writing your email campaign. I and I am calling this Email

More information

Object Persistence Design Guidelines

Object Persistence Design Guidelines Object Persistence Design Guidelines Motivation Design guideline supports architects and developers in design and development issues of binding object-oriented applications to data sources The major task

More information

Lecture 19 CSE August You taught me Language, and my profit on t is I know how to curse. William Shakspere, The Tempest, I, ii.

Lecture 19 CSE August You taught me Language, and my profit on t is I know how to curse. William Shakspere, The Tempest, I, ii. Lecture 19 CSE 110 5 August 1992 You taught me Language, and my profit on t is I know how to curse. William Shakspere, The Tempest, I, ii. 1 Left-Over Language Features Today was the day we saw the last

More information

Analysis, Dekalb Roofing Company Web Site

Analysis, Dekalb Roofing Company Web Site Analysis, Dekalb Roofing Company Web Site Client: Dekalb Roofing Company Site: dekalbroofingcompanyinc.com Overall Look & Design This is a very good-looking site. It s clean, tasteful, has well-coordinated

More information

Lecture 4: Design Concepts For Responsibility- Driven Design Kenneth M. Anderson January 20, 2005

Lecture 4: Design Concepts For Responsibility- Driven Design Kenneth M. Anderson January 20, 2005 Lecture 4: Design Concepts For Responsibility- Driven Design Kenneth M. Anderson 1 of 25 Introduction Chapter 1 of Object Design covers topics that aid understanding of Responsibility-Driven Design Object

More information

Digital Marketing Manager, Marketing Manager, Agency Owner. Bachelors in Marketing, Advertising, Communications, or equivalent experience

Digital Marketing Manager, Marketing Manager, Agency Owner. Bachelors in Marketing, Advertising, Communications, or equivalent experience Persona name Amanda Industry, geographic or other segments B2B Roles Digital Marketing Manager, Marketing Manager, Agency Owner Reports to VP Marketing or Agency Owner Education Bachelors in Marketing,

More information

PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO

PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE Speaking the Language of OO COURSE INFO Instructor : Alper Bilge TA : Gökhan Çıplak-Ahmet Alkılınç Time : Tuesdays 2-5pm Location

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Hello, and welcome to another episode of. Getting the Most Out of IBM U2. This is Kenny Brunel, and

Hello, and welcome to another episode of. Getting the Most Out of IBM U2. This is Kenny Brunel, and Hello, and welcome to another episode of Getting the Most Out of IBM U2. This is Kenny Brunel, and I'm your host for today's episode which introduces wintegrate version 6.1. First of all, I've got a guest

More information

Without further ado, let s go over and have a look at what I ve come up with.

Without further ado, let s go over and have a look at what I ve come up with. JIRA Integration Transcript VLL Hi, my name is Jonathan Wilson and I m the service management practitioner with NHS Digital based in the United Kingdom. NHS Digital is the provider of services to the National

More information

Before you dive into learning how to use Sage Timeslips, performing a

Before you dive into learning how to use Sage Timeslips, performing a In This Chapter Chapter 1 Set ting Up Sage Timeslips Reviewing the billing process in Sage Timeslips Creating a database Setting preferences Understanding the restrictions for network users Before you

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module

More information

Automating Unpredictable Processes:

Automating Unpredictable Processes: Automating Unpredictable Processes: Building Responsive Apps using Business Rules By Carl Hewitt, Chief Architect, Decisions and Heath Oderman, CTO, Decisions Copyright 2016 Building Responsive Apps: Comparing

More information

(Refer Slide Time: 00:01:53)

(Refer Slide Time: 00:01:53) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 36 Design of Circuits using MSI Sequential Blocks (Refer Slide Time:

More information

ADO.NET from 3,048 meters

ADO.NET from 3,048 meters C H A P T E R 2 ADO.NET from 3,048 meters 2.1 The goals of ADO.NET 12 2.2 Zooming in on ADO.NET 14 2.3 Summary 19 It is a rare opportunity to get to build something from scratch. When Microsoft chose the

More information

The Design Patterns Matrix From Analysis to Implementation

The Design Patterns Matrix From Analysis to Implementation The Design Patterns Matrix From Analysis to Implementation This is an excerpt from Shalloway, Alan and James R. Trott. Design Patterns Explained: A New Perspective for Object-Oriented Design. Addison-Wesley

More information

(Refer Slide Time: 00:01:30)

(Refer Slide Time: 00:01:30) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 32 Design using Programmable Logic Devices (Refer Slide Time: 00:01:30)

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 9 OO modeling Design Patterns Structural Patterns Behavioural Patterns

More information

CRM-to-CRM Data Migration. CRM system. The CRM systems included Know What Data Will Map...3

CRM-to-CRM Data Migration. CRM system. The CRM systems included Know What Data Will Map...3 CRM-to-CRM Data Migration Paul Denwood Table of Contents The purpose of this whitepaper is to describe the issues and best practices related to data Choose the Right Migration Tool...1 migration from one

More information

Code architecture and organisation

Code architecture and organisation RenderDoc Code architecture and organisation This document covers RenderDoc at a high level, giving you an idea of how the UI is separated from the rest of the code and generally how the capture & replay

More information

The attendee will get a deep dive into all the DDL changes needed in order to exploit DB2 V10 Temporal tables as well as the limitations.

The attendee will get a deep dive into all the DDL changes needed in order to exploit DB2 V10 Temporal tables as well as the limitations. The attendee will get a deep dive into all the DDL changes needed in order to exploit DB2 V10 Temporal tables as well as the limitations. A case study scenario using a live DB2 V10 system will be used

More information

CATCH ERRORS BEFORE THEY HAPPEN. Lessons for a mature data governance practice

CATCH ERRORS BEFORE THEY HAPPEN. Lessons for a mature data governance practice CATCH ERRORS BEFORE THEY HAPPEN Lessons for a mature data governance practice A guide to working with cross-departmental teams to establish proactive data governance for your website or mobile app. 2 Robust

More information

Modeling of RAS and Relays in Power Flow Contingency Analysis. Jamie Weber

Modeling of RAS and Relays in Power Flow Contingency Analysis. Jamie Weber Modeling of RAS and Relays in Power Flow Contingency Analysis Jamie Weber weber@powerworld.com 217 384 6330 ext. 13 2001 South First Street Champaign, Illinois 61820 +1 (217) 384.6330 support@powerworld.com

More information

The Benefits of SMS as a Marketing and Communications Channel From The Chat Bubble written by Michael

The Benefits of SMS as a Marketing and Communications Channel From The Chat Bubble written by Michael The Benefits of SMS as a Marketing and Communications Channel 1 Why companies and organizations should do SMS. We re going to talk through from an organization or marketers point of view, what SMS is good

More information

Virtualization. Q&A with an industry leader. Virtualization is rapidly becoming a fact of life for agency executives,

Virtualization. Q&A with an industry leader. Virtualization is rapidly becoming a fact of life for agency executives, Virtualization Q&A with an industry leader Virtualization is rapidly becoming a fact of life for agency executives, as the basis for data center consolidation and cloud computing and, increasingly, as

More information

Chapter 1 Introduction

Chapter 1 Introduction Chapter 1 Introduction Why I Am Writing This: Why I am I writing a set of tutorials on compilers and how to build them? Well, the idea goes back several years ago when Rapid-Q, one of the best free BASIC

More information

(Refer Slide Time 3:31)

(Refer Slide Time 3:31) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions

More information

the NXT-G programming environment

the NXT-G programming environment 2 the NXT-G programming environment This chapter takes a close look at the NXT-G programming environment and presents a few simple programs. The NXT-G programming environment is fairly complex, with lots

More information

Recalling the definition of design as set of models let's consider the modeling of some real software.

Recalling the definition of design as set of models let's consider the modeling of some real software. Software Design and Architectures SE-2 / SE426 / CS446 / ECE426 Lecture 3 : Modeling Software Software uniquely combines abstract, purely mathematical stuff with physical representation. There are numerous

More information

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17 601.433/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17 5.1 Introduction You should all know a few ways of sorting in O(n log n)

More information

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.)

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) Design Pattern CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) A. Design Pattern Design patterns represent the best practices used by experienced

More information

Reactive Programming with RxJS 5

Reactive Programming with RxJS 5 Extracted from: Reactive Programming with RxJS 5 Untangle Your Asynchronous JavaScript Code This PDF file contains pages extracted from Reactive Programming with RxJS 5, published by the Pragmatic Bookshelf.

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Resilient Linked Data. Dave Reynolds, Epimorphics

Resilient Linked Data. Dave Reynolds, Epimorphics Resilient Linked Data Dave Reynolds, Epimorphics Ltd @der42 Outline What is Linked Data? Dependency problem Approaches: coalesce the graph link sets and partitioning URI architecture governance and registries

More information

Alongside this is AVB, an IEEE standards based technology that could stand on its own or underpin many of the existing networked audio protocols.

Alongside this is AVB, an IEEE standards based technology that could stand on its own or underpin many of the existing networked audio protocols. AES67 and AES70 The complete industry solution for audio and control Over the past three decades the audio industry has taken a number of steps to move into the digital age. Some argue that the digital

More information

SOLUTIONS GUIDE. I Don t Know What to or

SOLUTIONS GUIDE. I Don t Know What to  or SOLUTIONS GUIDE I Don t Know What to Email or How to Write My Email, Can I Have Some Ideas? We often hear from new students that one of their biggest challenges creating content for email campaigns. Not

More information

Website Validity DOING QUALITY RESEARCH MR. ERFURTH, 2015

Website Validity DOING QUALITY RESEARCH MR. ERFURTH, 2015 Website Validity DOING QUALITY RESEARCH MR. ERFURTH, 2015 Today s Goal Students can determine the validity and value of information they find on the internet while researching. Open Web vs. Paid Resources

More information

Fundamentals of STEP Implementation

Fundamentals of STEP Implementation Fundamentals of STEP Implementation David Loffredo loffredo@steptools.com STEP Tools, Inc., Rensselaer Technology Park, Troy, New York 12180 A) Introduction The STEP standard documents contain such a large

More information

Library Website Migration and Chat Functionality/Aesthetics Study February 2013

Library Website Migration and Chat Functionality/Aesthetics Study February 2013 Library Website Migration and Chat Functionality/Aesthetics Study February 2013 Summary of Study and Results Georgia State University is in the process of migrating its website from RedDot to WordPress

More information

Lesson 4 Transcript: DB2 Architecture

Lesson 4 Transcript: DB2 Architecture Lesson 4 Transcript: DB2 Architecture Slide 1: Cover Welcome to Lesson 4 of the DB2 on campus series. Today we are going to talk about the DB2 architecture. My name is Raul Chong and I am the DB2 on Campus

More information

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi. Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data

More information

Database management system Prof. D. Janakiram Department of Computer Science and Engineering Indian Institute of Technology, Madras

Database management system Prof. D. Janakiram Department of Computer Science and Engineering Indian Institute of Technology, Madras Database management system Prof. D. Janakiram Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 25 Basic 2-phase & 3-phase Commit protocol In the last lecture,

More information

Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 27 Copy Constructor and Copy Assignment Operator (Contd.) Welcome

More information

Detailed instructions for adding (or changing) your Avatar (profile picture next to your

Detailed instructions for adding (or changing) your Avatar (profile picture next to your Detailed instructions for adding (or changing) your Avatar (profile picture next to your name) on Ustream (disclaimer this is how it works for me using Internet Explorer it may look slightly different

More information