Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

Tuesday, October 4, 2011

Creating Objects Design Situations

 

Understanding how to create an object goes beyond the new() syntax, a good designer will think about the current requirement and future requirements to ensure decoupling layers, build in flexibility and maintainability. For example,

So you have an object that needs to create another class, however

…it cannot anticipate the class of objects it must create

…it wants only its subclass to specify the object it wants to create

…it wants to localize knowledge of which helper subclass is the delegate

How would you design for these quality attributes?

How about the following:

A client class needs a complex object, however it also

… wants to vary the product’s internal representation

…isolate code for construction and representation

…gives you greater control over the construction process

How would you design for these quality attributes?

 

What if you wanted to:

… isolate the concrete class from the client that needs it, and

… allow for exchanging classes of products easily

…enforce a common consistent product interface across families of products

What’s going to be the pattern of choice, designer?

If you answered Factory, Builder and Abstract Factory – then that’s pretty darn good – you remember your GOFs, which are like the ABCs for software architects (or should be).

Saturday, September 24, 2011

JMS Header Values, who sets what

JMS API defines headers for messages that are sent asynchronously to a message destination (Queue or Topic).

A Client that sends a message has the ability to select 3 values:

1. JMSCorrelationID

2. JMSReplyTo

3. JMSType

 

These 3 values have meaning to the receiver of the message, and may have pre-defined semantics.

These can be useful to Browse the messages, a QueueBrowser object can read and display messages that are sitting in the queue by reading its header messages. Note, that the API doesn’t support browsing topics. It is advisable to keep an internal xml database record of messages that are destined for a topic, and wrap the commit atomically using a 2 phased commit protocol.

Saturday, October 16, 2010

Support Open Source Initiatives

A survey by Boston Consulting Group in of developers using SourceForge found that respondents were, on average, 30 years old and had 11 years of programming experience. These were experienced professionals contributing to quality software products for free. Open Source is so pervasive now that people don’t talk about it or discuss it anymore. The assumption is that quality software will continue to be available for free. Without donations and support this is not possible, especially in tough economies. I have been an active user of OSS at work for almost every single project. Software development projects utilize a plethora of components that are open source. Open Source Object Relational Mapping frameworks, Model-View Controller frameworks to full scale operating systems, application servers and databases are used across business applications everywhere. So what is the basic idea behind the open source movement ?

“The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, (and) people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.” (opensource.org)

Community credibility is an underlying motivator for joining an open source project. The lure of open source includes solving technical challenges; drawing of making a contribution the rest of the community can use; the enhanced skills and reputation (marketability) that comes from being an active member of the community; and the potential for providing fee-based services for open source software. Developers are motivated by the opportunity to branch out and work with products they don’t normally work with in their day jobs – say, video programming – and they are also motivated by pure fun (Gustafson and Koff). Every single corporate entity in the U.S. has some open source utilization today in either a desktop environment, server environment, in the cloud environment or all. It exists at all level and is pervasive across the board. OSS is here to stay: did you use an OSS today? If so consider donating to software foundation that supports it.





The Human-AI Partnership: Why Mastering Touch Typing is Your Next Generative AI Superpower

Generative AI requires humans to establish thought partnership rather than allow AI to take over critical thinking skills. I believe that ty...