- Science
It refers to the data structure and algorithm, Computing Theory-Theoretical Level
- Technology
It mainly includes: programming languages, operating systems, and other specific technologies-Technical Level
- Engineering
Including: software architecture, development documentation, project management, various tests, etc-Management Layer
Quotations:
- Software always has bugs, no one knows where it will be; Software always changes, but no one knows where it will change
- No one can write code without any bugs at a time.
- Writing a program is a process of constantly correcting errors. First, before writing a program, you must have a standard and method to judge right and wrong. This isTest.
- An error always exists. It is important to find it when an error occurs, especially in an environment without a debugger at the customer's site. Sometimes, there is only one means:Logs.
- Do not overwrite the original functions when you modify them, because in most cases, the customer wants to have both new functions and retain the original functions.
- To get the output, your code not only requires input, but also relies on other components. Therefore, during testing, you must not only change the input, but also change the dependency.
Criteria for software success or failure:
- Whether Correct & Stable meets functional performance requirements and runs stably
- Easy to use User Experience
- Bugs are fixed quickly: if an error occurs, can you quickly find the root cause of the error?
- Smoothly upgrade smooth upgrade
Main tasks of software development:
- Correctness. The reality is: no one can write the correct code at a time. The Code always has more or less problems. So what should I do once a problem occurs?
- Ensure the correctness of requirement understanding by: Requirement documents, Prototype, and user test cases.
- Ensure the correctness of requirements. The methods include unit testing.
- Ensure that known errors/exceptions are correctly handled
- Ensure that the running bug can be quickly solved by using the following methods: Logging
- Scalability. No unmodified code.
- How to ensure the correctness of code modification?
- How can I upgrade the software on the client?
Software Components
Input |
Output |
Dependencies |
MY CODE |
How can we test whether our code is correct?
- Determine Input and Output
- Determine Dependencies