Archive

Archive for the ‘Software Design Concepts’ Category

Project Management Process – Methodologies

March 21, 2008 6 comments

The development process involved for project requirements invovling can be one of the below ….

1. Feature Driven Development (FDD)

2. Agile Software Development

3. SDLC Software Development Life Cycle

4. RUP

5. Waterfall (Traditional)

6. Extreme Programming (XP)

7. Rapid Application Development (RAD)

Project Phases:

1. Requirement Analysis Phase  – Beginning, Starting, Scope Phase, Research Phase, Concept Phase, Project Definition Phase, Estimating Phase, Feasibility Phase, Analysis Phase, Define Project, Plan and evaluate the project. Define the scope of the project, freeze the requirements.

2. Design Phase -

3. Development Phase – Coding Phase, Implementation, Execution Phase

4. Testing – Debuggin Phase, Integration Phase,

5. Deployment

6. Production -

Performance Optimization Java J2EE Aplications

January 30, 2008 1 comment

One can optimize the performance of Java J2EE Application by considering some of the design level, system level, application level changes.

- Design level factors by following effective design patterns for a problem

- Application level considering by looking into app server tuning, coding details etc.

 -identify the potential issues like memory leakage, security issues, transactional issues, extendability, maintainability issues

Search Engine optimization

Search engine optimization is possible through html coding tools, page rank, toolbar page rank

Also by xml sitemaps, meta tags

One can optimize a web site based on page elements, LSI (latentsemantic analysis), it is used in web analytics, to track the traffic patterns, identifying target keywords etc …

Business Delegate – Design Pattern

January 30, 2008 1 comment

Data flows between the tiers in the multi-tiered, when the presentation components are interacting with business services, their implementation details are exposed. The domain object is converted into business object.

In distributed applications, lookup for remote business component when applications use business component directly, application code must change to reflect changes in business component APIs.

An Intermediate class is introduced called business delegate, which decouples business components from the code that uses them.

- Decouple application tier from business tier

 The Business Delegate pattern manages the complexity of distributed component lookup and may adapt the business component interface to a simpler interface for use by views.

 business_delegate.jpg

Business Delegate interacts with business tier api service for domain object.

 multi-tier-architecture.jpg

Normalization

First Normal form : Attribute should be atomic. One should be able to identify the functional dependency(identify a non key attribute which is depends on key attribute) at this point

Second Normal Form : Non-Key attribute should be fully functionally dependent on key Attribute. Eliminate any partial dependency(Identify an attribute which is partially depends on key attribute) at this point.

Third normal Form : There is no transitivity dependency between attribute. So one can identify and delete transitive dependency.

Forth Normal Form : Any attribute(simple or composite) is an attribute on which some other attribute is fully functionally dependent.

Hibernate

Hibernate – It is written in java, an open source project, provides ORM (Object Relational Mapping) solution, technology for persisting data in any kind of application. Powerful object-oriented persistence, hibernate query language, the object oriented concept is similar to java for association, inheritance, polymorphism, composition and collection. It has automatic primary key generation, perists the java objects into database table format using the metadata that defines the object & database mapping.  ORM tools address the CRUD operations on the objects of persistent classes. Web applications due to database traffic will have performance issues. Caching is the best technique to solve the heavy traffic performance problem.

One can achieve lazy loading in hibernate – loads parent objects first and later the child objects, an ORM technique.

Advantages:

- High performance

- Object Relational Mapping ORM solution is better

- Object-Oriented Query language

- One can avoid rewriting queries

- Easy Maintenance and ease to developer to concentrate on business logic rather than maintenance functionality.

Disadvantages:

- Lacks performance related to connection management and transactonal management

Hibernate xml mapping document defines the properties, mapping details

Hibernate XML Mapping Document Example:

Hibernate XML Mapping Document Example

Hibernate Architecture:

The below diagram shows Hibernate using the database and configuration data to provide persistence services /objects to the application.

Hibernate Architecture

There are couple of hibernate plugins (open source available) for Eclipse, Visual Studio etc. 

Spring

Spring – It is a light-weight framework that supports IOC, adopts extensively for building java or j2ee applications for enterprise applications. It integrates well with most of the prevailing popular technologies like hibernate, struts, jms, mq series in the presentation, middle tier, persistence apis. It does not provide tight coupling between the Business objects, it is fast to do Unit Testing so that Test Driven Development(TDD) .

Spring modules are in SPRING_HOME\dist\modules

Spring webMVC (spring- webmvc.jar)
Spring AOP (spring aop.jar)
Spring Beans (spring-beans.jar)
Spring Core (spring-core.jar)
Spring Dao (spring-dao.jar)
Spring Hibernate (spring-hibernate3.jar)
Spring Ibatis (spring-ibatis.jar)
Spring Jca (spring-jca.jar)
Spring Jdbc (spring-jdbc.jar)
Spring Jdo (spring-jdo.jar)
Spring Jms (spring-jms.jar)
Spring Jms (spring-jpa.jar)
Spring Jmx (spring-jmx.jar)
Spring Portlet (spring-portlet.jar)
Spring Remoting (spring-remoting.jar)
Spring Struts (spring-struts.jar)
Spring Support (spring-support.jar)
Spring Toplink (spring-toplink.jar)
Spring Web (spring-web.jar)
Spring Aspects (spring-aspects.jar)

AJAX Performance Design issues

Asynchronous Javascript + XML = AJAX – It is Client Server Technology, The web page is refreshed without reloading the entire page, it is the user interface with javascript. One needs expertise in html, css, javascript, DOM, asynchronous data exchange. The client in this case needs to connect to web server to facilitate the communication and data transfer.

Ajax limitations

*It is a bit slow

*End user experience is effected by the round trip behavior  as it is slower 

*if  not designed well it will affect the performance.

ajax widgets to your site using ajax tags which supports multiple browsers, rich library of ajax components, they are lot of free community edition – ajax widgets , navigational widgets, form, data widgets available on net.

Search Engine optimization

Search engine optimization is possible through html coding tools, page rank, toolbar page rank

Also by xml sitemaps, meta tags

One can optimize a web site based on page elements, LSI (latentsemantic analysis), it is used in web analytics, to track the traffic patterns, identifying target keywords etc …

Follow

Get every new post delivered to your Inbox.