sábado, 10 de marzo de 2007

Security and Performance at Java

First that somebody could be asking itself about a blog dedicated to security and performance, it is if they have something in common these two great "subjects", the answer is too much. The security and performance are qualitative architecture features of a software, by they share the scope within an architecture. Both terms are extensive and difficult to define, since they can be considered like areas within the science of the computation, disciplines, practices, etc..

On the other hand both cover and share a great number of aspects or nonfunctional requirements (known like "ilities") for instance: reliability.

In addition they cover all the Java technology, from JSE to JEE with webservices.

The base problem that also shares, is that they are left or simply they are not considered, by different factors. About security, erroneously one assume that a firewall solves all the problems related to the security and lamentably these devices (or software) single cover a small part of the information security. In the case of the performance also an erroneous thought shares, where the performance this related directly to the hardware, is to say if the application works of deficient way, the solution is very simple; to buy more memory or buy fastest CPUs, but the result: overestimated equipment and even with a poor performance.

As much the security as the performance is crucial factors in the success of a software project and they cannot be considered in final phases of the project, from of a first moment, is to say from requirement gathering, but not confined to simple "nonfunctional requirements", that eminently are it (or they cover NFR as already it said), but some methods of software development consider them like an accessory. In this blog further we will treat subjects like PKI, JCA, JCE, profiling, techniques and related methods, etc, nevertheless will be necessary to wait for a while, since many of the problems have an obscure source and that it is not solved studying optimization tools. For example, one of the dedicated subjects to solve performance problems is to study the equals and hashCode methods....Yes, you read well.

Seguridad y Rendimiento en Java

Lo primero que alguien podría estar preguntándose con respecto a un blog dedicado a seguridad y rendimiento, es si tienen algo en común estos dos grandes "temas", la respuesta es mucho. La seguridad y rendimiento son características cualitativas de la arquitectura de un software, por lo comparten el ámbito o alcance dentro de una arquitectura. Ambos términos son amplios y difíciles de definir, ya que pueden ser considerados como campos dentro de la ciencia de la computación, disciplinas, practicas, etc.

Por otra parte cubren y comparten un gran numero de aspectos o requerimientos no funcionales (conocidos como "ilities") como por ejemplo: fiabilidad.

Además cruzan transversalmente toda la tecnología Java, desde JSE hasta hasta JEE con webservices.

El problema de fondo que también comparten, es que son dejadas para el ultimo o simplemente no son consideradas, por distintos factores. En el caso de la seguridad, erróneamente se piensa que los firewalls solucionan todos los problemas relativos a la seguridad y lamentablemente estos dispositivos (ó software) solo cubren una pequeña parte de la seguridad de la información. En el caso del rendimiento también se comparte un pensamiento erróneo, donde el rendimiento esta relacionado directamente al hardware, es decir si la aplicación funciona de manera deficiente, la solución es muy simple; comprar mas memoria o comprar CPUs mas rápidas, el resultado?: equipamiento sobre dimensionado y aun con un rendimiento pobre de la aplicación.

Tanto la seguridad como el rendimiento son factores críticos en el éxito de un proyecto de software y no pueden ser consideradas en fases finales del proyecto, si no desde de un primer momento, es decir desde la toma de requerimientos, pero no confinadas a simples "requerimientos no funcionales", que eminentemente lo son (o cubren NFR como ya se dijo), pero algunos métodos de desarrollo de software los consideran casi como un accesorio.

En este blog también trataremos temas como PKI, JCA, JCE, profiling, técnicas y métodos relacionados, etc, sin embargo habrá que esperar un poco, ya que muchos de los problemas tienen un origen mas de fondo y que no se resuelve estudiando herramientas de optimización. Por ejemplo, uno de los temas dedicados a resolver problemas de rendimiento es estudiar los métodos equals y hashCode....si, leyeron bien.