In: Computer Science
Discuss at least four factors that cause bugs and failures of computer systems. Include at least one that can be blamed on people and at least one that is inherent in the technology. For each of your four factors, tell which type of factor it is (blamed on humans or inherent in the technology). Include at least one example of each. Answer in 3 paragraphs. Like an essay
Discussion about four factors causing bugs and failures
of computer systems:
* There is definitely a human factor which causes
could bugs and failures of computer systems, such as the human
tendency to make mistakes, which is natural, as no one is perfect.
Not only at the time of development of computer systems, but also
at the time of its deployment, implementation, functioning,
operations, monitoring, administration, management, maintenance,
support, etc., where humans make mistakes. Not only do they make
mistakes accidentally during these phases of the life cycle of
software, products, or computer systems, but also do they do wrong
and bad things intentionally. This accounts for blaming people
i.e., humans. Example: There could be human error
in the manufacturing, development or operation of a product where
he/she when tired, with less or no sleep, would lose focus on work
and makes mistakes in the say, assembling parts or components of a
hardware incorrectly, or missing on pressing a button to start or
stop something critical task, ending up in a fatal or failure of a
computer system.
* Faulty hardware: This accounts for a factor inherent in the technology. There could be faults in hardware, such as damaged or broken hardware, hardware that are badly designed with less or no functionalities, hardware working incorrectly not as per desired, designed, manufactured, compatibility between the hardware, software, and device drivers if any. An example would be, the Wide Field Infrared Explorer (WIRE) spacecraft, which NASA operated it. Its hardware components failure caused the spacecraft getting itself into an uncontrolled spin of 60 RPM in just two days after it was launched.
* Poor coding practices or lack of experience or expertise in the developers, manufacturers, creators, etc.: This factor could also account to blaming people or humans as they would not have knowledge, talent, skill, expertise, exposure, or prior work experience in the manufacturing, developing, and creating products, software, or computer systems respectively. These employees could take up the job without knowing the skill set required for the position as they may assume they have the experience for the role. So, they do this either accidentally, or intentionally to secure their jobs. Sometimes, the recruiter or the employer hires unskilled or less experienced employees either accidentally without properly screening and interviewing the candidates, or they hire them intentionally without an option as those candidates would be available for less salary package. Poor coding, specifically and technically, could be due to missing error or exception handling, lack of or no proper validation, or using poor, legacy, bad tools, faulty compilers, debuggers, profilers, validators, etc. Example: Typos in the developers' code, syntactic and semantic errors, not proof-reading the code and another example would be developers' hard-coding passwords in the software programs or applications source code.
* Bad and poor design of the product, software,
hardware, or a computer system:
This could be caused due to logical design errors. This starts with
wrong formulas used to represent software requirements, any wrong
decision logic tables, procedural errors not reflecting the real
business process, errors specified for boundary conditions. The
omission of definitions or procedures, causing failures in the
design unable to detect any illegal operation and even unable to
react when this happens. This factor accounts for blaming humans
and could also account for inherent in the technology due to the
software or hardware limitation by design.
Example: Omitting or ignoring the required software system states with respect to software errors in specific.