Extreme Abstraction. If you give a man a fish he will eat for a day. … But if you teach a man to fish he will buy an ugly hat. … And if you talk about.

Slides:



Advertisements
Similar presentations
Designing Reusable Frameworks for Test Automation
Advertisements

Microsoft ® Access ® 2010 Training Design the tables for a new database.
Intro to Access 2007 Lindsey Brewer CSSCR September 18, 2009.
QuickBooks Tricks. Missing and Duplicate Documents (Control and Error checking Issue) Missing Check Numbers Report (Included) Missing & Duplicate Invoices.
Class-level Methods Alice. World / Class Method World method A general method that may refer to multiple objects; not closely associated with any particular.
FilemakerProductConference ‘12 Development Principles For a Hybrid Approach to Extensible Custom Development Chris Cain.
Establish Access To, Making Contact With, and Selecting Participants A Sharon A Jamie.
Computer Monitoring System for EE Faculty By Yaroslav Ross And Denis Zakrevsky Supervisor: Viktor Kulikov.
  Adds “Share” button to any webpage  Add it to a template page so it’ll be on every page  Select.
19: Protection1 PROTECTION Protection is the mechanism for controlling access to computer resources. Security concerns the physical integrity of the system.
HCI 201 Week 4 Design Usability Heuristics Tables Links.
Database Design Concepts Info 1408 Lecture 2 An Introduction to Data Storage.
Keys Chapter 8 Database Design for Mere Mortals. Why Keys Are Important They ensure that each record in a table can be properly identified. They help.
Database Design Concepts Info 1408 Lecture 2 An Introduction to Data Storage.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
Programming – Touch Sensors Intro to Robotics. The Limit Switch When designing robotic arms there is always the chance the arm will move too far up or.
MS Access: Database Concepts Instructor: Vicki Weidler.
CPT 140 Programming Constructs1 OBJECT ORIENTED TECHNOLOGY Terminology and Basic Concepts.
A little engineering on Rails Robert W. Hasker. Goals Intro to the Rails framework ▫Basic concepts: MVC, Active Record ▫A bit of Ruby Using Rails to build.
Lecture 5 Relational Databases and going multiuser.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
MEDIN Data Guidelines. Data Guidelines Documents with tables and Excel versions of tables which are organised on a thematic basis which consider the actual.
CIT 590 Intro to Programming Style Classes. Remember to finish up findAllCISCourses.py.
E-Learning Material Applied Business Modelling. Business Patterns What are business patterns? Process interaction Practical process modelling Summary.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
1 California State University, Fullerton Chapter 7 Information System Data Management.
Software Project Failure Software Project Failure Night Two, Part One CSCI 521 Software Project Management.
Interview Tips 21 st Century Journalism Adapted from K. Habiger.
User Experience and Interface Design for Web Apps
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
2. GATHERING REQUIREMENTS Object-Oriented Analysis and Design NTPCUG.
1 What to do before class starts??? Download the sample database from the k: drive to the u: drive or to your flash drive. The database is named “FormBelmont.accdb”
PHP and MySQL Code Reuse, OO, Error Handling and MySQL (Intro)
Database Application Design and Data Integrity AIMS 3710 R. Nakatsu.
Objects & Dynamic Dispatch CSE 413 Autumn Plan We’ve learned a great deal about functional and object-oriented programming Now,  Look at semantics.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Covenant College November 27, Laura Broussard, Ph.D. Professor COS 131: Computing for Engineers Chapter 5: Functions.
Information Technology Division Executive Office for Administration and Finance Service Oriented Architecture An Enterprise Approach to Enabling the Business.
Software Development. Software Development Loop Design  Programmers need a solid foundation before they start coding anything  Understand the task.
1 CHƯƠNG 4 Creating Relational Databases Understanding Table Relationships Example: This database tracks customers and their orders in two separate.
Setting Up Your TSS Course. www/bcpss.org and log in.
Survey Results & analysis for Support Site Internal Survey.
The Last Lecture CS 5010 Program Design Paradigms "Bootcamp" Lesson © Mitchell Wand, This work is licensed under a Creative Commons Attribution-NonCommercial.
A Conference Paper Layout On-A-Slide
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
Today… Modularity, or Writing Functions. Winter 2016CISC101 - Prof. McLeod1.
Sales logiq Web Design 2.0 The Power of Design Patterns Mike Baxter
Advanced Analysis Services Security Chris Webb Crossjoin Consulting Limited.
AOIT Database Design Unit 3, Lesson 9 Data Integrity Copyright © 2009–2011 National Academy Foundation. All rights reserved.
Software Development.
Informer Best Practices Report Writing and Maintenance Tips
GO! with Microsoft Office 2016
Knowtulus Technologies Pvt.Ltd
OOP What is problem? Solution? OOP
GO! with Microsoft Access 2016
Core LIMS Training: Advanced Administration
All about Technology: Using Voki Avatar in the classroom
Big Data Considerations
Making Procedural Methods
Engineering Computation with MATLAB
Creating Functions with Parameters
Lesson 3.2 Review: Identifying concepts
Design Patterns for Recursive Descent Parsing
Software design and architecture
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Software Development Techniques
CVs and Cover Letters aka those things you’ve heard of and sorta feel like you should have started working on but you don’t have the time, the interest.
CVs and Cover Letters aka those things you’ve heard of and sorta feel like you should have started working on but you don’t have the time, the interest.
Presentation transcript:

Extreme Abstraction

If you give a man a fish he will eat for a day. … But if you teach a man to fish he will buy an ugly hat. … And if you talk about fish to a starving man then you're a consultant. -Dogbert

Abstraction  Dealing with classes and patterns rather than particular instances  Types/Levels  “Copy and Tweak” – Easy to copy, but lots to change  “Copy and Paste” …and you’re fine if nothing changes Abstracted – copy and paste, AND make changes in one place as needed

WET vs. DRY – our philosophy  “We Enjoy Typing” vs. “Don’t Repeat Yourself” (Thank you, Jason Young!)  Use DRY methods for things that should change universally  Use WET methods for things that should change only for particular instances

Examples/Demo

xBase Intro – some background  Basis for dozens of solutions  Core “DRY” functionality, with ability to create “WET” (“damp?”) customizations  Drawing the line is key  Administration, navigation, contacts, activities  NO “customers”, invoices, stock, etc.  Naming conventions are established, predictable and parsable

xTag and xScript  Dealing with classes and patterns rather than particular instances  Creates single points to effect universal changes  Processes are unique, but there are and should be patterns in the Functions  (In the same way that scripts are unique, but the steps perform consistently)  DRY script(s), WET parameters

xLink  Dealing with nuances and details that would be impractical with solely WET development  Allow the user to select one or more records  Why not just a value list?  Get actual keys  Prevent duplicates – help the user pick existing record(s), and make them check  Deal with duplicates that already exist – “which John Smith do you mean?”  Add new if the record doesn’t exist

Universal Drill-Down Button  Paste  Determines find parameters based on RelationInfo  Accommodates navigation rules and procedures, current and future  Parameters are all custom functions, which can be changed in one place

Goals of Abstraction  Easier re-use with less typing (“Don’t Repeat Yourself”)  A way to “hold what you’ve got” and not “reinvent the wheel”  Create single points to effect universal changes  Deal with nuances and details that would be impractical with solely WET development  Create consistency for the user (not just the developer)

Foundational Techniques  Naming Convention – parsable and meaningful  Name all objects  Idiomatic Development – Consistent patterns  Add meaning – standard TLA’s, “main” layouts, easy-to-identify primary keys…  Think a LOT about scope. What does your code “stick to”?  Favor abstractable functions – Find instead of GTRR, for instance  Copy more than you create

Discussion