During this entire course we have been part of the flipped Learning project that Ken Bauer is trying to implement in Tecnológico de Monterrey. Flipped learning consists on students learning by themselves with the help of a teacher. This way, students see the teachers as someone more approachable and feel the need to ask the teacher more questions.
Each topic must be reviewed by the student at home. The basic information about the topic can be provided by the teacher to impose a small lead. However, the student need to go further than what the teacher them. During class, the students share their discoveries with the teacher and pronounce their doubts.
In my opinion, these systems works perfectly fine as I believe I have learned more this way. Here, you are encouraged to keep learning even when the topic has already been reviewed in class. I usually read the information for class, but to the blog posts at last minute. This way, I can reread what I found earlier and even look for more information regarding on something I have missed before. And in case I have any doubt, I can always ask Ken, even if we were supposed to have discussed the topic a month ago.
Here is a video of some of my classmates and I, giving our reviews on the curse: https://www.youtube.com/watch?v=TdTRLOi0J9Y&feature=youtu.be
The process of evaluating work-products of a development phase to determine whether they meet the specified requirements for that phase. Its objective is to ensure that the product is being built according to the requirements and design specifications. It evaluates the plans, requirement speculations, design speculations, code, test cases
The process of evaluating software at the end of the development process to determine whether it satisfies business requirements. Its objective is to ensure that the product will actually meet the user’s needs.
Summarizing, software verification is made during the process of creating the software for making sure the requirements will be meet, and software validation is done after the software is finished and it makes sure that all the requirements were met.
User interface design is the visible part of a software. It 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.
Interface elements are those elements that help the user interact with the software without complications. These can be:
- Input controls: buttons, text fields, checkboxes, radio buttons, dropdown lists, list boxes, toggles, date fields
- Navigational components: breadcrumb, slider, search fields, pagination, slider, tags, icons
- Informational components: tooltips, icons, progress bar, notifications, message boxes, modal windows
- Containers: accordion
It is important to consider that even though these elements make the navigation easier for the user, the excessive use of them can also make it harder.
Best practices for designing an Interface
- Keep the interface simple
- Create consistency and use common UI elements
- Be purposeful in page layout
- Strategically use color and texture
- Use typography to create hierarchy and clarity
- Make sure that the system communicates what’s happening
- Think about the defaults
Never forget to keep in mind what the user wants. Sometimes your design might seem beautiful to you, but is no adequate for your users. (Something I learned from Interactive Design classes)
Usability. (s.f). User Interface Design Basics. November 23rd, 2016, from Usability Website: https://www.usability.gov/what-and-why/user-interface-design.html
Software is supposed to cover a user’s necessity and satisfy its requirements. For doing this, the software is supposed to evolve as the necessity itself evolves and new requirements start to surface. The process of finding new necessities and improving the software through time is called maintenance.
The purpose of maintenance is to:
- Correct faults
- Improve the design
- Implement enhancements
- Interface with the software
- Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used
- Migrate legacy software
- Retire software
The main characteristics of the maintainer’s activities are:
- Maintaining control over the software’s day.-to-day functions
- Maintaining control over software modifications
- Perfecting existing functions
- Identifying security threats and fixing the vulnerabilities
- Preventing software performance from degrading
Types of maintenance
- Corrective maintenance: Correct discovered problems. It also covers emergency maintenance
- Adaptive maintenance: Performed after delivery to be sure that software remains effective
- Perfective maintenance: Modifications of a software after delivery to detect errors and latent faults.
Software maintenance activities include:
- Process implementation
- Problem and modification analysis
- Modification implementation
- Maintenance review/acceptance
- Software requirement
Are those pieces of code that are available to other developers. The creator of this software can decide whether to charge for it or make it free. Also, they can decide whether they want to get credit or not depending on the type of license have.
Is the process of installing and maintaining a new system while making sure it operates correctly. Some challenges faced during this process are:
- Code re-use: It´s hard to know how much code is okay to reuse
- Version management: Developers keep communication related to the version and configuration
- Target – host: Making sure the program works on the host machines
Software testing consists on trying all the possible incomes to a program and see if it still happens what was expected (Dynamic). However, it can be done just by reviewing the whole code without inserting any inputs (Static)
Software testing types:
- Black box testing: Tests based on requirements and functionality.
- White box testing: based on the internal logic
- Unit testing: Testing of individual components or modules.
- Integration testing: Testing of integrated
- End-to-end testing: testing in a situation that mimics real-world use
- Stress testing: System is stressed beyond its specifications.
- Usability testing: User-friendliness check.
- Recovery testing: Testing how well a system recovers
- Security testing: Can system be penetrated by any hacking way.
These are open source pieces of code that solve a common issue in a program. They can be:
- Structural: How entities work together
- Creational: how mechanisms are instantiated
- Behavioral: Communication between entities
However, if the pattern is not implemented correctly, it can have disastrous repercussions.
It states how a program is composed without involving in the details and taking care of all the possible scenarios. The steps of the Architecture Design Process are:
- Understand the problem
- Evaluate the Architecture Design
- Transform the Architecture Design