DECOUPLING (con't) Computers tend to increase system coupling unless very careful Applying principles of decoupling to software design Modularization How split up is crucial to determining effects Firewalls Read-only or restricted write memories Eliminate hazardous effects of common hardware failures Design ELIMINATION OF HUMAN ERRORS Design so few opportunities for errors Make impossible or possible to detect immediately Lots of ways to increase safety of human-machine interaction Making status of component clear. Designing software to be error tolerant etc.(will cover separately) Programming language design Not only simple itself (masterable), but should encourage the production of simple and understandable programs Some language features have been found to be particularly error pronec ��������������������� ���������� DECOUPLING (con’t) Computers tend to increase system coupling unless very careful. Applying principles of decoupling to software design: Modularization: How split up is crucial to determining effects. Firewalls Read−only or restricted write memories Eliminate hazardous effects of common hardware failures c ��������������������� ���������� ELIMINATION OF HUMAN ERRORS Design so few opportunities for errors. Make impossible or possible to detect immediately. Lots of ways to increase safety of human−machine interaction. Making status of component clear. Designing software to be error tolerant etc. (will cover separately) Programming language design: Not only simple itself (masterable), but should encourage the production of simple and understandable programs. Some language features have been found to be particularly error prone