Monday, 9 September 2013

Revolution OS

I consider that the work in team is essential for the development of a company or a society. In addition, there is no meaning if a person is a genius and he or she knows a lot about some topic but does not share that knowledge. At the beginnings of the hardware and software development, most of the people and organizations tried to keep in secret their work they had developed and never shared the code of their programs. In one way it was a good idea because you might think that you are the only one who deserves to receive recognition or money for the effort and time you have put to write a piece of code. Nevertheless, I think that you can continue learning and maybe improve your results if you share your work so other people can learn from it and then they could support you.

It is quite common that you have spent hours trying to find a bug or mistake in your code and you never find it. Then one of your friends reads your code and in a few minutes he/she finds it. This is a good example on how can you benefit from the others.

I consider that in software production the idea of open source has been a crucial development. It revolutionized the way of thinking of all the developers. The movie describes the history of the GNU project, Linux and open source movement. Richard Stallman and Linus Torvalds are two of the biggest figures related to the development of the OS. The philosophy of open source and free software can be compared to the idea of communism and capitalism.


In conclusion, I think that we should support the philosophy of Stallman. As a university student I would not have Ubuntu to make some of my assignments and use programs to write most of my code. It is important to support and learn from the others so you can get a good feedback that would enrich your life.

Monday, 2 September 2013

Software Architecture

I consider that in every activity that we perform in our life one of the most important steps is the planning. This stage is crucial because it helps us to visualize the panorama of whatever we want to do or develop and to avoid some mistakes that would be harmful for the future. Concerning about the development of software, the application and development of a good architecture before starting to write of code is one of the most important aspects. A good architecture design has to be simple, utile, beauty, clear and with the possibility to be modified in the future.  

I still remember myself in the first semester of my degree when I did not give importance to the design and I started to write my programs before understanding each of the classes and the relation between them. As time went on, I found really useful to make diagrams and to draw graphical representations of what the code did. This did not help me only me but also my friends who were working with me in the different projects. The same happens with the software architecture. It must be easy to understand and work with. In addition, every detail in the architecture has to be documented and updated every time a new change is made so the future developers could understand and could make some changes to improve the code.

The most popular architectural styles are the following:

·       No architecture: Not a planned architecture
·       Layered: Several layers arranged one over the other like in a stack
·       Pipe and filter: Good canal for its contents, good to handle particular situations.
·       Client / Server: Two complementary strands that work together. It is common in the networks
·       Component-Based: Components are separated and work together in a simple way.
·       Frameworks: You do not have to develop the complete architecture. It is almost done for you.

Finally, I think that a simple and clear architecture will help you to understand the program and to save time and money for the company.