TC1019: Course review

Hello m8s, this is probably my last post of the semester. Hope you enjoyed all my posts.
The Fundamentals of Software Engineering course (TC1019) with Ken Bauer was great because of his flipped classroom method. Without it this course would probably be just another memorized, undigested, boring theory course. Thanks to the flipped classroom method I had to read, investigate and learn by myself forcing me to actually learn something, be responsible and get my own conclusions of the theory. Otherwise I  would just have to learn by memory a dozen of sentences to write them in a piece of paper. I hate studying, memorizing words or formulas sucks, what I loved about this course is that I didn´t need to study for my exams (giving a quick read to your post before a exam still helps to refresh old memories ;) ), I knew every topic because at some point I had to read, investigate and write a post about it.

Of course, this class wouldn´t be a success without Ken Bauer, he is actually what makes this class great. He really wants us to get involved in the class and to share our experiences with others. Eventhough I didn´t participate that much on twitter, I made my sharing on the blogs. I think that is very important to have in mind that this is not a competition, if I or somebody else discovered something new or interesting we could share it to the whole class thanks to the tools Ken introduced to us (Twitter, Slacks, Blogs etc.) After all we are all here to learn. Also, he shares his experiences with us, and that is for me the most valuable things of the class. Private interviews with software developers celebrities, extra "off-topic" relevant content and a lot Continue reading "TC1019: Course review"

TC1019: Course review

Hello m8s, this is probably my last post of the semester. Hope you enjoyed all my posts.
The Fundamentals of Software Engineering course (TC1019) with Ken Bauer was great because of his flipped classroom method. Without it this course would probably be just another memorized, undigested, boring theory course. Thanks to the flipped classroom method I had to read, investigate and learn by myself forcing me to actually learn something, be responsible and get my own conclusions of the theory. Otherwise I  would just have to learn by memory a dozen of sentences to write them in a piece of paper. I hate studying, memorizing words or formulas sucks, what I loved about this course is that I didn´t need to study for my exams (giving a quick read to your post before a exam still helps to refresh old memories ;) ), I knew every topic because at some point I had to read, investigate and write a post about it.

Of course, this class wouldn´t be a success without Ken Bauer, he is actually what makes this class great. He really wants us to get involved in the class and to share our experiences with others. Eventhough I didn´t participate that much on twitter, I made my sharing on the blogs. I think that is very important to have in mind that this is not a competition, if I or somebody else discovered something new or interesting we could share it to the whole class thanks to the tools Ken introduced to us (Twitter, Slacks, Blogs etc.) After all we are all here to learn. Also, he shares his experiences with us, and that is for me the most valuable things of the class. Private interviews with software developers celebrities, extra "off-topic" relevant content and a lot Continue reading "TC1019: Course review"

Software verification and validation

Software verification and validation is the process of checking that a software system meets specifications and that it fulfills its intended purpose. Its about making sure the software does what it was build to do without bugs or problems. Verification and validation have different meanings:

Verificiation: is the process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. Are we building the product right?

Validation: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements. Are we building the right product?

For me verification is making sure that the software meets the technical requirements. Does it work? Does it have bugs? It evaluates the software functionality depending on the goal or requirements that you have already decided. On the other hand, validation evaluates the goals or requirements. For example, they can be evaluated depending on the customers opinion. Are the requirements really aiming to what the customer wants? Do we need to add more functionalities to the software? Do we really need these especifications or can we remove them? In a general way, the validation process ensure that the requirements are the correct requirements for the software.

This time, Iron Maiden, enjoy:


  
sources:
https://en.wikipedia.org/wiki/Software_verification_and_validation
http://softwaretestingfundamentals.com/verification-vs-validation/

Software verification and validation

Software verification and validation is the process of checking that a software system meets specifications and that it fulfills its intended purpose. Its about making sure the software does what it was build to do without bugs or problems. Verification and validation have different meanings:

Verificiation: is the process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. Are we building the product right?

Validation: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements. Are we building the right product?

For me verification is making sure that the software meets the technical requirements. Does it work? Does it have bugs? It evaluates the software functionality depending on the goal or requirements that you have already decided. On the other hand, validation evaluates the goals or requirements. For example, they can be evaluated depending on the customers opinion. Are the requirements really aiming to what the customer wants? Do we need to add more functionalities to the software? Do we really need these especifications or can we remove them? In a general way, the validation process ensure that the requirements are the correct requirements for the software.

This time, Iron Maiden, enjoy:


  
sources:
https://en.wikipedia.org/wiki/Software_verification_and_validation
http://softwaretestingfundamentals.com/verification-vs-validation/

User interface design

 https://farm1.static.flickr.com/221/502000104_cdd3eaec1b.jpg


flickr photo by saschapohflepp https://flickr.com/photos/saschapohflepp/502000104 shared under a Creative Commons (BY) license
 
User Interface Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions. UI brings together concepts from interaction design, visual design, and information architecture.
Standards have been developed as far back as the 1980s for defining the usability of software products. One of the structural bases has become the IFIP user interface reference model. The model proposes four dimensions to structure the user interface:
  • The input/output dimension (the look)
  • The dialogue dimension (the feel)
  • The technical or functional dimension (the access to tools and services)
  • The organizational dimension (the communication and co-operation support)
What he/she sees and how he/she interacts with it is very important. The UI must be simple and avoid unnecessary elements, also, sometimes is useful to use colors and texture to direct attention of the user. For me the UI is one of the most relevant for the user to decide if he/she likes it or not. If it is ugly, unconsistent or complex the customer will conclude that the software is bad, whether or not the internal processes are a piece of art. Next time you develop a software be sure to put attention to the UI and make a lot of emphasis on the user reactions and opinions to improve your UI.

sources:
https://en.wikipedia.org/wiki/User_interface_design
https://www.usability.gov/what-and-why/user-interface-design.html

User interface design

 https://farm1.static.flickr.com/221/502000104_cdd3eaec1b.jpg


flickr photo by saschapohflepp https://flickr.com/photos/saschapohflepp/502000104 shared under a Creative Commons (BY) license
 
User Interface Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions. UI brings together concepts from interaction design, visual design, and information architecture.
Standards have been developed as far back as the 1980s for defining the usability of software products. One of the structural bases has become the IFIP user interface reference model. The model proposes four dimensions to structure the user interface:
  • The input/output dimension (the look)
  • The dialogue dimension (the feel)
  • The technical or functional dimension (the access to tools and services)
  • The organizational dimension (the communication and co-operation support)
What he/she sees and how he/she interacts with it is very important. The UI must be simple and avoid unnecessary elements, also, sometimes is useful to use colors and texture to direct attention of the user. For me the UI is one of the most relevant for the user to decide if he/she likes it or not. If it is ugly, unconsistent or complex the customer will conclude that the software is bad, whether or not the internal processes are a piece of art. Next time you develop a software be sure to put attention to the UI and make a lot of emphasis on the user reactions and opinions to improve your UI.

sources:
https://en.wikipedia.org/wiki/User_interface_design
https://www.usability.gov/what-and-why/user-interface-design.html

Software maintenance


Software maintenance is about modificating the software to correct bugs, improve performance or add new features. It is important because it helps to maintain the value of the software over time. As we all know software gets old and obsolete as new software made wth new and more powerful technologies keeps getting released, if we want our software to stay in the market we need to keep fixing errors, optimizing it accordingly to the new technologies and most importantly adjusting it to the new customer needs by adding new capabilitities or removing the unused ones. As almost every step of the software life-cycle, software maintenance has several categories:
  • Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
  • Adaptive Maintenance - This includes modifications and updations 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 modifications and 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 - This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Now lets enjoy this video:


    source:
    https://en.wikipedia.org/wiki/Software_maintenance
    https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm

    Software maintenance


    Software maintenance is about modificating the software to correct bugs, improve performance or add new features. It is important because it helps to maintain the value of the software over time. As we all know software gets old and obsolete as new software made wth new and more powerful technologies keeps getting released, if we want our software to stay in the market we need to keep fixing errors, optimizing it accordingly to the new technologies and most importantly adjusting it to the new customer needs by adding new capabilitities or removing the unused ones. As almost every step of the software life-cycle, software maintenance has several categories:
    • Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
    • Adaptive Maintenance - This includes modifications and updations 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 modifications and 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 - This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

    Now lets enjoy this video:


      source:
      https://en.wikipedia.org/wiki/Software_maintenance
      https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm

      Software design patterns

       https://farm8.static.flickr.com/7286/27844620322_d5df4758b6.jpg


      flickr photo by Philippe Put https://flickr.com/photos/34547181@N00/27844620322 shared under a Creative Commons (BY-ND) license
      Software design patterns are general solution to common problems presented in software development. They are also commonly know as "goog practices" while programming.

      There are several types:
      • Alogorithm strategy patterns
      • Computational design patterns
      • Execution patterns
      • Implementation strategy patterns
      • Structural desgin patterns
      Some types refer only to a specific conection 

      Classification:
      • Creational patterns
      • Structural patterns
      • Behavioral patterns
      • Concurrency patters
      Also, if you want to know design patterns more in detail watch Derek Banas' tutorials. He not only explains what they are and how to work with them but also codes a little bit in Java to show us some example implementations. The videos are a little bit long but they are not boring, if you already know OOP basics you can skip the first two videos. So, pick up a coffee cup, take your time and watch his tutorials, it´s worth it.

      source:
      https://en.wikipedia.org/wiki/Software_design_pattern
      https://www.youtube.com/watch?v=vNHpsC5ng_E

      Software design patterns

       https://farm8.static.flickr.com/7286/27844620322_d5df4758b6.jpg


      flickr photo by Philippe Put https://flickr.com/photos/34547181@N00/27844620322 shared under a Creative Commons (BY-ND) license
      Software design patterns are general solution to common problems presented in software development. They are also commonly know as "goog practices" while programming.

      There are several types:
      • Alogorithm strategy patterns
      • Computational design patterns
      • Execution patterns
      • Implementation strategy patterns
      • Structural desgin patterns
      Some types refer only to a specific conection 

      Classification:
      • Creational patterns
      • Structural patterns
      • Behavioral patterns
      • Concurrency patters
      Also, if you want to know design patterns more in detail watch Derek Banas' tutorials. He not only explains what they are and how to work with them but also codes a little bit in Java to show us some example implementations. The videos are a little bit long but they are not boring, if you already know OOP basics you can skip the first two videos. So, pick up a coffee cup, take your time and watch his tutorials, it´s worth it.

      source:
      https://en.wikipedia.org/wiki/Software_design_pattern
      https://www.youtube.com/watch?v=vNHpsC5ng_E