Corner Software DevelopmentHomeServicesResourcesContact Us


"...Impressive work, especially on the limited budget and time you had to work with. I hope to do future projects with Corner Software and I'd strongly recommend you to anyone!"
Sandy Macdonald, President
The Exchange Group

More references...


Services : Intranet or Internet : Technical

[General Info]

Our web development work, whether for Internet or Intranet use, is focused on dynamic sites. Dynamic sites create at least some of the content of the site in response to user interaction. That could mean looking up information in a database and formatting it for display, or modifying the look or content of a page based on the user's preferences, or using content management software to allow the entire content of the site to be dynamically remotely updated.

Corner Software Workbench: Class Diagram Our dynamic solutions follow a consistent pattern that separates the application into multiple tiers. Usually a very thin browser client is the interface. A web server communicates directly to the browser, sitting behind the web server is an application server that handles the business logic for your site. Usually that application tier uses a separate database server for persistent storage of information. Separating the application into these tiers helps to achieve a number of important goals, like enhanced functionality, scalability, performance, upgrade path, and security.

Of course our development methodology plays an important role in ensuring that we don't build the wrong solution. We spend the right amount of time up front to ensure everybody understands the problem, and that the solution we're proposing fits, before we start building. Have a look at our development practices for more on this.

Web projects range from the very simple, like please add a search page to my site, to large and complicated. Each project has its own set of issues and solutions, here are some of the top things we consider when looking at a project, and some of our approaches.

  1. Functionality : What do you need from your site? Integration with your back end database? Personalization to match the preferences and interests of your visitors? A robust online community to support your brand? E-Commerce transaction processing to speed orders through your system? Our first priority is determining what your site should and shouldn't do. We usually use 'Use Case' descriptions to help figure out what your system should do, and how it should do it. Use cases describe, in simple prose, how a typical user would interact with the site. A well written use case helps ground the system in the real world, and exposes a surprising number of issues before they become expensive problems.

  2. Cost : Everyone wants to keep the cost of their dynamic site down, but how they measure cost varies depending on the client. For some clients, deployment cost is the important consideration, how much does it cost to get the site up in the first place. For other clients it is maintenance cost they are concerned with, over the lifetime of the site, including modifications, potentially heavy modifications, how much will it cost. For other clients it is the cost of scaling that concerns them, if their traffic volume soars how much does it cost to grow the site. There are different strategies for addressing each of these concerns, with some overlap thankfully. For low volume Intranet sites, using code generators and open source tools or tools included with the operating system helps keep the deployment cost low. For clients concerned about modification cost it usually makes sense to design a more robust infrastructure to support changes.

  3. Performance : Depending on the volume the site expects to get this may or may not be an issue. For Intranet sites this is usually a pretty low priority, for public Internet sites with a large audience or heavy transaction use it could be critical. In our experience, performance on dynamic sites usually comes down to how efficient the database access is. We use automated stress tools to get baseline numbers, then experience and deduction to find the causes. Then hard work and experience to fix them.

  4. Scalability : This is closely related to performance, however where performance looks at what you can handle on a given setup, scalability asks how high you can go total, and what you have to do to get their. For example, if you need to add a machine to scale up, what is the cost of that machine? Do you have to change your site design to accommodate it? How much is the operating system, the application server, and the database? What components will require more horsepower as the site grows, how easy is it to add to? Addressing those questions early helps ensure you don't get unpleasant answers down the line.

  5. Security : Obviously on everyone's mind these days is how to keep your dynamic site secure, and what's the cost of doing that? All of our design and consulting work takes security very seriously; it is something that has to be designed in from the beginning. Security audits after the fact help find the problems, but it can be very expensive to fix them then. It's far better to have a realistic understanding of what your security concerns are, and address them as your site is built.

  6. Upgrade path : Dynamic web sites, like most software, are rarely completed on the first pass. There is usually more to add, improvements, new ideas, repairs to be done. Ensuring that your solution has an upgrade path is important to us. That means choosing the right technology platform for you, to make sure it has a future. Designing the solution with additions and upgrades in mind, so you don't have to rip it all out when the first change is suggested. And thinking through some of your possible future requirements as we work through the project plan, so you're not caught unaware.

  7. Reliability : Once your site is running it's important that it keeps on running consistently and for a long time. That may be a critical goal for a high volume public web site, or it may just be good cost effective business practices for an Intranet site. Reliability is achieved through a combination of best practices. Like picking the right platform in the first place, designing a robust solution, taking error handling into account early on, and testing to find failure.

  8. Testing : None of our projects are complete with a good solid test suite backing them up. The test suite ensures that the software we deliver does what we think it does. And it helps you in the future to ensure that it keeps doing it.

Toolkit

  • Client Tier : Internet Explorer 5+, Firefox 1+, Opera, Safari

  • Web Server : Internet Information Server (IIS), Apache

  • Application Server : Java Servlet/JSP (Tomcat, Jetty, Geronimo, JBoss), .NET

  • Frameworks : Tapestry, Spring, Struts, Hibernate

  • Techniques : Behaviour Driven Development, UML (primarily use cases, class diagrams, deployment diagrams, and sequence diagrams), JavaDoc (a great tool for automatic documentation generation from Java code), JUnit (unit testing for Java), Ant (build and testing automation)

  • Database : Oracle, Microsoft SQL Server, IBM DB2, Postgres SQL, My SQL


This site and all contents are copyright ©1998-2007 Corner Software Development Corp. unless otherwise specified. All Rights Reserved.