Posts

Showing posts from September, 2010

Operational Data Store (ODS)

What is an ODS? An environment: where data from different OLTP databases is integrated which provides a view of enterprise data that addresses operational challenges across more than one business function Characteristics of ODS: subject-oriented - catered to specific function or application (customer-centricity, risk management) integrated - from multiple legacy systems or new and legacy systems timely - data is continuously/ frequently being updated, typically more frequently than daily current - data is typically current with little history detailed - data is sufficiently detailed; not only at a summarized level central version of reference data ODS should be a separate data store from the data warehouse. Difference between ODS and Data Warehouse ODS DW Data Currency Current/ near-current Historical snapshot Data Loading Insert/ Update/ Deletion allowed Only loaded

Review: Agile Practices

Image
A mindmap review of a book on agile practices. Flash version can be found here

Review: Principles of Lean Software Development

Image
The mindmap review of this book. Flash version can be found here

Review: Peter Principle

Image
A mindmap review of this humorous book. Flash version can be found here

Review: Myth of Multitasking

Image
A mindmap review of this book. Flash version can be found here

Review: Leadership is an Art

Image
A mindmap review of this book. Flash version can be found here

Review: Carrot Principle

Image
A mindmap review of this book. Flash version can be found here

Review: Agile Practices

Image
A mindmap review of a book abour Agile Practices. Flash version can be found here

Deciding when to use an Agile or Waterfall methodology

Image
Comparison table: Skill level of developers: Possible hybrid approach for Brownfield projects Site survey Engineering Discovery Re-engineer Generate Test Acceptance Deployment What went wrong with a particular government project? Requirement solicitation happened prior to any development (as part of the tender exercise) Vendor organisation (especially management) isn’t agile enough but customer insisted on unprecedented RAD approach Supposed prototyping team is Overworked – had to develop the prototype during office hours and prepare for presentation after that Not agile enough Not trained to be agile What went wrong with a particular private out-sourced project? Requirement solicitation happened prior to any development (as part of the requirements specification Requirements specification was contractual Customer isn’t agile enough and was not well-prepared for SCRUM (lack of training, knowledge and acceptance) Project started with Wa

asmx .NET Web Service Nuances

When the WSDL specifies that the minimum occurrence of certain elements is zero, the .NET WSDL proxy generator will generate 2 properties for that element (instead of 1). On top of what usually gets generated – a property named according to the XML element – the generator creates another property named Specified of Boolean type. As an example: the WSDL specifies an XML element named policy of type string with minimum occurrence of zero. <xs:element minOccurs=”0” name=”policy” type=”xs:string” /> The generated proxy code will have a read/ write property named policy as expected public string policy {    get { return _policy; }    set { _policy = value; } } Due to the minimum occurrence constraint, another read/ write property named policySpecified will be generated. public bool policySpecified {    get { return _policySpecified; }    set { _policySpecified = value; } } The use of this property is to indicate to the framework that the particular property is in use (or has been s

InfoPath 2007 Tips

To publish InfoPath forms to Sharepoint with time-stamped filenames: concat("Submission as at ", now()) as the filename in the publishing interface To develop using Tools for Office SDK for InfoPath, make use of these: System.Environment.UserName to derive the logged-in username; thisXDocument.Role to derive the roles; thisXDocument.ViewInfos["View Name"] to get to the appropriate view; thisXDocument.DOM.selectSingleNode to select nodes based on the full XML document; docActionEvent.Source.selectSingleNode to select nodes based on the event parameter; Use ActiveX component to derive the domain and username if not using tools for office. Use ActiveXObject("Wscript.Shell") and the process environment. Calling web services from scripting code is not straight-forward and doing the same from the native InfoPath form without code is buggy! Monetary values should be dealt with using String instead of double as multiplication of double yields unexpected

SharePoint 2007 Tips

To display the username in a Title column Choose Default value as Calculated Value; Type in: =REPLACE(Me,1,FIND("\",Me),""); For Team Discussion to work Subject field is used only in the first article within the thread; A web-part would mainly use the Subject and Replies fields for listing; Threaded view – which displays only Threading – is the only useful view; To sort a list by the abbreviated month Create a choice type for month input ([Report Mth]). The values should be the abbreviated month (e.g. Jan, Feb, Mar, etc); Create a calculated column to assign a numeric month to the list; The formulae should be: =MONTH("01-"&[Report Mth]&"-"&1990); To find the difference between 2 dates Use the DATEDIF function on 2 date fields DATEDIF(d1 : Date, d2: Date, “D”) : Number Example: DATEDIF(dateColumn, [Today], “D”) To convert a text value (from InfoPath) to numeric Create a calculated column of numeric type Apply

Database Best Practices

Image
This is summarised from a book titled: Data Modeling Some best practices are described below: Database indexing index foreign keys index on columns with a lot of null values is useless frequently updated columns should not be indexed may not be a bad idea to use table scans for small tables (less than 1K rows) short-rowed tables (few columns) should use index-organised table b-tree index benefits performance if values are selective (distinct). The higher the index selectivity ratio, the better Database views perform better than SQL statements since views are pre-compiled (but Oracle does cache statements) stored procedures perform better than views generally Naming convention Constraint : <TableName> _<Type> _<ColumnName> where may be PK, FK, UQ (unique constraint), CK (check constraint) Index : <TableName>_<Type>_<ColumnName> where may be UX (unique index), IX (non-unique) View : <EntityOrTableName> _VW Code table s

System Architecture and Design Trade-off Document

Image
It is a great idea to write a System Architecture & Design (SAD) Trade-off Document. The format is tabular and will look like the following: Module/ category Issue description Possible alternatives Decision Decision rationale Traded-off attributes Traded-in attributes Consequence/ constraints introduced Some examples of traded attributes are listed in the following table: Category Attribute System Performance Reliability - ability of the system to maintain operating over time (MTTF) Performance - responsiveness of the system to stimuli or events as well as throughput of the system System Control Maintainability - ease with which a system can be modified to correct faults, improve performance, or adapt to changing environment Data timeliness - data latency for information flowing into and out of the system Security - measure of system's ability to resist unauthorised access or DOS Supportability - ease with which a system can be maintained operationally Testa

Deferring Decisions

At times, it is a good idea to deferred decisions until the last responsible moment. In so doing, more information may be made available such that a more informed decision can be made. Deferred Decision - Delay commitment (decision or making a choice) until the last responsible moment (when inaction would results in a potentially irreversible outcome)

Difference between a Report and a Query

Image
Apart from the nomenclature difference, there are some distinctions between a report and a query. This following table summarises the difference:

Unit testing legacy code

What is legacy code? Some define legacy code as code without proper unit tests . Consider these: Did you just write some legacy code yesterday? What happens when you are tasked to take over the maintenance of someone else's code; someone's legacy code? What happens when you need to modify someone's legacy code? Some steps to take when planning to unit test legacy code: identify the area of change build safety net over the area before touching/ changing it refactor the code to ease adding new code write unit test for issue write code for fix/ enhancements Some links to refer to: http://members.pingnet.ch/gamma/junit.htm http://c2.com/cgi/wiki?UnitTestingLegacyCode http://spin.atomicobject.com/2008/12/29/testing-and-legacy-code-a-primer http://www.ibm.com/developerworks/java/library/j-testng/

Using iPad for the Insurance industry?

Some links to using iPad for the enterprise/ insurance http://www.insurancenetworking.com/issues/13_8/ipad-as-insurance-business-platform-ipad-as-an-insurance-business-platform-25560-1.html http://insurance-technology.tmcnet.com/topics/insurance-technology/articles/95402-insurance-provider-geico-announces-android-ipad-mobile-insurance.htm Apple enterprise program: https://developer.apple.com/support/ios/enterprise.html Enterprise provisioning profile deployment: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009505-CH1-SW1 Enterprise deployment: http://help.apple.com/iosdeployment-apps/ Links to iPad for eSignature http://www.silanis.com/solutions/insurance.html http://www.silanis.com/news/press-releases/2010/apple%E2%80%99s-ipad-to-propel-the-adoption-of-e-signatures-in-insurance-says-silanis.html http://tenonedesign.com/autograph.php http://www.immonline.co

SCM: Use a Branch or a Tag?

When do we use a branch or a tag for source code management? Salient features for each are listed. Tag code snapshot for a short duration of time tag gives more control to developers Branch code development isolated from the main trunk particularly for enhancements work to be done on a historical version major code changes concurrent multi-user development (with the main trunk)

Integration Strategies

Types of integration Data-level Share data; not behaviour Minimal change (if any) to both source and target systems Can be database or file-based ETL File-data transfer Direct database access Bypass business logic (may need to duplicate) Overall data integrity may be compromised If writable, may lead to data corruption and referential integrity violations Capabilities include Data transformation Data validation Data access Schema definition Mapping Schema recognition Application-level Share functionality – business logic Based on API Composite applications Business Process level Share business processes Specified using BPMN Glued together using BPEL(4WS) and BPML Start by defining business processes; then specify logical integration within it Capabilities include: Rules processing Business transaction management Workflow Orchestration Event processing Schedule Presentation Share views Using a portal Non-invasive Application Integration methods Web services - Applicatio