The following presentation provides a very good view of the WebSphere Portal V6.1 Security Model.
In recent times, most of the Tier 1 companies in the Indian IT industry have creating verticals (based on domain) and horizontals (based on technology). The whole idea of vertical is create enough domain expertise to service the clients and move up the value chain. The idea behind horizontals was to create specialized groups based on technology (J2EE, .Net, Security etc), function (e.g. Testing, Database etc) or even Software Provider (e.g. IBM, Oracle etc) and these professionals can be staffed to any domain project where the software, function or technology is being used.
Companies hire in big numbers from campus and then send this army of engineers to learn the techniques of warfare (namely – Java, .Net or even COBOL). Once the army is trained, the engineers are staffed to various technology horizontals.
Now, assume an engineer gets staffed to the Testing horizontal, S/He is put in as Test engineer in a project. They start working on test scripts or manual testing of the application. Question is, do these engineers mature enough to understand the importance of their role? Meaning, if I am testing web services, do I understand their usage, what role they play in overall application? What is the relationship between web services etc?
One view point can be, well they need to do one thing and they are supposed to be specialist in the same. Do they have the bigger picture in mind? Are they laying bricks or building a Cathedral?
My question, can a software professional be a complete professional if S/He has not gone the rigors or experiences of all the SDLC phases. Can you appreciate the value of testing, if you have not done coding yourself? Or can you appreciate the value of design, if you have not gone through the refactoring of an application? Will you not be a better developer if you have done testing yourself?
- How can we build architects, if the person has not been exposed to the software lifecycle?
- Can these individual architects perform, if they are pulled them out of the system and asked to architect an application with 4-5 freshers?
- Can these Architect(s) guide the team for various roles (Build & Release, DBA, Requirement Gathering, Design, Testing, Deployment, Tuning, Environment Setup etc) if S/He himself has not gone through the rigors of the same?
I believe, for any software professional, it should be mandatory to work on all phases of SDLC and perform various roles before S/he should start looking at specialization. The person should perform the role every role twice. First time is to learn the requirements of role and second time to apply the learning’s.
The current trend of training people and putting them in a narrow role will leave the individual without adequate skills to perform the architect role. This cycle will soon skill the Software Profession.
How many times when we run the application under load, it becomes so difficult to figure out where the performance bottlenecks are?
Developers add lines of debugging code to measure the performance to pin point the problem. But you have no freaking clue where the bottleneck is.
One of the non-intrusive way of measuring and profiling code has been the use of Aspects. I had talked about aspects in my earlier post The wonderful world of Aspects.
Last month, Spring announced the release of Spring Insight 1.0.0.M3
Spring Insight has been developed as a lean framework that allows developers to deploy the module to their existing native application to an Spring Insight-enabled tc Server instance and immediately start seeing diagnostics. There is no requirement of additional DB to be setup or need to write any additional code.
Spring Insight captures application events known as traces. A trace represents a thread of execution. It is usually started by an HTTP request but can also be started by a background job. A trace contains operations. Each operation represents a significant point in the execution of the trace, for example, a JDBC query or transaction commit. Using this data, Spring Insight calculates summary information to lead you to the specifics of why your application is not performing.
Spring Insight uses AspectJ, which is based on bytecode weaving, dynamically instruments the applications at runtime. The current version of Spring Insight currently keeps its data in memory. It does not use an external database or write any data to disk. This means, any server restart wipes the slate clean. The Spring Insight uses sophisticated algorithms tries to keep the memory footprint low but still expects more memory (-Xmx) than a standard server.
The reporting is integrated with the Google Speed Tracer. Speed Tracer is available as a Chrome extension. Speed Tracer provides developers a full view into all the work performed in a web request – from CSS styling and view rendering to JDBC queries and JSP render times. Check out the Speed Tracer tutorial here
If you are developing using Spring libraries, then you can not afford to give a miss to Spring Insight
The recent new technological changes have brought about a sea change how we go ahead designing applications. Some of the technologies that i believe will have a pro-found effect on how we design and create our applications are
- OSGi - The OSGi framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly. - Wikipedia. Designing new applications as OSGi bundles will require a different design mindset. Adding new features to enterprise applications will become easy. Maintenance and support cost will come down drastically.
- Distributed data systems - Technologies that allow us to scale and distribute our data have become stable and are being used in large applications. Handling petabytes of data have become a norm and social networking sites are doing it on a regular basis. Some of the open source technologies in the space like Hadoop, Cassandra, HBase Hive are mainstream and are all ready for use by the enterprises.
- Cloud Computing - Infrastructure as a platform has come into its own. Amazon EC2, RackSpace, GoGrid and others have become mainstream. Hundreds of companies are running their business on the cloud today. All of the them have launched or in the process of launching private clouds initiatives for the enterprises. Ability to connect from cloud to the enterprise data servers will mean, enterprise need not maintain costly data centers for their applications.
Second part of the cloud is the emergence of SaaS enabled applications to connect with. Enterprise applications do not create functionality or download/deploy boxes for application features. Functionality like CRM (www.salesforce.com), Analytics (Google Analytics, Omniture, Unica etc), Payment Gateways (PayPal), Authentication (Open ID, integration with facebook, twitter etc), Web 2.0 tools (like blogs, discussion forums, online chat, bookmarking etc), Database (Amazon RDS), Source Control, Defect tracking and score of others on cloud, will mean application design will be an integration with multiple SaaS vendors with easy to use and published API's (most likely as RESTful web services)
Do let me know, what do you think? Share your thoughts on what else you see will change the application design and development landscape !





![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=859fa235-c3bc-441b-87b3-2720decb08fb)


