Code reusability: don’t reinvent the wheel

As the title says, it is completely unnecessary to rewrite code that it has already been written, it is, most of the time, a waste of your time and effort. With all the open source code available nowadays, it is really probable that you find whatever you are looking for on sites like github, gitlab, bitbucket or any other site, and if you don’t find it, well, then now you know what’s going to be your next open source contribution. You should really focus on writing building on top of what others have already done, also, it is worth to notice that you should be writing reusable code as well.

Some tips on writing reusable code:

  1. Don’t repeat yourself: if you find yourself writing the same code several times, probably you should move that piece of god to a module or something alike.
  2. Make a class/method do just one thing: remember the Unix philosophy? write programs that do one thing and do it well, also, write these programs to work together, the secret is in writing generic code to accomplish one simple thing, then use the output of that as input of another program to accomplish a more complex task, don’t make code too generic tough, or it will be difficult to find a purpose to it.
  3. Write unit tests for your classes and make it easy to test classes.
  4. Remove the business logic or main code away from any framework code.
  5. Try yo think more abstractly and use Interfaces and Abstract classes.
  6. Write code that can be easily extended in the future, for code leverage of course.
  7. Don’t write code that isn’t needed, if you doubt if the code is needed, then it is not, just leave it out.
  8. Try to reduce coupling, avoid modules/classes depending on each other.
  9. code-reuse.jpg
    Continue reading "Code reusability: don’t reinvent the wheel"

Software Maintenance

Software maintenance stands for all the modifications done after the delivery of a software product. A software maintenance is needed in order to mantain our software up to date.

Modifications in the software may be required because of changes in the market conditions, changes in the client requirements or even host modifications.

There are some types of maintenances based on their characteristics:

16382202136_375d300dbd_z

flickr photo by Pia https://www.flickr.com/photos/omgdolls/16382202136 shared under a Creative Commons (BY-SA) license

Corrective Maintenance:

This includes modifications and updates done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.

Adaptative Maintenance:

This includes modifications applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.

Perfective Maintenance:

This includes updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.

Preventive Maintenance:

It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Sources:

http://swebokwiki.org/Chapter_5:_Software_Maintenance

https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm


Software Engineering Historayyy lmao

Back in the good ol’ days where I wasn’t born and maybe you weren´t either, I’m talking about the 50’s and 60’s, software was delivered by hand and tested for a few hours before they could have the results back. The first widely used programming language was Fortran by your holyness IBM in 1957, along with Cobol, released by the US Department of Defense in 1962. But the processes of making software were still very slow and people accepted that they didn’t have the best methods, which led to something they called a Software Crisis, so in 1968 a conference was organized to find better ways of doing programming magic. At this conference is were the roots of Software Engineering were finally established.

Over the following decades, the discipline of programming saw a familiar tension between the scientific field, who gave the ideas of how to solve engineering challenges, and the crafty men that solved the practical needs of an industry faced with real-life time and cost pressures. Over the time more ideas came around, at the 80’s Object Oriented Programming came up as well as the use of GUIs to make interaction with the machine easier.

The next years leading up to these days the computing power of the machines programmers used was increased significantly,  but many don’t see this as a good thing, because before you had to write code as efficiently as possible with the little things you had, and now with so much capacity and memory, the quality of code has been downgrading leading up to wasteful software. Even if this phenomenon is true, recent years have been when there has been such an incredible development in the software industries, with the introduction of the Cloud, APIs and almost every industry realizing that they needed online presence

Continue reading "Software Engineering Historayyy lmao"

Floreth's Blog 2016-08-22 23:05:00

Ethics of software engineering:

Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
Sources & links:
http://www.slideshare.net/inam12/software-engineering-ethics-48094822

Floreth's Blog 2016-08-22 23:05:00

Ethics of software engineering:

Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
Sources & links:
https://tc1019carminaperezguerrero.wordpress.com/2016/08/19/inside-the-mind-of-a-moral-software-engineer/
http://www.slideshare.net/inam12/software-engineering-ethics-48094822

Floreth's Blog 2016-08-22 21:35:00

History of software engineering

  1. It first started in the 1950's when software separated from hardware.
  2. They started to reclute programmers that where working as hardware engineers.
  3. Software engineering was encouraged by the software crisis of the (1960's, 1970's and 1980's) which was a term used to describe the hard time programmers has when writing useful and efficient computer programs in time.
  4. the 1990's gave rise to the Internet and to a fast growth in the demand for e-mail systems on the World Wide Web. There also was a growth on browser usage that ran on HTML, changing the way information displayed/ retrieval was organized.
  5. 2000's rapid growth in the demand for inexpensive software solutions led to the expansion of faster and lighter methodologies that developed running software, such as Extreme Programming.
  6. Software engineering today is currently rated as the best job in America by Money Magazine.

Source & links:

Floreth's Blog 2016-08-22 21:35:00

History of software engineering
  1. It first started in the 1950's when software separated from hardware.
  2. They started to reclute programmers that where working as hardware engineers.
  3. Software engineering was encouraged by the software crisis of the (1960's, 1970's and 1980's) which was a term used to describe the hard time programmers has when writing useful and efficient computer programs in time.
  4. the 1990's gave rise to the Internet and to a fast growth in the demand for e-mail systems on the World Wide Web. There also was a growth on browser usage that ran on HTML, changing the way information displayed/ retrieval was organized.
  5. 2000's rapid growth in the demand for inexpensive software solutions led to the expansion of faster and lighter methodologies that developed running software, such as Extreme Programming.
  6. Software engineering today is currently rated as the best job in America by Money Magazine.

Source & links: