Thứ Sáu, 22 tháng 8, 2008

Unlock your Creativity

How to get over a creativity block?

Go out, change your perspective

Step away from the computer. Go outside. Away from places you usually visit. Go for a walk, head to the gym. You’ll come back refreshed and with a new outlook on the task at hand.

Get inspired
Take continuous feedback from others. That means continuous input: reading books and blogs, attending talks and conferences. It also means continuous output: writing and interacting with others.

Listen to Music

Music is an equal blend of emotion and analysis. If you let yourself be inspired by it, you’ll often feel the creative urge again.

Try a new approach
Start over, refresh your canvas. Consider what other creative people do. Seek inspiration through their experience.

Communication is the key
Talk to others. Do something out of the ordinary, out of character. Give your brain a chance to regroup and hit it with some fresh stimuli.

Put things on hold
Put the task or project down and either take a break from work altogether or perform some tasks that require no creativity (like managing or organization tasks) and distract your conscious mind from the challenges.

Train Yourself
Force yourself to do something creative every day. It can be anything: writing, drawing, shooting photos etc. The idea is to get into the habit of always being creative.

~ Jasvinder Singh

Thứ Ba, 19 tháng 8, 2008

UML/OOAD Dictionary

Inheritance Relationships

A very important concept in object-oriented design, inheritance, refers to the ability of one class (child class) to inherit the identical functionality of another class (super class), and then add new functionality of its own. (In a very non-technical sense, imagine that I inherited my mother's general musical abilities, but in my family I'm the only one who plays electric guitar.) To model inheritance on a class diagram, a solid line is drawn from the child class (the class inheriting the behavior) with a closed, unfilled arrowhead (or triangle) pointing to the super class. Consider types of bank accounts




















Reflexive Associations
A class can also be associated with itself, using a reflexive association. This may not make sense at first, but remember that classes are abstractions. Figure 14 shows how an Employee class could be related to itself through the manager/manages role. When a class is associated to itself, this does not mean that a class's instance is related to itself, but that an instance of the class is related to another instance of the class.









‘Extend’ and ‘Include’ in use cases
‘Extend’ and ‘Include’ define relationships between use cases. Below figure ‘Extend and Include’ shows how these two fundamentals are implemented in a project. The below use case represents a system which is used to maintain customer. When a customer is added successfully it should send an email to the admin saying that a new customer is added. Only admin have rights to modify the customer. First lets define extend and include and then see how the same fits in this use case scenario.
Include: - Include relationship represents an invocation of one use case by the other. If you think from the coding perspective its like one function been called by the other function.
Extend: - This relationship signifies that the extending use case will work exactly like the base use case only that some new steps will inserted in the extended use case.

Below figure ‘Extend and Include’ shows that ‘add customer’ is same as the ‘add discounted customer’. The ‘Add discounted customer’ has an extra process, to define discount for the discounted customer which is not available for the simple customer. One of the requirements of the project was that when we add a customer, the system should send an email. So after the customer is added either through ‘Add simple customer’ use case or ‘Add discounted customer’ use case it should invoke ‘send a email’ use case. So we have defined the same with a simple dotted line with <> as the relationship.

Associations in Class diagrams

A single Class cannot represent the whole module in a project so we need one or more classes to represent a module. For instance, a module named ‘customer detail’ cannot be completed by the customer class alone , to complete the whole module we need customer class, address class, phone class in short there is relationship between the classes. So by grouping and relating between the classes we create module and these are termed as Association. In order to associate them we need to draw the arrowed lines between the classes as shown in the below figure.

In the figure ‘Order is paid by payments class’, we can see Order class and the Payment class and arrowed line showing relationship that the order class is paid using payment class in other words order class is going to be used by payment class to pay the order. The left to right marked arrow basically shows the flow that order class uses the payment class.In case payment class using the order class then the marked arrow should be right to left showing the direction of the flow.


Aggregation and composition in class diagrams
In this Association there are two types mainly Aggregation Association and Composition Association.

Aggregation Association signifies that the whole object can exist without the Aggregated Object. For example in the below figure we have three classes university class, department class and the Professor Class. The university cannot exist without department which means that university will be closed as the department is closed. In other words lifetime of the university depend on the lifetime of department.

In the same figure we have defined second Association between the department and the Professor. In this case, if the professor leaves the department still the department continues in other words department is not dependent on the professor this is called as Composition Association.

Note: - The filled diamond represents the aggregation and the empty diamond represents the composition. You can see the figure below for more details.
References:

Thứ Hai, 18 tháng 8, 2008

7 Tips on becoming an ERP consultant

http://it.toolbox.com/blogs/bi-applications/7-tips-on-becoming-an-erp-consultant-11758

Being an Oracle ERP consultant is rewarding both financially and career wise. I have been in this field since I finished my engineering. I have seen the Y2K wave, Java wave and the online craze (dotcom boom). When my friends wanted to jump onto each new wave and ride it I stayed on with ERP and the job market has been always hot!

It may not be the much talked about thing in the media but it is the most moneymaking thing out there. You may hear stories like ERP implementations have slowed down etc but just keep that part for the Gartner's and the research analysts to worry about.

The beauty of this ERP is, it always keeps evolving and so you always work on the latest and the best technologies. For e.g. Business Intelligence is a natural evolution out of ERP and it is the current hot market. This market is here to stay as long as there is Oracle and SAP, (may be Microsoft, do they have an ERP?)
This is a tough market to break into, as it requires lot of years worth of experience so how does one get into this lucrative area?

If you are fresh out of college and wish to pursue an Oracle career..

Learn the basics of ERP: Just the overall understanding of what ERP is all about? Why companies use ERP? Check some articles on this site and Google for ERP and MRP (Material Resource Planning)

Learn Oracle basics like SQL, pl/sql: This is a must requirement for anybody who wishes to break into this field. If you have any RDBMS skills like MySQL or SQL Server then you are almost there. Just download the database, which is available freely at http://www.oracle.com/, follow the Oracle By Example series, it provides step-by-step instructions on how to learn each Oracle technology.

Learn at least couple of tools to build extensions to Oracle apps: Again follow the above point and learn to develop applications using technologies like Oracle Forms or Oracle Applications Frame Work using jdeveloper, Oracle Reports etc.

Learn fundamentals of at least 4-5 modules: Some of the key modules are General Ledger, Accounts Payables, Accounts Receivables, Purchasing and Inventory. You may select each module at a time and start understanding basics of each. This is somewhat of an optional track if you decide to just become a core technical person to begin with. But you should always try to gain the understanding as you go forward.

Learn Discoverer: Discoverer is a Business Intelligence tool used for creating ad-hoc reports and dashboards. It is one of the easiest thing to learn and become a quick expert.

Get some Training: You can order some CBTs available online at Oracle University and if you Google you will find a bunch of companies offering free ERP training in all the above modules and also try to place you in your first assignment.

Get your first assignment: If you have mastered Oracle SQL/PLSQL and learnt Discoverer then you have already become a basic Oracle Developer and you should be able to get a basic entry-level position to begin with. I am sure there are lots of opportunities with even just this basic skill set.

In order to get your first break, offer your services free of cost to any company that may be using Oracle. This way you get to learn and work at the same time and when the client sees the potential in you they might offer you a salaried position, so it becomes a win-win situation.

Well you see there are only few steps in jump-starting your Oracle Career and they are not even a complete 10!

Did you like this article? If yes, then I am sure you would like my product InfoCaptor,a Dashboard Designer. In 2006, I quit my full time job and started my own company that produces this beautiful piece of software. InfoCaptor is an ad-hoc Anti-Dashboard and reporting tool. If You can, please take a look at it, if you have more time, please try it out and if you like it, please send me your feedback, recommend to your colleagues and show it to your Management.

Definition of "Software Specification"

- A specification describes WHAT a program does, a design describes HOW the program does it, and documentation describes WHY it does it
- A specification is a document which forms a contract between the customer and the designer.
- A specification is a document by which we can judge the correctness of an implementation.

A specification is a precise, unambiguous and complete statement of the requirements of a system (or program or process), written in such a way that it can be used to predict how the system will behave.

Reference:
http://scom.hud.ac.uk/scomtlm/book/node8.html

Technical Concepts

Lazy Loading (call on demand):
Lazy loading is a design pattern commonly used in computer programming to defer initialization of an object until the point at which it is needed. It can contribute to efficiency in the program's operation if properly and appropriately used. The opposite of lazy loading is Eager Loading.

Bread Crumbs
A Web site navigation technique. Bread crumbs typically appear horizontally near the top of a Web page, providing links back to each previous page that the user navigates through in order to get to the current page. Basically, they provide a trail for the user to follow back to the starting/entry point of a Web site and may look something like this:
home page --> section page --> sub section page


This technique also is referred to as a bread crumb trail.

You can also come accross it in coding:

///


/// Fetches the category bread crumbs.
///

/// The category id.
///
public DataSet FetchCategoryBreadCrumbs(int categoryId) {
DataSet ds = SPs.FetchCategoryBreadCrumbs(categoryId).GetDataSet();
ds.DataSetName = MENUS;
ds.Tables[0].TableName = MENU;
return ds;
} ///

Rewrite engine

A rewrite engine also known as URL rewriting, is software which modifies the URLs appearance.The Users of web applications prefer short, neat URLs to raw query string parameters. A concise URL is more memorable, and less time-consuming to type in. If the URL can be made to relate clearly to the content of the page, then errors are less likely to happen.

For example, this URL contains query string parameters to encode the date for which some blog engines should show available postings
http://www.somebloghost.com/Blogs/Posts.php?Year=2006&Month=12&Day=10
but can be altered to give the user a clear idea of what he or she is going to see
http://www.somebloghost.com/Blogs/2006/12/10/

The second address also allows the user to change the URL to see all postings available in December, simply by removing the text encoding the day '10', and thereby saving having to navigate the GUI.
http://www.somehost.com/Blogs/2006/12/.

Another example might be changing
http://example.com/wiki/index.php?title=Page_title

to...
http://example.com/Page_title