The overall quality of a software product is not visible to the naked eye. The UI itself may look great and it also may work as intended. But as the software grows, it gets more complex. In practice, quality assurance gets left out in favor of a fast delivery. But this approach can introduce more costs than they save. Unfortunately, they surface much later in the product lifecycle.
Estimation is one of the hardest parts in software projects due to many misconceptions, the inability of humans to estimate, and the risk and fear of losing your margin. A systematic approach and the knowledge of typical mistakes will drastically improve your estimations and allow for win-win-projects.
It ALWAYS takes longer when writing . Invisible hurdle from “mockup” to “working” to “really working” (security, scalability, extendability etc.)
Building a web application (web apps) can be a daunting task. It includes so many decisions that it’s easy to quit before even starting. Here is an essential guide to building a great basic web application and avoid common pitfalls.
Waterfall and other process models are no excuse for bad practices, broken processes and failed projects. If you adhere to a process you don’t understand, you will build crappy software.
An infographic shows you the history of software quality assurance and what you can learn from it.
Quality assurance (QA) includes the whole process of making sure that everything is done to make the most of the available resources.
Testing is more narrowly defined as the process of checking whether specified requirements are met. This can be done dynamically by executing or using the product or statically by checking source code listings, documents and other product artifacts.
Also take a look at the Buzzwords for Quality Assurance!
– Worse quality due to spaghetti code (resulting in low maintainability and extendability = high long-term costs) can be better because of higher short-term development speed (productivity) and faster user feedback (validation).
The client/server model is the standard for communication of electronic devices today. The simplicity of it’s request-response way of working is pretty straight forward.
used everywhere (frameworks)
HTTP can be augmented with headers (security, meta information etc.)
Alternative communication models:
Reverse engineering is the attempt to understand the inner workings of a software product by disassembling it. Most applications are just compressed folders (or archives/packages) that include all the source code, images and configuration files.
To prevent disassembling, obfuscation is used. – Source code (and any other text-based information) can be obfuscated easily by replacing variable names etc. with arbitrary strings and removing whitespace and comments. However, there is no bulletproof way to prevent Reverse Engineering. It can only be made harder. This is why critical business logic is usually placed on the server side and queried by the client.