distributed system developer | is a subtopic of 3.11 - Basing Software Development on Reusable Technology - References | |
is a kind of software developer | |
must not violate the privacy of users by gathering data about people as they use network-based programs or by actively intercepting communications unless users have consented to the release of their private information | |
should never develop harmful programs such as viruses or Trojan horses or hack into systems | |
software developer | asks several evaluators to independently perform heuristic evaluations | |
can avoid creating design documents before starting to program but this is not a good idea and tends to result in an inflexible and overly-complex system | |
has goal rewarding career, recognition, or the challenge of solving difficult problems or by being a well-respected 'guru' in a certain area of expertise | |
is part of software development team | |
maintains software | |
may be judged on when they deliver product, not on its quality level | |
may refuse to reuse components in which they lack confidence | |
most often works on custom software | |
must ensure that the set of use cases is complete and that they are expressed consistently and unambiguously | |
must inform the project manager about any problems | |
must understand the customer's business environment, their problems and the available technology which can be used to solve the problems | |
often fails to adequately involve users in the development process | |
often has significantly less knowledge about modelling than about design and programming | |
often underestimates software development time because it is very hard for people to assess the quality of software or to appreciate the amount of work involved in its development | |
performs cost estimation | |
reuses libraries and APIs delivered with a programming language | |
should avoid the use of obscure features of technology because later versions of the technology might be changed in ways that are incompatible with how you have used it or the producer of the technology might go out of business or withdraw it from the market | |
should be rewarded for developing reusable components | |
should emphasize the use case or use cases which are central to the system, which represent a high risk because of problematic implementation, or which have high political or commercial value | |
should identify all the use cases associated with the software product | |
should not document a design only after it is complete | |
should not omit design documentation | |
should not use a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces | |
should only reuse technology that others are also reusing | |
should realize that attention to quality of reusable components is essential so that potential re-users have confidence in them | |
should realize that developing and reusing reusable components improves reliability, and can foster a sense of confidence | |
should realize that developing reusable components will normally simplify the resulting design, independently of whether reuse actually occurs | |
should work for several months on a testing team; this will heighten her awareness of quality problems she should avoid when she returns to designing software | |
wants software that is easy to design and maintain and which has parts that are easy to reuse | |
stakeholder | must agree on requirements | |