HMS A Modern Software Design Principle Applied To

  • Slides: 15
Download presentation
HMS A Modern Software Design Principle Applied To SAS Macro Programming: The Inversion Of

HMS A Modern Software Design Principle Applied To SAS Macro Programming: The Inversion Of Control Concept HMS Analytical Software Gmb. H - Dr. P. Warnat Ph. USE 2011

Company HMS Analytical Software is a specialist for Information Technology in the field of

Company HMS Analytical Software is a specialist for Information Technology in the field of Data Analysis and Business Intelligence Systems • Profile • – – • 40 employees in Heidelberg, Germany SAS Institute Partner for 15 years Doing data oriented software projects for more than 20 years Focus on life science industry Technologies – – Analytics and Data Management: SAS, JMP, R, Microsoft SQL Server Application Development: Microsoft. NET, Java HMS Analytical Software Gmb. H - Dr. P. Warnat

Our IT Services for the Life Science Industry (SAS, JMP, R and Microsoft) •

Our IT Services for the Life Science Industry (SAS, JMP, R and Microsoft) • • Independent Consulting Programming Data Management Data Mining / Analysis Training and Individual Coaching Application Development and Integration Software Validation HMS Analytical Software Gmb. H - Dr. P. Warnat

Two everlasting questions. . in software development: • „Are we building the right product?

Two everlasting questions. . in software development: • „Are we building the right product? “ (-> Validation) • „Are we building the product right? “ (-> Verification) Are we done, if our code is free of errors? HMS Analytical Software Gmb. H - Dr. P. Warnat No! Software quality is more than lack of errors!

Overview • Inversion of Control – A Software Design Concept • Inversion of Control

Overview • Inversion of Control – A Software Design Concept • Inversion of Control applied to SAS programming • Conclusion HMS Analytical Software Gmb. H - Dr. P. Warnat

Inversion of Control (Ioc) General principle: • implement high-level source code more independent from

Inversion of Control (Ioc) General principle: • implement high-level source code more independent from low-level code • Dependency relations are inverted or decomposed • Advantages: • – – more reusable code Decoupled code with less risk of side-effects when code has to be changed HMS Analytical Software Gmb. H - Dr. P. Warnat

Example Task Search a directory tree for SAS files… . . and für every

Example Task Search a directory tree for SAS files… . . and für every SAS file… . . generate a PDF report. HMS Analytical Software Gmb. H - Dr. P. Warnat

First Solution Approach To Example Task Main Program (MP) Sub Program (SP) “traverse. Dir.

First Solution Approach To Example Task Main Program (MP) Sub Program (SP) “traverse. Dir. For. Sas. Files. And. Do. Task” “get. Simple. Pdf. Report. Of. Sas. File” MP call SP SP What if there are other tasks to be done for every SAS file in a directory tree? HMS Analytical Software Gmb. H - Dr. P. Warnat

Support several file tasks: Solution approaches • For every new task, copy and rename

Support several file tasks: Solution approaches • For every new task, copy and rename main program and call a different Sub Program -> bad solution • Create a new parameter for the main program for selection of subtask to be executed, coditional call of sub programs -> better solution • Make your main program independent of actual subprograms, rather program against a certain subprogram-signature (interface); create one or more parameters defining the actual subprogram to be executed -> even better solution HMS Analytical Software Gmb. H - Dr. P. Warnat

Ioc Solution Approach To Example Task Main Program (MP) Sub Programs (SP) “traverse. Dir.

Ioc Solution Approach To Example Task Main Program (MP) Sub Programs (SP) “traverse. Dir. For. Sas. Files. And. Do. Task” “get. Simple. Pdf. Report. Of. Sas. File” “convert. Sas. To. Csv” … Call MP( sub. Program X = SP 2 ) SP 1 MP Call SP X New SP Programs can be used without changing the MP HMS Analytical Software Gmb. H - Dr. P. Warnat SP 2 SP N SPs sharing a common signature (interface)

Inversion of Control applied to SAS programming • Simple example macros: %MACRO call. Twice(a.

Inversion of Control applied to SAS programming • Simple example macros: %MACRO call. Twice(a. String, output. Variant); %DO i=1 %TO 2; %&output. Variant(&a. String. ); %END; %MEND call. Twice; %MACRO simple. Put(string. To. Output); %PUT(&string. To. Output. ); %MEND simple. Put; %MACRO upcase. Put(string. To. Output); %PUT(%UPCASE(&string. To. Output. )); %MEND upcase. Put; • Examples for the call of the main macro are: %call. Twice(test. String, simple. Put) %call. Twice(test. String, upcase. Put) HMS Analytical Software Gmb. H - Dr. P. Warnat

Inversion of Control applied to SAS programming • Application to the example task, searching

Inversion of Control applied to SAS programming • Application to the example task, searching a directory tree: %traverse. Dir. For. Sas. Files. And. Do. Task( dir=C: TempTest. Io. C, task. Macro=convert. Sas. To. Csv ) %traverse. Dir. For. Sas. Files. And. Do. Task( dir=C: TempTest. Io. C, task. Macro=get. Simple. Pdf. Report. Of. Sas. File ) HMS Analytical Software Gmb. H - Dr. P. Warnat

Inversion of Control applied to SAS programming • Using a flexible number of parameter

Inversion of Control applied to SAS programming • Using a flexible number of parameter for submacros: %MACRO call. Twice 2(m. Name. To. Call, m. Parameters); %DO i=1 %TO 2; %&m. Name. To. Call(p 0=a, %UNQUOTE(&m. Parameters)); %END; %MEND call. Twice 2; %MACRO m 1(p 0, p 1); %PUT output. M 1: &p 0 &p 1; %MEND m 1; • Alternatives: • String lists that you explicitly process with %SCAN • Parameter tables consisting of name-value pairs %MACRO m 2(p 0, p 1, p 2); %PUT output. M 2: &p 0 &p 1 &p 2; %MEND m 2; %call. Twice 2(m. Name. To. Call=m 1, m. Parameters=%STR(p 1=first Call)) %call. Twice 2(m. Name. To. Call=m 2, m. Parameters=%STR(p 1=second, p 2=Call)) HMS Analytical Software Gmb. H - Dr. P. Warnat

Conclusion • The Io. C can be easily applied to SAS programming Macros only

Conclusion • The Io. C can be easily applied to SAS programming Macros only rely on a certain interface describing a group of sub-macros. Ø More reusable code that is decoupled from specific submacros • Caller-macros that are calling sub-macros do not have to be changed if you need to call a new variant of the sub-macro Ø Less risk of side-effects when you change your code • HMS Analytical Software Gmb. H - Dr. P. Warnat

Thank you for your attention Dr. Patrick René Warnat HMS Analytical Software Gmb. H

Thank you for your attention Dr. Patrick René Warnat HMS Analytical Software Gmb. H Rohrbacher Str. 26 69115 Heidelberg Germany www. analytical-software. de HMS Analytical Software Gmb. H - Dr. P. Warnat