|
|
| |
| |
 |
Click here to view DSI's Q2 2009 Technical Summary PDF |
|
|
|
Introduction
Chief Technical Architect, Yagiz Erkan, highlights some of DSI’s software development technologies and technical achievements for this quarter.
Welcome to DSI’s Technical Skills Summary.
DSI’s set of software development skills and practices allow us to be an agile technology partner to our clients. Our complementary business acumen enables us to create innovative products like the recently released ‘iDeal A Day iPhone’ application and the CPM Toolkit, a performance management solution for the development lifecycle.
Both products are designed to help our clients generate revenue, increase cost-effectiveness, manage regulatory compliance, integrate information and transition to “next-generation” technology.
|
|
| |
Working with clients that demand high quality technical expertise necessitates that we actively evaluate the latest technologies available, which currently include; Silverlight 2.0, Apple’s Objective C, GWT, Gigaspaces and Foglight 5 enterprise application instrumentation.
This page outlines DSI’s industry leading tools, practices, skills and architectures that allow us to be a flexible and agile technology partner to our customers. Remember, you can always stay in touch with the DSI development team at the DSI Blog http://blog.decaresystems.ie
Feel free to comment and
interact. See you there!
Regards,
Yagiz
|
.....................................................................................................................................................................................................
|
Java |
| |
|
Eclipse is the main IDE used for Java development in DSI in additon to Oracle JDeveloper. In reality, our build.xml-based project structure is IDE-agnostic. We have created our own Eclipse plug-in to complement our agile software development process. This plug-in defines a standard project structure and manages the dependencies automatically keeping the build.xml synchronized.
We have used Oracle Application Server,
BEA WebLogic, IBM WebSphere
and JBoss Application Server across
various
projects. Apache Tomcat is our preferred
Web container for lightweight Web applications.
We are agile in our development; therefore the tools that we internally use follow this concept. Even though we value individuals and interactions over processes and tools, it is extremely important to have tools that don't disturb the development flow. Atlassian Bamboo Luntbuild is the Continuous Integration (CI) software that we put in place. It runs our standard Ant build scripts defining the steps containing:
- Programmer (Unit) tests developed using JUnit, jMock, GSBase, groboUtils.
- Code checks using FindBugs, PMD and CheckStyle.
- Code coverage analysis done by Atlassian Clover.
- (Optionally) integration tests (using extensions like dbUnit and JUnitPerf.)
- (Optionally) automated system tests (using extensions like embedded-Jetty, HTMLUnit, jWebUnit and StrutsTestCase)
- DSI’s continuous performance management product, CPM Toolkit, is used to control the quality of the Java software under development during the construction phase of the software lifecycle. The CPM Toolkit is implemented as part of a chained build process within our CI environment.
The dependency management in a build file is implemented using Maven 2. We use Subversion as our internal SCM software and we often integrate with our clients' SCM systems as well, systems such as PVCS, ClearCase and Perforce.
Spring Framework is the backbone
of all DSI projects. Hibernate, JPA and iBATIS are used as persistence frameworks/standards
through their respective Spring templates.
When stored procedures are required, we
use either OrindaBuild or access
them directly, both through Spring (Brendan
will discuss Spring in a bit more detail
later).
Apache Struts has been the presentation layer framework used in our projects since we deprecated our own MVC framework in 2002. In addition to Struts we have used Spring MVC and Tapestry as presentation frameworks on customer projects. GWT (Google Web Toolkit) and JSF (JavaServer Faces) are also two excellent frameworks that we're currently using on projects.
RIAs (Rich Internet Applications) are created using various JavaScript frameworks such as GWT, dojo, DWR and jQuery. Having also used Prototype and Scriptaculous in the past, we are mainly using GWT in order to add AJAX functionality in our Java Web applications. Eclipse Web Tools Projects and IBM's AJAX Framework Toolkit provide good environments to build AJAX components.
Drools helps us
externalise the business rules.
Aside regular XML parsers and XSLT libraries,
we've used XMLBeans and Apache
Digester to create a rich interaction
between XML documents and our object-oriented
applications.
As a Web Services stack, we use Apache
Axis. We find it to be a powerful tool
when used in conjunction with Spring
Framework to define handlers and services
in a Spring configuration file, allowing
us to take advantage of the IoC container.
Even though we developed projects taking
full advantage of the EJB features
in the past, our recent applications are
built in
a lightweight manner. Rarely, when EJB is required, we strive to use
it as a remoting mechanism. Spring
Remoting
abstracts the EJB access layer so that we
still maintain the lightweight aspect of
the architecture. In this case, even
the transactions are managed using declarative
transactions in Spring.
Oracle is the major RDBMS that we utilize.
We also have projects including Microsoft
SQL Server and
IBM DB2 in their infrastructure.
Projects requiring high scalability (linear scalability) benefit from our experience in working with GigaSpaces. GigaSpaces define an intuitive programming model and its SLA-driven container provides unmatched runtime flexibility in automatic scaling. Alternatively, we offer a message-driven full open-source stack using Mule and Apache Camel. Redwood CronacleBeans provides event-driven
automation of Java and non-Java processes
and is the Job Scheduler that
we use for our batch applications. In order
to optimize Java applications running in
a batch environment we had to be able
to run our Java processes in -server mode
to take advantage of JVM (Java Virtual Machine)
optimizations such as aggressive
inlining. Considering the long running nature
of these types of processes, we needed a
method to 'inject' jobs into the JVM. CronacleBeans
fit the bill perfectly; providing us with
the ability to inject jobs into a CronacleBeans
enabled JVM in an
adhoc or scheduled manner.
Using our own CPM Toolkit product in conjunction with Quest Software’s JProbe and Performasure ensures that our applications meet the expected quality standards. As we revised our Java software development process and infrastructure, Quest’s applications became an integral part of our new development environment. For more detail on Application Performance Management services please visit http://www.decaresystems.ie/service_APM.html
In the past software developers have largely ignored how their work can be managed and monitored once it reaches the production environment. Many developers use various logging methods to output processing metrics to flat files or database tables. These go some way to providing support organizations with visibility to what is actually going on in the application but in many cases this approach fails in providing any true value. DSI has a different approach. For our large scale enterprise applications, we instrument our applications to interface via JMS to Quest Software’s Foglight 5 application management software. Now customers can see how their entire environment is performing on one single dashboard. Needless to say, DSI provides Foglight 5 dashboard consulting and development services to customers. |
| |
QA |
| |
DSI is benefitting from the newly released Microsoft Visual Studio Team System (VSTS) 2008 Test Edition, which we are using in conjunction with the Visual Studio Team System 2008 Test Load Agent software to web test and load test our .NET and Java web-based applications.
Our DSI test team uses QuickTest Pro for automated tests and Grinder and JMeter for load tests.
Our internal bug tracking system is ITracker using MySQL and running on JBoss. We are currently moving to Jira. Externally, more than often, we will often use our clients' systems such as Serena TeamTrack, Bugzilla or Rational ClearQuest |
| |
Oracle |
| |
For custom Oracle applications development, we previously used shell and SQL scripting, PL/SQL, SQL*Loader, Pro*C and Oracle Developer (Forms/Reports). We have set up data interfacing and concurrent programs in Oracle Financials (Receivables, Payables, GL, Cash Management). Recently we have moved to a Redwood Scheduler-based architecture with JCS scripting. We have also introduced Crystal reporting. For large scale data conversion projects Mercator and Microsoft Biztalk have been used. |
| |
Mainframe |
| |
The DSI skill set also covers mainframe 3GL development – this includes the VSE COBOL programming language, CICS TP monitor and VSAM file storage and access method under the VSE operating system. |
| |
iPhone Application Development |
| |
The latest generation of iPhones and mobile phones offer screen sizes and functionality that now makes mobile commerce a viable channel for multi-channel retailers. We have taken a major step into this mobile commerce world with our new ‘iDeal A Day’ iPhone application.
Built in Objective C and using the iPhone OS 3.0, iDeal A Day’ iPhone application currently has a number of flavours including a Business to Business model, a promotions edition and a version that fully integrates with Microsoft® Commerce Server 2009. We have built an ‘iPhone Management Console’ for the promotion edition. This is a standalone application that allows organisations to easily manage their iPhone product promotions. The iDeal A Day’ iPhone application is integrated with analytics packages Omniture and Pinch Media Analytics and can be easily customized to interface with third party and custom Ecommerce, catalogue and promotion systems. More information on the ‘iDeal A Day’ family of applications can be found on our website http://www.decaresystems.ie/iphone.html |
| |
| |
| ........................................................................................................................................................................................................ |
| |
|
|
| Anthony Geoghegan
With a strong emphasis on web applications DSI utilises many of Microsoft’s latest technologies and Frameworks. For traditional web applications, ASP.NET 3.5 provides a powerful toolset, rich in features and functionality. We also have a skilled team employing technologies like Silverlight 2.0 for the pure RIA (Rich Internet Application) experience. Use of Microsoft approved JavaScript libraries such as JQuery, help bridge the gap between traditional ASP.NET style applications and more exotic Silverlight 2.0 applications.
We have strong development experience in the realm of Remote Service APIs, utilizing both WCF and .NET 2.0 Web Services. We have hosted service APIs as console applications, Windows Services and IIS web applications. We regularly use alternative transport protocols such as TCP and SNMP for highly efficient messaging and don’t just rely on HTTP for transport. We routinely design enterprise scope Service APIs, integrated with Active Directory Kerberos based security in completely fault-tolerant, load balanced environments
|
|
Microsoft technologies being evaluated include, Dynamics for Ruby-like, rapid deployment of CRUD applications, without Ruby’s annoying lack of flexibility, MVC, Microsoft’s Model View Controller Framework and Linq to Entities, as possibly .NET’s first really successful ORM implementation. We have a strong interest in developing cloud based applications within the Azure environment. Once commercially viable applications are possible within the Azure cloud infrastructure, DSI will be adopting this technology for some of our clients.
Dependency Injection or IOC (Inversion of Control) is employed in many of our applications using the Spring.Net Framework. This is a powerful, but lightweight, Dependency Injection Framework, minimally intrusive, analogous to the Java version but with strong .NET specific functionality.
Code documentation is a strong ethos within DSI and XMLDOC comments are extracted and compiled into web based documentation using Sandcastle. Static Code Analysis is provided within Visual Studio and can be enforced by a source control check in policy.
Source Control for Microsoft applications is provided by Team Foundation Server 2008. DSI was an early adopter of this award winning product. TFS offers more than just advanced source control, by utilising Work Items and Bug tracking together with Scheduled CI builds and automated test execution, TFS offers a completely integrated Project Development platform. Every development environment we use successfully integrates with TFS. DSI has experience in migrating from both Visual Source Safe and TFS 2005 to TFS 2008.
Within the realm of Microsoft SQL Server, as well as supporting and utilising the traditional database features, DSI has been developing Message-Orientated applications for customers using the relatively new Service Broker technology in SQL Server. Message-Orientation is best practise for avoiding many limitations associated with traditional RDBMS functionality. Visual Studio 2008 Team Edition for database Professionals is leveraged, to facilitate the complete capture of entire database schema within source control.
As part of ongoing maintenance and upgrade programs for some of our customers, we support legacy COM, COM+ and classic ASP applications often developed with VB6 and VC++. We are also experienced in operating in mixed environments of legacy and .NET components. We are familiar with integrating three-tier ASP.NET applications into existing two-tier classic ASP web applications. We have even developed .NET based replacements for VB6 COM+ components. One of our most innovative projects involved load balancing legacy COM+ applications, our solution involved WCF based COM+ proxies.
Performance profiling and memory utilisation assessment is provided within the Visual Studio IDE, and is often supplemented with custom diagnostic services and performance counters, to provide realtime feedback into application performance.
Automated testing is a strong design imperative within DSI. Automated testing is provided by the VSTS (Visual Studio Test System) integrated with both TFS and Visual Studio, with Mock Object support from the Rhino Mocks Mock Object Framework. We adopt both a Unit Test and an Integration Test approach, for all our developed applications, wherever possible.
Scripted deployment is now provided with custom scripts developed in Powershell, Microsoft’s powerful new scripting environment. Strong integration scripts with TFS have been developed in DSI to allow for completely scripted application and database artefact deployment. Using Powershell l, it is possible to script function calls to any .NET or COM based component.
Developing Microsoft Sharepoint integrations is one of the latest tasks we have undertaken to develop skills in. Many clients see such tasks as opportunities to leverage the existing software investments.
DSI is a Microsoft Gold Certified Partner with competencies in developing Custom Development Solutions and Data Management Solutions. We have a strong program of continuing employee training, promoting and subsidising up to date Microsoft Certification.
Finally, we understand that staying current with the latest Microsoft technologies and Frameworks is vital for delivering high value applications for our customers. To that end, we actively participate in conferences and presentations, and share our expertise via the company Blog http://blog.decaresystems.ie.
|
| |
| ........................................................................................................................................................................................................ |
| |
|
|
|
The most reliable empirical predictors for success in a software development project are the characteristics of the people working on it – their attitudes, experience and abilities. No process can consistently deliver successful results without a team of quality operating it. The wrong process, on the other hand, can prevent motivated, bright and experienced people from achieving the levels of success that they would achieve under the right process.
So process is important - and we can even talk of right and wrong processes - but only insofar as the process enables developers to get the job done. Agile (also known as Lightweight or Code-Centric) approaches are designed to provide just the right balance between formalized structure and informal practices. It allows developers to consistently make successful deliverables, by facilitating the likely adjustments to requirements (from the customer), as well as the all-too-common changes to detailed design (when unforeseen complexity is encountered by the developers). It results in both of these types of changes being encountered earlier in an agile project, which reduces the effort involved in dealing with them. |
|
Agile takes into account that the best form of communication between people is face-to-face, so this is preferred over formalized documentation. It recognizes that the best way to document the detailed design of a system is in working code, so it values this over formalized documentation. Formalized documentation still has its place of course, but to be part of an agile process, it must add enough value to merit the effort required.
The tooling that supports our Java Development Infrastructure is robust and fit for purpose; Confluence (Wiki), JIRA (Task Management), Bamboo (Continuous Integration Engine), CPM Toolkit (Continuous Performance Management), Fisheye (Subversion Browser), Crucible (Peer Review Application), Maven (Build Management System), Eclipse (Standard IDE), Subversion (Source Code Control) and OSS License Checker (Build Management System Plug In).
In our .Net development teams we use the Microsoft Team Foundation Server product for organizing projects, managing source code and performing Continuous Integration.
Our release management process includes a software security review which we feel is a vital part of software delivery. We use IBM’s Rational AppScan security software to protect our customers IP against the threat of attacks and data breaches. DSI has been using security software to scan DSI developed and supported software since Q4 2008.
For more details on our software development process, please visit the Building Better Software section on our web site at http://www.decaresystems.ie/building_better_soft.html.
|
| |
| ........................................................................................................................................................................................................ |
| |
|
|
|
Quest Software’s market leading Application Performance Management (APM) Suite are is the tools of choice for assisting DSI in resolving performance issues for both in-house applications, and more frequently applications developed by external development companies. Coupled with DSI’s expert knowledge of Java/.Net application performance tuning techniques, DSI provide a comprehensive set of performance related services.
|
|
DSI implements an APM enhanced process to incorporate proactive performance management throughout the development life cycle (see figure1). The DSI built CPM Toolkit has become an integral part of this Java development and build process. By introducing Continuous Performance Management (CPM) into a Continuous Integration environment, we are identifying and capturing costly performance issues early in the development phase. The toolkit leverages Quest Software’s JProbe to automate the collection of performance, code profile and code coverage data to generate performance benchmarks. We can therefore focus in tracing measurable code defects; reducing time spent investigating false positives and preventing premature optimisation.
Figure 1 - APM Enhanced Process
The toolkit includes performance profiling, historical build analysis, performance benchmarking, alert notifications, a user friendly CPM dashboard and search capabilities. For DSI, the most significant benefit of the CPM Toolkit is how it reduces the cost of Java application development by:
- Automating the execution & analysis of Unit Tests
- Utilising existing Unit Tests
- Reducing regression testing costs
- Finding and resolving performance problems early in development
Beyond cost savings, using the CPM toolkit gives DSI’s project managers a new level of visibility across development projects and enforces higher software quality standards. As a software development house with a diverse range of global client projects, this capability enhances project management oversight to ensure service level agreement delivery.
A Community Edition of the CPM Toolkit is also available. While it does not contain the full functionality as provided in the commercial version of the product, it allows users gain access to the comprehensive analytical capability of the toolkit for free. For more information on the Community Edition and the CPM Toolkit Early Access Program, please visit http://www.decaresystems.ie/cpm
Through advanced usage of Quests’ APM Suite; FogLight, PerformaSure and JProbe DSI can limit the business impact of performance issues and guarantee the scalability, robustness and performance of Java applications. These tools have been employed in a number of different environments, varying in scale and complexity, to incorporate proactive performance management for DSI clients. These environments include:
- eCommerce and high volume transaction processing systems running on clustered Dell 1855/1955 Blade Servers powered by Red Hat ES3 Linux
- Real time insurance claim pricing systems running on SunFire V210 powered by Solaris 9
- High volume insurance enrolment systems running on HP-UX 11i servers
- Internet Banking applications running on IBM’s Websphere/DB2/AIX environment
- Public Sector applications running on Oracle Application Server 10.1.x
- Mobile Exchange Software running on Red Hat’s JBoss platform
- Telecommunications application running on HP-UX server, MySQL, Oracle and Mule Enterprise Service Bus messaging framework.
- Critical financial account maintenance system running on Websphere 6x, IBM VM and IBM AIX.
To troubleshoot and identify memory and performance problems in our .Net application development, we use ClrProfiler and Performance Profiling built into Visual Studio 2005.
Other techniques that DSI employs to help resolve performance issues and increase overall throughput are:
- VM Tuning including memory usage analysis and garbage collection tuning
- Resource utilization including CPU usage, network bandwidth usage, database resource management
- Identify and resolve application performance bottlenecks
- Architecture performance reviews
- Code performance reviews
With the emergence of virtualised environments as a real alternative to the more traditional ‘hard’ machine deployments, DSI have been using Amazon’s Elastic Computing Cloud service, which comes as part of Amazon’s Web Services suite. We have designed and implemented an N-Scalable Continuous Performance Management (CPM) environment, built on Linux, which would allow us to scale, stress, test and gather performance data on an environment of enormous size and complexity at a substantially reduced cost. Along the way we have addressed a number of key areas of concern like:
- Usability via a secure remote desktop environment
- On-demand Scalability
- Integration with existing data sources
- Ensure the Security of data transmitted across the wire
....................................................................................................................................
|
|
|
|
DSI ensures that a client’s infrastructure provides the scalability and reliability they need, while leveraging their existing infrastructure where possible.
From a server perspective, we design solutions based on hardware from single CPU blade machines through Sun V880 clusters to Enterprise Class IBM mainframes: while ensuring that network, firewall, storage and load balancing infrastructures are sufficiently scalable and meet the required service levels.
|
|
|
As part of any engagement, we ensure a strategic choice of OS. Traditionally, we have used a mix of MS-Windows, Solaris, HP-UX, Linux and AIX. Over the past year or two multi-core 64-bit processors have become the defacto standard. The cost performance characteristics of this platform has meant that even ardent HP-UX and AIX supporters have assessed 64-bit Linux and Windows solutions as part of their strategic direction. We continue to see a significant uplift in MS-Windows as a platform of choice.
The presentation tier is of increasing importance to our clients - ensuring the right users see the right things. We ensure that the security design is considered upfront, ensuring integration with existing user directories such as Microsoft Active Directory and Sun One Directory Server. We’re noticing several of our clients moving away from off the shelf access management solutions such as Computer Associates SiteMinder. I believe this is as a result of inconsistent roadmaps from vendors and the increasing maturity of the interoperability standards for identity management and federation. For our Microsoft based customers, we continue to leverage Kerberos with tailored identity management solutions based on the Microsoft platform.
Service orientation and the increasing acceptance of web services in the industry via the publicity garnered by SOA, have facilitated the scaling of the application tier. This has allowed many pieces of inexpensive commodity hardware to be placed behind a load balancer (Cisco CSS, F5 BIG-IP). The HTTP requests which come from a variety of consumers, even including IVR systems, are served reliably. Significantly the access management challenges traditionally faced on the presentation tier are now at the application/service tier. We pay close attention to security at this tier, leveraging the maturing WS-Security standards, while ensuring they don’t compromise the web service ‘s interoperability. Over the past year I’ve been working with customers to run security assessments using IBM Rational AppScan against their externally available web services using industry standard security assessment software and am happy to report that DSI’s focus on security principles has paid dividends.
The database tier is traditionally highest cost to the customer from a hardware and software licensing perspective. For high-end transactional systems, Oracle RDBMS has been the default choice for many years due to its active-active clustering and its support for proven high end 64-bit operating systems. DSI’s proven skills garnered during the early adoption of Microsoft’s SQL Server 2005 has lead to DSI earning a Microsoft Data Management Solutions competency, this in conjunction with our Microsoft Gold Partner status gives us the resources to build large scale Enterprise Systems on the SQL Server platform. DSI is has been working for over a year on a custom Enterprise Claims Processing system for a large US based company SQL Server 2008 is a core component of this solution and over the past year we’ve been very impressed with its scalability and reliability.
Over the past number of years DSI has helped clients to adopt virtualization technologies to optimise the three scarcest commodities in a datacenter – space, power and cooling. We’ve seen virtualization go from a lab and test platform to a mechanism that allows our customers to scale their production infrastructure on demand. The DR advantages of virtualization are well known, but even now, several years on, I get an occasional email from our customers mentioning how my idea of virtualizing one of their domain controller’s saves them hours in DR testing. EMC’s VMWare still has the market share, but we’re gradually seeing some adoption of 2008 Core with Hyper-V and I suspect the certification deal with RedHat will help increase the market share of Hyper-V.
|
| ........................................................................................................................................................................................................ |
|
|
|
|
John Ryan,
Our creative team designs the presentation layer for Web applications and front-end for Web sites using:
W3C standards compliant and accessible XHTML, CSS and JavaScript for web front end developed in Eclipse for Java projects, and in Microsoft Visual Studio for .Net projects.
|
|
|
Graphics creation for web front end and branding/marketing materials produced with Photoshop, ImageReady, Illustrator, and Fireworks.
Rich Internet Application development with Apple iPhone, Flash, Flex, AJAX and Silverlight 1.0 technology. We are actively evaluating Silverlight 2.0 for one our .Net web projects.
As a communications device and a multimedia platform, the Apple iPhone requires an understanding of it’s unique user experience. In building iPhone applications we strive to design interfaces that are easy to use, engaging and brand enhancing. Our creative team is knowledgeable in development best-practices, iphone application guidelines and compliance requirements.
As well as user interface design, our design team works with a set of tools that enhances the internet experience of our customers including:
Website Marketing - Search Engine Optimization, Spiders, Submission & Promotion
Web Analytics – Omniture and Pinch Media Analytics
|
| |
|
|
|
|