The life of software

flickr photo by Sean MacEntee https://flickr.com/photos/smemon/5030897461 shared under a Creative Commons (BY) license
flickr photo by Sean MacEntee https://flickr.com/photos/smemon/5030897461 shared under a Creative Commons (BY) license

On my first post I wrote about what software development was, if it was an art or a discipline. Now, I’ll tell you about software life cycle and that is somewhat similar with art. Just like art, you don’t create something without preparing, you need to follow several things before creating software.

The first step is gathering and analysis of what is needed to solve a problem, it seems literally weird because software is born from coding but if compare it with art, it will make sense. For example, an artist must to be inspired before creating something, a picture, a sculpture, music, etc.; and the feelings he wanted to share will determine the final product. The software engineer need, just like an artist use inspiration, information about the problem that will determine the software itself.

The second step is design; after knowing what you have to solve, you need too know how it’s going to look, you can start coding without design but the software will be such a mess and it will be difficult to find errors. If we compare it with a painter, design will be like the sketch which is made before painting the picture.

The next step is what I like the most, coding. This longest phase of the software life circle, is the step where software is created. After this, testing is needed to ensure the function of the program and to make sure that it can solve the problem. (on this step I couldn’t find something similar to art).

The product is then deployed to the customer for their use. They do the beta testing to find out if there is a bug of if it needs

Continue reading "The life of software"

Public void howToActEthically(SoftwareEnginner se ){

flickr photo by AJC1 https://flickr.com/photos/ajc1/10266487816 shared under a Creative Commons (BY-SA) license
flickr photo by AJC1 https://flickr.com/photos/ajc1/10266487816 shared under a Creative Commons (BY-SA) license

According to  ACM (Association for Computing Machinery) there is a code of ethics that every software engineer have to follow, I have already written about those code of ethics with my team in TC1019 (here is the link of the post).

I want to share my opinion about ethics in software, acting ethically with software is not only for engineers but also for the users. What I mean is that many illegal software has been spread around the internet and it have been downloaded by people, some of them know that is bad and some of them don’t. All of us have done this before at least once (I include myself), and I know that is impossible to force the people to don’t download illegal software, even when there is security for software, there is going to be someone who will crack it; so the real solution is to act ethically. Most of us already know this, so why are we still doing it?

I think the problem lies in education, we’re not teaching to the new generation that downloading apps for free, that are not supposed to be free, is bad. For example, when I was kid, I was taught that steal is bad, but I was never taught that downloading illegal software from the internet was the same as stealing; I even thought that is was normal.

So we have the obligation to teach to the children that ethics can also be applied in computer related items. If you want to keep illegal software in your computer, at least don’t teach other how to do it.

}


Know your roots

flickr photo by dullhunk https://flickr.com/photos/dullhunk/4833512699 shared under a Creative Commons (BY) license
flickr photo by dullhunk https://flickr.com/photos/dullhunk/4833512699 shared under a Creative Commons (BY) license

We all know about the history of the computer, and if not I will tell you a little about it:

It started with counting machines like the abacus, then it became enormous machines with the size of a building where programmers had to put punched cards and wait for results to come back on the printer. They became smaller with ta past of time, program languages appeared and finally, everyone can have a personal computer (or more) at home.

But, have you ever wondered who was the first software engineer or since when people are called that? That’s right, the first programmers were not software engineers.

It was in the 1960s when many software projects came with lot of problems, most of them were late, over budget and the quality was bad and very inefficient, and the complexity of the software made it difficult to maintain; even when they did manage to deliver a program, it didn’t do for what they were intended. The first NATO Software Engineer Conference in 1968 came with a new concept of software for all this problems, calling it Software Crisis. According to this page:

The conference sought to apply the best practices of project management and production — already used in traditional engineering disciplines — to software..

The conference also proposed a solution, they said that it was needed a new discipline. And I bet you already know the answer. The discipline that they had in mind was called “Software Engineer”.

I’ll share this video about Paolo Perrota talking about the history of software engineer, it inspired me to write this post.


SoftwareEngineer.java

20160816_093947

 

Un ingeniero en software, al igual que otros ingenieros, se encarga de solucionar problemas utilizando distintas herramientas; en el caso del ingeniero en software, este utiliza lenguajes de programación. No solamente consiste en saber usar una computadora, también es necesario saber resolver el problema al que se enfrenta un ingeniero en software; porque cualquiera puede aprender programación, pero solo los ingenieros te pueden resolver los problemas a los que se presenta la sociedad.

También tienen la capacidad de corregir problemas que se presenten en el futuro con el mantenimiento del software.

A pesar de tener conocimiento de programación, es importante tener ideas claras, tomar decisiones sobre que lenguaje usar, aplicar una buena funcionalidad a la solución y trabajar en equipo.

Autores:

Sandra Alcaraz, Andres Barro, Gerardo Juarez, Carmina Perez, Alfonso Contreras.


Craftsman vs Engineer

 

I’ve been searching on the internet about what a software engineer is, and I found different opinions, blogs and articles about it. Some of them said that software development is craft and other said that is was an engineer discipline. For a moment I was almost convinced that it is a craft, but a a part of me was saying that it is an engineer discipline; so I decided to look the meaning at the dictionary and this is what I found:

Retrieved from this dictionary.

Engineer.

The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems.

Craft

Skill in doing or making something, as in the arts; proficiency.

In my own definition, software engineer can be both because mathematical principles are necessary to create something. Engineers are problem solvers and, in software, you are free to create (or program) whatever it is need to help you to solve the problem. You can have your imagination to go wild and write anything (with the correct syntax) in any program language using everything you have been taught; and like any other art, is not going to be the same code from another software engineer.