Object Oriented Software Engineering   View all facts   Glossary   Help
subject > person or group > person > stakeholder > software developer
Next stakeholderuser    Upstakeholder    Previous stakeholderproject manager   

software developer comparison table
Subject learn from restructure fill in recognize choose involve accept rush adjust have role teach adhere to become use communicate with learn catalog implement check for redesign create add include plan build be part of check reuse practice on ensure that comment measure estimate ensure ignore take personal responsibility for work with develop revise set lead license optimize perform underestimate remove realize that interact with document evaluate understand basically has definition group consider participate in be design for is a subtopic of test complete prototype monitor exceed narrow know that keep reject undertake take advantage of know ask refine avoid understand stop follow need violate take time balance educate as study have purpose divide run overcome assist write make have difficulty provide compare pay attention to remember apply design combine license in have find design with
architect             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete  The person responsible for leading the decision-making about the architecture, and maintaining the architectural model     9.4 - Software Architecture            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
configuration management specialist             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete      responsible for ensuring that changes are made, no new problems are introduced and that documentation for each change is properly updated 1.4 - Stakeholders in Software Engineering            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
cost estimator             cost estimation principles        extra time into a time estimate to account for typical delays    technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously  time by making 3 separate estimates - optimistic, likely and pessimistic - to come up with a global estimates of the best-case, typical case and worst-case cost for the project    new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
estimates because
  • As you gather requirements and begin specifying details, you will be able to increase the accuracy of your estimate
  • As you move into the design phase, you can again increase the accuracy of your estimates
  • You will adjust your estimates as requirements change, or features are dropped in order to meet a budget or deadline
  • As you encounter problems during design and implementation, you will be able to adjust your estimates to take these into account
    cost estimationthe total amount of work required by not understanding the amount of work involved in certain activities or omitting them entirely   a design only after it is complete    differences when making an estimate for a new project:
  • different software developers with different skill levels
  • different development processes and maturity levels
  • different types of customers and users
  • different schedule demands
  • different technology
  • different technical complexity of the requirements
  • Different domains
  • Different levels of requirement stability
   11.3 - Cost Estimation            several evaluators to independently perform heuristic evaluations making only a best-case estimatethe customer's business environment, their problems and the available technology which can be used to solve the problems         the project up into individual subsystems, and then divide each subsystem further into the activities that will be required to develop it, then make a series of detailed estimates for each individual activity, and sum the results to arrive at the grand total estimate for the project    inaccurate estimate if he or she tries to estimate the entire cost of a project as a single number  the results of several different cost estimation techniques      significantly less knowledge about modelling than about design and programming  
database specialist             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        1.4 - Stakeholders in Software Engineering            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
design pattern developer             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        6.15 - Using Design Patterns - References            several evaluators to independently perform heuristic evaluationspatterns iteratively and have then peer reviewed at each iterationthe 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems             patterns for others to use until he or she has considerable experience both in software design and in the use of patterns          significantly less knowledge about modelling than about design and programming  
designerstudying patterns            cost-benefit analysis to choose among alternatives      skeletons for the files that will contain the code      technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete      a programmer 1.7 - Activities Common to Software Projects            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems       designs of other systems, including designs that have been found to be bad      design decision      large systems until she has experienced a wide variety of software development projects  significantly less knowledge about modelling than about design and programmingways to reduce costs and increase benefits 
distributed system developer             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       harmful programs such as viruses or Trojan horses or hack into systems     cost estimationsoftware 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   a design only after it is complete        3.11 - Basing Software Development on Reusable Technology - References            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems   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                    significantly less knowledge about modelling than about design and programming  
evaluator             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     heuristic evaluation to test usabilitysoftware 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   a design only after it is complete        7.6 - Evaluating User Interfaces            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
framework developer             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces   design elements that are common to several applications         technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously   that the framework is well tested and reviewed   new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        3.3 - Frameworks: Reusable Subsystems            several evaluators to independently perform heuristic evaluations divergent changes by designing the framework to be general enoughthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
hardware and third-party software specialist             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces           software development team technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete       responsible for  11.4 - Building Software Engineering Teams            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
mentor             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        1.9 - Difficulties And Risks In Software Engineering as a Whole            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
modeller             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     modellingsoftware 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   a design only after it is complete        5.10 - Difficulties and Risks When Creating Class Diagrams            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
programmer code to make it simpler if necessary  alternative that makes code simpler over more complicated one      object oriented principles consistent code layout style documentation navigation, which includes looking up the methods available to achieve some objective    several small classes, rather than one big, complex class      technology that others are also reusing the code she writes based on a UML diagram always respects the constraints imposed by each OCL statementobvious things since they add clutter  that anything that is true in a superclass is also true in its subclasses   new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete   classes into logical sections with a clear comment separating each section if a class has many methods  responsible for anticipating things that can go wrong and writing exception handling code in preparation Programming Style Guidelines       the number of instance variables small. If this number exceeds 10, then consider splitting the class into separate classes - e.g. a superclass and a subclass'clever' or 'cool' coding techniques unless they make the code simpler to understand polymorphism, inheritance, abstract classes, and methods several evaluators to independently perform heuristic evaluations over-use of class variables or class methodsthe customer's business environment, their problems and the available technology which can be used to solve the problems consistent guidelines that make programs easy to read when writing programs           program thinking at the level of abstraction needed to create effective models  to the documentation describing which features of Java are deprecatedthat shorter code is not necessarily better code but unnecessarily long code is also badthe 'isa' rule religiouslythe system  significantly less knowledge about modelling than about design and programming  
requirements specialist             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        1.4 - Stakeholders in Software Engineering            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
reusable component developer             a catalog of reusable components to find appropriate components  reusable components so that software engineers will be able to find them      the development of the reusable technology, in the same manner as if it were a product for a clientconfidence in the reusable technology by
  • guaranteeing support
  • ensuring it is of high quality
  • responding to the needs of the users
  technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       software components that are intended to be reused     cost estimationsoftware 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   reusable components so that software engineers will be able to use them easily        3.2 - Incorporating Reusability and Reuse Into Software Engineering   the success or failure of the reusable software so you can improve your investment decisions in future projects        several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems the same steps as the development of complete applications: domain and requirements analysis, design, documentation, testing and inspection         competition with other developers of reusable components by:
  • Ensuring the reusable technology is as useful and as high quality as possible
  • Advertise the presence and advantages of the reusable software
    support for the components after they are developed       significantly less knowledge about modelling than about design and programming  
software architect             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces           software development team technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
  a team of software engineers  cost estimationsoftware 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   a design only after it is complete      responsible for leading the decision-making about the architecture, and maintaining the documentation describing the architectural model 9.4 - Software Architecture            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
software developer practising user centred design     users in the decision making process as much as possible throughout development       a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       an understanding of the users of a system     use case analysissoftware 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   a design only after it is complete        7.1 - User Centred Design           the characteristics of her users allows her to design a system that matches their level of knowledge, their abilities and their preferencesusers to work with and give their feedback about prototypes, on-line help and draft user manuals 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                     the user interface following principles of good usability  significantly less knowledge about modelling than about design and programming  
software developer using a framework  hooks and slots          services that the framework provides, i.e. methods that perform useful functions, called the API             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete        3.3 - Frameworks: Reusable Subsystems            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
software engineer  certain missing details of a framework to complete the application or subsystem it representsactivities that are not consistent with the goal of solving customers' problems, such as adding unnecessary features, and situations when it would be most cost effective not to develop software at all, to develop simpler software or to purchase existing software  a contract where she is required to implement requirements with no changes allowedchangesthe requirements or design as soon as important changes are discoveredto put knowledge to use in innovative ways to solve problemsinterviewing skillsa code of ethicsthe manager of a development team at some point in her careeruse case analysis to help define the tasks that the user interface must help the user performpeople, to understand how they work and to understand what impact any proposed software may have on these people's productivityhow users and customers think and behave so it will be easier to produce software that meets their needs  valid generalizations by checking that:
  • superclasses and subclasses have unambiguous names
  • each subclass retains its distinctiveness throughout its life
  • all the inherited features make sense in each subclass
parts of an over-complex system as necessaryprototypes to try out the technology you will be usingunnecessary new features budget and schedule which requires a great deal of knowledge about what is required to produce a system, and how long each activity should takeflexibility and other aspects of maintainability into the software from the start so that changes are easier to make the consistency of requirements with any standards, with other requirements in the document, with higher-level requirements and with the requirements for other subsystemsothers' work, rather than re-developing software that others have already developedprototypes or systems that are of lesser importance in order to gain sufficient experience in a particular technologyhis systems can be produced within a limited budget and by a certain due date    long-term needs of the customersworkthe customer to resolve any problems with requirements in a project where requirements have already been determinedprototypes based on rough requirements to check out the validity of the ideas or the reliability of the technology before writing detailed requirements objectives for quality when starting a project before the 1940's in most jurisdictionscertain aspects of designs - achieving the best possible levels of certain qualities, while not exceeding a certain budget and at the same time meeting objectives for the other qualitiesquality assurance activities on each change in a systemsoftware 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 developmentfeatures that are not neededthe vicious circle of software reuse exists and costs money - in order to save money in the longer term, an investment in reusable code is justifiedusers and clients to keep up-to-date on their needsa design only after it is completehow the system will impact all the stakeholders, and work closely with them to foster increased understanding of issueshow their managers run projectsA person who has education in, and experience performing software engineering; an engineer who specializes in software  promoting and marketing the projectaware of things which may changeflexibility to accommodate potential changes1.1 - The Nature of Software  the system early, especially those parts that involve complex algorithms, in order to determine whether performance will be satisfactory quality objectives which helps them avoid spending more effort than is necessarythe scope^2 of a system if possible by defining a more precise problem   a serious software project without doing domain analysis whether a system meets the customer's needs until it is delivered and in useseveral evaluators to independently perform heuristic evaluations technology sold by just a single vendor and which has relatively few other customersthe application domain so he or she can communicate effectively with clients and users the IEEE/ACM code of ethics  to understand software before making changesthe benefits of the use of third-party technology with the risks of problemsan engineerPeter G. Neumann's Risks Digest to ensure they do not recreate the failures listed in itto solve problems economically by developing high quality softwarea system into smaller subsystems, so that each one is naturally simpler  the manager of the development teamclear documentationtheir designs reusable by designing and documenting software so that it is understandable and flexible enough be used in a variety of different systems     well-understood techniques in an organized and disciplined wayuser interface after doing some domain analysis and defining the problemthe best features of each process modelmost countries in order to legally perform consulting or self-employed work where you call yourself an 'engineer'user interface design skillsreusable componentschange in mind
technical writer             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces             technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete      responsible for ensuring that on-line help and user manuals are well written 1.4 - Stakeholders in Software Engineering            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
technology specialist             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces           software development team technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously       new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete      responsible for specialized knowledge and expertise in a technology such as databases, networking, operating systems etc. 11.4 - Building Software Engineering Teams            several evaluators to independently perform heuristic evaluations 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 marketthe customer's business environment, their problems and the available technology which can be used to solve the problems                        significantly less knowledge about modelling than about design and programming  
tester             a design pattern without understanding in depth the forces that need to be balanced, and if another pattern would better balance the forces           software development team technology that others are also reusing the set of use cases is complete and that they are expressed consistently and unambiguously the quality of both the product and the process which This allows you to plot the quality over a period of time and determine whether it is improving or not     new libraries, APIs and frameworks because
  • developing anything reusable is seen as not directly benefiting the current customer
  • If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
  • Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
     cost estimationsoftware 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   a design only after it is complete      suspicious 10.2 - Effective and Efficient Testing
  1. every equivalence class of every individual input
  2. all combinations where an input is likely to affect the interpretation of another
  3. values at the boundaries of equivalence classes
basic testing before inspecting software    software developers tend to have certain habits that can lead to errors, and hence to defects     several evaluators to independently perform heuristic evaluations 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 markethow programmers. designers and users think, so as to better find defectstesting just when money or time runs out - the result is low quality software that fails often when users start to use it knowledge of software design to determine the equivalence classes of inputs       one test per equivalence class using a representative member of that equivalence class as input       detail  tests that explicitly try to catch a range of specific types of defects that commonly occur  significantly less knowledge about modelling than about design and programmingdefects by
  • anticipating typical errors made by developers
  • anticipating unusual things that users might try to do
 

Next stakeholderuser    Upstakeholder    Previous stakeholderproject manager