OO Summary (Homework 12-14)

【Testing VS Programming Correctness Proof】

Testing can help find and reveal errors in the program, which is an important means to ensure the reliability of software. However, testing can only prove that the program has errors but not prove the correctness of it. In this case, to ensure software reliability, testing is an imperfect technique.

People naturally hope to develop a complete proof method of correctness. Once a practical correctness verification procedure, a technique that can automatically prove the correctness of programs, has been developed, the reliability of the software will be more assured and testing workload will be greatly reduced. However, software testing is still needed because the program correctness only proves that the program function is correct but not prove that the program's dynamic characteristics are in compliance with the requirements. In addition, the proof of correctness itself may also be mistaken.

 

【OCL VS JSF】

OCL(Object Constraint Language) is supplement of graph-based models, which helps declare and specify more details about the models and UML graphs.

 

 

【UMLs】

(1) Class 

 

 

(2) Sequence

 

 (3) State Transition

 

【Reflection】

(1) Relationship between Modules

We have learnt basic operation of Java,  multi-threading and thread safety design, standardized design with specification language, and engineering testing. These four modules offer knowledge from basic to complex, from shallow to deep. The more we learn, the more complicated problems we would solve; the more we learn, the closer we are to advanced programming and engineering skills.

 

(2) Progress in Design, Test & Programming Quality

DESIGN - The most obvious progress I find in myself is that when facing new demand, I code less than before due to a better structure of my program. I find my coding more readable and concise with shorter functions and better design.

TEST - I have learned to use Junit for testing. I have developed my habit of reading codes to find others bug instead of depending on luck.

QUALITY - I try to handle better with huge amount of data and take random errors into account. I also try to consider all possible input to react to every possible requirement.

 

(3) Understanding of Software Engineering

When handling with huge code quantity, programers need a more standardized programming pattern to cooperate with each other and complete a project that satisfies customer's request with high efficiency. That's why software engineering is born. 

Software engineering is the process of applying systematic, orderly and quantifiable methods to the development, operation and maintenance of software. This kind of method enables software to be huge-scale with multiple functions, states, and systems as well as high performance. The main working process should be requirement analysis, design, structure building, testing, and maintenance.

To realize software engineering, the whole procedure should be standardized, such as offering requirements document, test sheet, project report, employing coding specification, and attaining quality evaluation standard. Automation is also in need, such as automation between collaboration of programmers, automation development to reduce duplicate or redundant work, automative testing like Junit. 

 

(4) Suggestion

This is not a game. This is a serious course. All the rules and standard should be settled at the beginning, without any inappropriate changes or implicit requirements. 

If possible, communication platform could be better. Students wouldn't be reminded by emails but rather like notifications in QQ or Wechat. In this case, students would be receive their messages immediately and communicate with each other in higher efficiency and convenience.

 

posted @ 2018-06-25 10:16  贝卡卡  阅读(274)  评论(5编辑  收藏  举报