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"
Author: Jose Carlos Peñuelas Armenta
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"
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/
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/
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
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)
sources:
https://en.wikipedia.org/wiki/User_interface_design
https://www.usability.gov/what-and-why/user-interface-design.html
User interface design
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)
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:
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:
https://en.wikipedia.org/wiki/Software_maintenance
https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm
Software design patterns
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
Classification:
- Creational patterns
- Structural patterns
- Behavioral patterns
- Concurrency patters
source:
https://en.wikipedia.org/wiki/Software_design_pattern
https://www.youtube.com/watch?v=vNHpsC5ng_E
Software design patterns
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
Classification:
- Creational patterns
- Structural patterns
- Behavioral patterns
- Concurrency patters
source:
https://en.wikipedia.org/wiki/Software_design_pattern
https://www.youtube.com/watch?v=vNHpsC5ng_E