This is the live content I will be using as my reading list.
Technical
- Software Craftmanship - Currently reading
- The Design Patterns Small Talk Companion - Under progress
- Expert One on One - J2EE without EJB - Finished
- Agile and Iterative Development - Finished
- TOGAF 9, Pocket Guide - Finished
- Agile Project Mgmt with Scrum - Finished
- Java Server Faces - Currently Reading
- Applying UML and Patterns - Finished, but needs some revisits
- Evolutionary Arch and Design - Currently Reading
- Architecture Principles - Finished
- Information Arch and User Experience - Currently exploring
- Architecture Review (ATAM, SARA) - Currently Reading
-
Non-Technical
The Toyata Way - Currently Reading
Mega Living - Currently Reading
Discover Dimond In You - Finished
The World is Flat - Currently Reading
The Malgudi Days - Currently Reading
The Koutilya Arthasastra - Currently Reading
12 December, 2010
Concrete skills
Each and every individual professional in the IT must have self analysis on some concrete skills. Here what I mean by concrete skills is nothing but deep understanding on the subject which can be easily appreciated and recieved by your collegues.In other words, these concrete skills demonstrates your authorative knowledge and experience on the subject. For example, following are few subjects which myself analysed on my professional life mostly reflects my day to day actvities.
Mostly concrete
Architecture, OOA/D, General Programming skills, Review, Agile engineering practices, Java/J2EE, build scripts, unit testing, Documentation, Presentations on different subjects, Leadership, Pre-sales etc.
No so concrete
Spring, JSF, Javascripts, CSS, HTML, SQL/PL-SQL, Installations, Debugging,
network, protocols, User experience etc.
This kind of analysis puts you to pritorize your free time towards reading.
Mostly concrete
Architecture, OOA/D, General Programming skills, Review, Agile engineering practices, Java/J2EE, build scripts, unit testing, Documentation, Presentations on different subjects, Leadership, Pre-sales etc.
No so concrete
Spring, JSF, Javascripts, CSS, HTML, SQL/PL-SQL, Installations, Debugging,
network, protocols, User experience etc.
This kind of analysis puts you to pritorize your free time towards reading.
08 December, 2010
Does architecture care about implementation?
Does really architecture care about implementation details ie. design realization and subsequent code development?
In my opinion, hands-on experience atleast to ensure reference architecture will provide great value-add to entire architecture. Otherwise it will be the quiet abstract activity which may not be well recieved by development community.
The reference architecture might contain:
1) The implementaion view of the core components
2) All application specific cross cutting concerns
3) Vertical slice of the one use case to demonstrate the architecture realization; kind of Reference implementation for the specification
4) Do's/Dont stuff on target technology stack; chosen one
5) Application build
6) Development best practices/process overview
7) Unit test strategy (atleast development front)
8) Major component/module interface specifications (if possible; generate
javadocs)
9) Usage of static analysers with in the build environment; it would be great if your tooling support best practices customization
In my opinion, hands-on experience atleast to ensure reference architecture will provide great value-add to entire architecture. Otherwise it will be the quiet abstract activity which may not be well recieved by development community.
The reference architecture might contain:
1) The implementaion view of the core components
2) All application specific cross cutting concerns
3) Vertical slice of the one use case to demonstrate the architecture realization; kind of Reference implementation for the specification
4) Do's/Dont stuff on target technology stack; chosen one
5) Application build
6) Development best practices/process overview
7) Unit test strategy (atleast development front)
8) Major component/module interface specifications (if possible; generate
javadocs)
9) Usage of static analysers with in the build environment; it would be great if your tooling support best practices customization
It is very easy to slip from abstraction to implementation
During architecture development, sometimes we feel that it is very easy to slip from conceptual/pure architectural thinking to our faviroute technology specific/implementation specific thoughts. In my opinion this is very natural process; but care must be taken to ensure that architecture purity should not influenced by our pet technical jargons.
20 September, 2010
How create message queue using Spring 2.5.x and Oracle Weblogic Server 11g
Last week I spent some time on configuring JMS Message Queue using Spring 2.5.4 and Oracle Weblogic Server 11g R2.
Following are the step by step instructions to create queue.
1) Log into http://localhost:7001/console, supply weblogic/weblogic (default)
2) Create JMS Server using Oracle Weblogic Server. I used JDBC persistent store - MySQL based, to store the messages under db.
3) Name your jms queue and factory and let these refer to your newly created jms server which points to JDBC persistent store.
4) Now configure your spring jms file; which looks something like this:
5) Create message listener class; which is influenced by traditional mdbs (J2EE 1.3 era..)
package amp;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyQueueListener implements MessageListener
{
public void onMessage(Message message)
{
if (message instanceof TextMessage)
{
try
{
String txtMessage = ((TextMessage) message).getText();
System.out.println("" + txtMessage + " ");
}
catch (JMSException ex)
{
throw new RuntimeException(ex);
}
}
else
{
throw new IllegalArgumentException(
"Message must be of type TextMessage");
}
}
}
7) Create client class whcih produces huge message payloads; just to test
package amp;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class QueueClient
{
private ApplicationContext ctx = AppContext.getApplicationContext();
private JmsTemplate jt = (JmsTemplate) ctx.getBean("jmsTemplate");
private Queue q = (Queue) ctx.getBean("jdbcQ");
public void sendMessage(final String m) throws Exception
{
jt.send(q, new MessageCreator()// inner class
{
public Message createMessage(Session session)
throws JMSException
{
TextMessage tm = session.createTextMessage();
tm.setText(m);
return tm;
}
});
//System.out.println("message sent to destination called "+q.getQueueName());
}
}
8) Finally call this class under web environment; to see the message output. I used OEPE pack to conduct these tests.
Hope this helps to configure message queues.
Following are the step by step instructions to create queue.
1) Log into http://localhost:7001/console, supply weblogic/weblogic (default)
2) Create JMS Server using Oracle Weblogic Server. I used JDBC persistent store - MySQL based, to store the messages under db.
3) Name your jms queue and factory and let these refer to your newly created jms server which points to JDBC persistent store.
4) Now configure your spring jms file; which looks something like this:
5) Create message listener class; which is influenced by traditional mdbs (J2EE 1.3 era..)
package amp;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyQueueListener implements MessageListener
{
public void onMessage(Message message)
{
if (message instanceof TextMessage)
{
try
{
String txtMessage = ((TextMessage) message).getText();
System.out.println("
}
catch (JMSException ex)
{
throw new RuntimeException(ex);
}
}
else
{
throw new IllegalArgumentException(
"Message must be of type TextMessage");
}
}
}
7) Create client class whcih produces huge message payloads; just to test
package amp;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class QueueClient
{
private ApplicationContext ctx = AppContext.getApplicationContext();
private JmsTemplate jt = (JmsTemplate) ctx.getBean("jmsTemplate");
private Queue q = (Queue) ctx.getBean("jdbcQ");
public void sendMessage(final String m) throws Exception
{
jt.send(q, new MessageCreator()// inner class
{
public Message createMessage(Session session)
throws JMSException
{
TextMessage tm = session.createTextMessage();
tm.setText(m);
return tm;
}
});
//System.out.println("message sent to destination called "+q.getQueueName());
}
}
8) Finally call this class under web environment; to see the message output. I used OEPE pack to conduct these tests.
Hope this helps to configure message queues.
03 September, 2010
Care for simple architecture
We J2EE architects must care for simple architecture; few things might help do develop application which are long lasting and easy to accommodate future requirements.
For example; I tried with followings
1) Care for OO rather than standards/specifications
2) Create architecture against requirements in hand rather than technology specific
3) Do not distribute objects if requirements are not called for
4) Follow good architecture and design principles rather than just following patterns
5) Leverage on lightweight architecture like Spring centric which greatly helps in interface driven programming, container level capabilities, test strategies
6) Follow thought full analysis of business requirements and come up with list of high level components, its responsibilities and associated rationale
7) Follow whiteboard driven architectures to kick start the discussion
Care for executable architecture (RUP), spike resolution (XP) and vertical slicing to get confidence in the architecture
8) Come up with list of development standards, guidelines and implementation classes
For example; I tried with followings
1) Care for OO rather than standards/specifications
2) Create architecture against requirements in hand rather than technology specific
3) Do not distribute objects if requirements are not called for
4) Follow good architecture and design principles rather than just following patterns
5) Leverage on lightweight architecture like Spring centric which greatly helps in interface driven programming, container level capabilities, test strategies
6) Follow thought full analysis of business requirements and come up with list of high level components, its responsibilities and associated rationale
7) Follow whiteboard driven architectures to kick start the discussion
Care for executable architecture (RUP), spike resolution (XP) and vertical slicing to get confidence in the architecture
8) Come up with list of development standards, guidelines and implementation classes
12 August, 2010
Architecture development steps
11 August, 2010
Software Quality vs Design Principle, Pattern and Practice Catalog
Utility Projects and Strategic Projects
I like the idea of project catagorization like utility projects and strategic projects. This helps organizations to spend their IT investments rather carefully; again it is inline with application portfolio of an enterprise.
But enterprise can really focus their energy and investments on strategically aligned projects so that competetive advanatages are more.
But enterprise can really focus their energy and investments on strategically aligned projects so that competetive advanatages are more.
07 July, 2010
Architecture vs Design
Architecture is all about identifying the major components and its associations/responsibilities with right level of abstraction. It also involves taking decisions which are having system wide effect.
Where in design is all about constructing the software based on the context set by architecture. It involves choice of better algorithms, applying logic, patterns, reusable/generic blocks etc.
Where in design is all about constructing the software based on the context set by architecture. It involves choice of better algorithms, applying logic, patterns, reusable/generic blocks etc.
25 February, 2010
User story vs. Use case
Few things about the possible differences between these concepts
1) A user story is the title of one scenario, whereas a use case is the contents of multiple scenarios.
2) User story is written by customer before getting into actual conversation, where in use case is formal record of that conversation
1) A user story is the title of one scenario, whereas a use case is the contents of multiple scenarios.
2) User story is written by customer before getting into actual conversation, where in use case is formal record of that conversation
04 February, 2010
Does OOA/D steps helps experienced developers?
In my opinion it is not mandatory to follow all OOA/D steps while individual has enough experience and knowledge on problem domain. In other words, if individual is comfortable with all architecture/design styles, patterns and principles, he/she could directly start coding.
Subscribe to:
Posts (Atom)
One new learning / day - however small it is
Read a blog / or article Watch TED talk Read a small self-help book (many free eBooks available with less than 100 pages/can be completed i...
-
I underwent TOGAF 8.1.1/9 training and certification program in last week of sept'09. It was good experience and lot of knowledge gained...
-
Few things about the possible differences between these concepts 1) A user story is the title of one scenario, whereas a use case is the con...
-
Can't govt take an action to issue free books for all students in India up-to class 10th. All students can return their books once they...