Thank you Ken!

It is incredible that the semester is already over. Although I am happy because I was really tired, and I wanted it to finish, I am also sad. Why am I sad? Because I met one of the most wonderful teachers that I’ve known. Also, this course was one of the best experiences that I’ve had through college; furthermore, the course included tools that helped me to learn, and develop my skills in my professional area with help of amazing people, such as, Ken Bauer, and Kin Lane (API evangelist). Thank you for this incredible experience Ken.

The teacher

I would definitely recommend taking this course with professor Ken Bauer, simply because he is one of those teachers who actually care about their students development. He is very friendly, and will always try to encourage his students to learn in the most efficient way possible. He is an incredible person, and helps his students in every way he can. Of course, it is not easy; however, if you are responsible enough, you will certainly enjoy the course.

Evaluation

Something that I really liked about this course was the evaluation criteria. Students decide what their grade is going to be. However, this doesn’t mean that students are free passing the course. This grade that the student choose should be backed up with their work through the semester, their responsibility, and the students interest in learning. Obviously there are tasks and topics to study; however, students are provided with a guideline of topics to study and a due date, giving them free organization of their time.

Tools

Students were introduced to Kin Lane a.k.a. API evangelist, who talked about his experiences, solved students’ doubts, and gave them an explanation on the professional development of Software Engineers. This is an example of the tools provided in

Continue reading "Thank you Ken!"

Software analytics

Analytics aims to describe, predict, improving development, maintenance, and management of software systems. Gathering information, analyzing it, and visualizing it are the main steps of various methods of doing analytics.

Analytics represent a basis of software diagnosis which helps in generating conclusions, evaluations, and findings of a software system.

It focuses on:

  • Software systems
  • Software users
  • Software development process

Video on analytics


Software Verification VS Validation

First off, verification & validation are two terms that are common used in software development. They are commonly mistaken as if they were equal. Let’s begin by defining each term.

Verification

Verification is an evaluation of the process of creating a final product. It is useful to determine if the project development goes in the right track. Intermediary work is analyzed: documentation, data bases, etc.

Activities

  • Review of requirements
  • Review of design documents, including HDL and LDD
  • Code review
  • Documentation review

Validation

It is the process of evaluating the final product to determine if it matches the user needs. Basically all types of testing post-development are considered validation.

Activities

  • Prepare test requirements documents and other test specifications to analyze results.
  • Evaluate if these results is fit for use and reflects the project requirements.
  • Test for complicated values, stress, and all possible functionalities.
  • Check if errors exist, if they do, if a graceful message explain them.
  • Check business requirements, and if it is fit for it.

Video explanation:

Source

http://www.softwaretestinghelp.com/what-is-verification-and-validation/


We want it to look pretty please!

User Interface, often abreviated (UI), Design ensures that there are elements easy to access for what users may want to do. Accesibility is what UI design is all about, it must be understandable, and easy to do. Basically, it brings together visual, and interaction design with information architecture. Let’s do it beautiful.

Interface elements

  • Navigational components
  • Input controls
  • Containers
  • Informational components

Tips for a great interface

  1. Keep it simple, avoid unnecesary elements.
  2. Use common elements in your UI, users will feel more comfortable, and will get things done faster.
  3. Structure the page based on importance, and consider relationships between elements and space.
  4. Use colors and textures strategically.
  5. The use of typography is important to create hierarchies, and make it more understandable.
  6. The system must communicate what it is doing.
  7. Establish default values for your system.

Nice video into creating a nice UI:

Source:

https://www.usability.gov/what-and-why/user-interface-design.html


Do you think you are done?

Nothing is perfect, as simple as that. Software failures will remain, and will be discovered for years. Therefore, it is important to apply software maintenance after publishing your master piece.

What is software maintenance?

It is the process of modifying a software system after delivery to correct mistakes, fix bugs, etc. Upgrade, improve performance or other attributes is the basis and goal of this process. Basically, to adapt to changed environments.

Types of maintenance:

  • Corrective: Correct failures of a system, either software or hardware.
  • Adaptive: It is used to make the system usable in a different environment.
  • Perfective: Performed to improve functionalities.
  • Preventative: Performed to prevent problems before they even occur.

Georgia Tech students video on Maintenance:

Source:

http://agile.csc.ncsu.edu/SEMaterials/MaintenanceRefactoring.pdf


Let’s be open source

The term “open source” refers to something people can modify and share because its design is publicly accessible.

Anyone can work on it

Basically, open source means that anyone can modify, upgrade, enhance, or use a piece of software. Although it was mainly introduced in a computing branch, the term has taken many other set of values.

Why is it preferable?

There are four basic benefits from using open source coding.

  • There is more stability because development never ends, and with it, testing is always present. Many points of view are exposed.
  • There is more control on the software. The user has complete control.
  • Training to become a better developer.
  • People consider it more secure someone out of the main team can spot a mistake and correct it

Beyond software

As it was previously mentioned, open source has taken a lot of interpretations. Collaboration methods of working mainly. It is not only on software anymore. Companies, schools, and everyone is implementing this way of thinking, developing projects, and accomplish tasks.

Open source in LEGO

Resources

https://opensource.com/resources/what-open-source


Implementing software

Implementation is the carrying out, execution, or practice of a plan, a method, or any design, idea, model, specification, standard or policy for doing something. As such, implementation is the action that must follow any preliminary thinking in order for something to actually happen. (Rouse, M. 2016)

Basically, implementation is the phase in which the system is used, when the purpose and requirements are fulfilled and it is ready to be deployed. In order for an implementation to be successful, it is important to follow a series of steps and planning stages a priori. There are many methodologies to choose from; however, it is certain that most failed projects mean lack of planning stages.

Webinar on how to implement successfully

It is important to keep the target market or user in mind whenever software implementations are made.

Resources to learn more

http://searchcrm.techtarget.com/definition/implementation


Test me!

“Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not.” (TutorialsPoint, 2016)

Software needs to be tested to determine if all requirements were met. If there are any errors, bugs, mistakes, or gaps in the system.

Who does testing?

The more the better. Different points of view are required in this process: Normally, there is a software testing team; however, software developers, managers, and users also participate.

It is important to implement this phase throughout the development.

Why? To save time, reduce costs and errors.

Testing never ends

This means that there is always some improvement to the system; therefore, testing is needed to see if there is something to be improved.

Types of testing:

There are lots of testing types including compatibility, performance, usability, security, recovery, comparison, stress, unit, load, regression, system, etc.

Most known testing types are alpha testing which is done at the end of the development phase, where the software is almost complete; beta, where end-users are the ones testing the system supposedly finished; and black-box which tests if the system covers requirements.

Video:

Complete tutorial:

https://www.tutorialspoint.com/software_testing/index.htm


Let’s talk about GOF baby!

So here you are again. If this is your first time, welcome to my blog, and congratulations for trying to learn something new.

What am I talking about?

Software Design Patterns, which are solutions to typical problems that software developers face during development. Trial and error was the method in which these solutions were obtained. A lot of time has been invested in Design Patterns.

What is GOF, and why is it important?

GOF or Gang of Four is the name of the crew that began this movement. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides published their book Design Patterns – Elements of Reusable Object-Oriented Software in 1994. Their method in two basic methods of OOP (objected-oriented programming):

  • Program to an interface not an implementation
  • Favor object composition over inheritance

For more information visit tutorialspoint

Video:

Short explanation on theory of design patterns in JAVA

Resources:

https://www.tutorialspoint.com/design_pattern/design_pattern_overview.htm


Building software

What is it?

“The software architecture of a program or computing system is a depiction of the system that aids in the understanding of how the system will behave.” (SEI|CM, 2016)

Basically, Software architecture is the process of creating a blueprint of your program. What will be its functionalities, applications, method, designs, etc. The main difference between Software Architecture and Software Design is that the architecture will demonstrate what the system will do, and the design will show how it will do it. Software architecture is represented on a high-scale abstract style; henceforth, is just a guide to show developers what the system is intended to do, and what it needs to work.

Video:

References

http://www.sei.cmu.edu/architecture/