Software Verification and Validation

Software Verification

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

Software Validation

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

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

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 Maintenance

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

  1. Corrective maintenance: Correct discovered problems. It also covers emergency maintenance
  2. Adaptive maintenance: Performed after delivery to be sure that software remains effective
  3. Perfective maintenance: Modifications of a software after delivery to detect errors and latent faults.

 

Maintenance Processes

Software maintenance activities include:

  • Process implementation
  • Problem and modification analysis
  • Modification implementation
  • Maintenance review/acceptance
  • Migration
  • Software requirement

Software verification and validation

If of testing we are talking, the verification and validations are our next targets.

The terms ‘Verification‘ and ‘Validation‘ are frequently used in the software testing world but the meaning of these terms are mostly vague and debatable. You will encounter (or have encountered) all kinds of usage and interpretations of those terms, and it is our humble attempt here to distinguish between them as clearly as possible.

aprove bug

First of all.

Software Verification

The process of evaluating work-products (not the actual final product) 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. In other words, to ensure that work products meet their specified requirements.

We constantly should be asking to our self: Are we building the product right? How are we going to do this? Simple, by:

  • Reviews
  • Walkthroughs
  • Inspections

And evaluating plans, requirement specs, design specs, code and test Cases

Software Validation

The process of evaluating software during or at the end of the development process to determine whether it satisfies specified business requirements. Its objective is to ensure that the product actually meets the user’s needs, and that the specifications were correct in the first place. In other words, to demonstrate that the product fulfills its intended use when placed in its intended environment.

This time we need to ask: Are we building the right product? Our evaluation item is the product (software) and the way of doing it is by testing, testing testing testing.

————————————————————————

This blog is the most relevant information extracted from the bottom source. Day by day I will try to be eliminating the source words and add my own content but for practice purposes (for now)

Continue reading "Software verification and validation"

Software Maintenance

Software Maintenance is also a part of the Software Development Lifecycle and is as important as getting the project done because change is constant and we have to make sure that our software is always useful and not outdated.

It is known that this is the most expensive part of the project but is also a must if you want your code to be useful when the client changes its mind or the market takes a turn. To explain the kinds of Software Maintenance I made another infographic, you can see it below.

Types of software maintenance.png

To complement what you just read you can watch this video, It’s a bit long but I liked it and you might like it too, it explains pretty well what SM is.


Semester Review

Juanca's Blog

software-engineering

  • Software engineering, craft or an engineering discipline?
    Software development and design is part art and part science, it can be understood as a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineerig of software, that is, the application of engineering to software. In the Software engineering approach, several models for the software life cycle are defined, and many methodologies for the definition and assessment of the different phases of a life-cycle model
    1

  • History of Software Engineering
    The term Software Engineering became known after a conference in 1968, when the difficulties and pitfalls of designing complex systems were frankly discussed. A search for solutions began. It concentrated on better methodologies and tools. The most prominent were programming languages reflecting the procedural, modular, and then object-oriented styles. Software engineering is intimately tied to their emergence and improvement. Also of significance were efforts of systematizing, even automating program documentation and…

Ver la entrada original 838 palabras más


#FlippedClass and my thoughts

During this semester, I had two classes that taught me new things. I don’t mean about theoric things, supposely I learn this every day. But I mean more about experience. Those classes were TC1018 (data structures) and TC1019 (intro to software engineering). In the first one, I had my first real challenge. To be honest, I’ve never had such a hard time with a course, not even OOP or literature (believe me, in my school was really hard). But this post is not about TC1018 and my crazy teacher. This post is about TC1019, a really different experience.

Since I remember, school has been about teachers speaking in the classroom (sometimes passing slides and spitting random words), leaving homework and handling a test which was about what they said. The same loop over 13 years (preschool doesn’t count). This semester was different. First: a class where your attendance is not important, where the teacher does not spits words, but rather makes you investigate and learn by your own (boosting your self-learning skills), where you grade yourself. One can think in two ways: a) this is the best teacher, since he achieved Teachvana, and he is not establishing any knowledge frontiers or b) this is the easiest course, I’ll probably not do anything and still achieve the perfect score. When I started this course, I was thinking like option B (I still do, a little). But as I learned new things, I started knowing what life is about. You don’t stop learning in school. If you do, you become obsolet in a short time. Returning to the non obligatory assistance and pseudo no-date assignments, I believe this teaches you to be responsible. I won’t deny it: I left most of the posts for the end of the month. But still, I

flickr photo by http://resn424.wixsite.com/resnphoto https://flickr.com/photos/raphotosseoul/14987908799 shared under a Creative Commons (BY-SA) license
Continue reading "#FlippedClass and my thoughts"

Beautify Me ;)

So now, lets talk about one important aspect when building software. We gotta have always in mind that helping the regular user have this intuitive way of using the app-software will lead us to a more successful development.

Here is where the User Interface Design comes to matter.

User Interface (UI) 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.

Users have become familiar with interface elements acting in a certain way, so try to be consistent and predictable in your choices and their layout. Doing so will help with task completion, efficiency, and satisfaction.

  • Input Controls: buttons, textfields, checkboxes, radio buttons, dropdown lists, list boxes, toggles, date field
  • Navigational Components: breadcrumb, slider, search field, pagination, slider, tags, icons
  • Informational Components: tooltips, icons, progress bar, notifications, message boxes, modal windows
  • Containers: accordion

user Interface.jpg

Everything stems from knowing your users, including understanding their goals, skills, preferences, and tendencies.  Once you know about your user, make sure to consider the following when designing your interface:

  • Keep the interface simple. The best interfaces are almost invisible to the user. They avoid unnecessary elements and are clear in the language they use on labels and in messaging.
  • Create consistency and use common UI elements. By using common elements in your UI, users feel more comfortable and are able to get things done more quickly.  It is also important to create patterns in language, layout and design throughout the site to help facilitate efficiency. Once a user learns how to do something, they should be able to transfer that skill to other parts of the site.
  • Be purposeful
    Continue reading "Beautify Me ;)"

Semester Review

This is our review of the course with Ken Bauer

Juanca's Blog

software-engineering

  • Software engineering, craft or an engineering discipline?
    Software development and design is part art and part science, it can be understood as a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineerig of software, that is, the application of engineering to software. In the Software engineering approach, several models for the software life cycle are defined, and many methodologies for the definition and assessment of the different phases of a life-cycle model
    1

  • History of Software Engineering
    The term Software Engineering became known after a conference in 1968, when the difficulties and pitfalls of designing complex systems were frankly discussed. A search for solutions began. It concentrated on better methodologies and tools. The most prominent were programming languages reflecting the procedural, modular, and then object-oriented styles. Software engineering is intimately tied to their emergence and improvement. Also of significance were efforts of systematizing, even automating program documentation and…

View original post 722 more words


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"