Chapter 3.1, 3.2, & 3.4

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

According to Assessment and Control of Software Risks, Capers Jones (1994), what is the top risk factor for management information systems?

"creeping user requirements", i.e. requirements that never end

Anthony Wasserman (1996) suggested that there are eight software engineering concepts that have remained relatively constant even though the software industry has been changing; what are they?

- Abstraction: a technique that is often categorized as a design technique. It is in fact a broad method that software engineers employ to aid in generalization of a concept and postponing the concerns for the details. - Analysis and design methods and notation: Proper analysis and design is a key to successfully developing software. Analysis provides us a clear set of requirements, and design transforms the requirements to the solution structure. Many have attempted to omit or reduce these efforts, and such incomplete work has been the major cause of many software failures. In addition, the notation for analysis and design needs to be standardized to facilitate more universal communications. Developing standard notation is crucial in order for software engineering to move toward a disciplined engineering profession. - User interface prototyping: Contributes to a vital portion of understanding requirements and user preferences. It also contributes heavily to an iterative process approach to software development. - Modularity and architecture: contributes heavily to the quality and maintainability of the software. The notion and significance of modularity have been earlier stressed by David Parnas. In addition to modularity, Wasserman also focuses on design patterns and the need for standardizing architectures. Certainly, design patterns and standardization of architecture contributes heavily to the notion of reuse, which is listed as the fifth concept. - Reuse: Reuse is a long-standing practice in the software industry since the inception of macros in assembly language and standard math libraries. In operating systems and software tools, we find an abundance of libraries of general functions. Industry-specific components that are easily identifiable and reusable need to be developed. - Life cycle and process: Software process may not appear to be as significant to software engineering as concepts such as specification and analysis because there are software projects that have been successfully completed without much discipline or organized process. It is important to recognize, however, that most of the large, complex software projects have not survived without some defined process. - Metrics: Employing metrics is an important engineering, as well as management, technique. It is impossible to measure any software attributes or software process without well-defined metrics and measurement techniques, let alone attempting to improve on these attributes and processes. - Tools and integrated environment: Necessary for the development and support of any large, complex software.

What are some common complex factors when building large, complex enterprise resource management systems?

- Executive commitments and leadership - Thorough planning of both business and technical processes - Skilled and experienced consultants - Relentless management focus and monitoring of the project - Willingness to change and make adjustments when required

What are some product attributes of what makes (or doesn't make) a product quality software?

- Maintainability - Installability - Usability - Reusability - Interoperability - Modifiability

According to Walker Royce (1998) in his book, what are the top 10 principles for modern software management?

1. Base the process on an architecture-first approach. 2. Establish an iterative process that addresses risks early in the process. 3. Emphasize component-based development to reduce the coding effort. 4. Change management should be established to handle an iterative process. 5. Enhance the iterative development process environment, called round-trip engineering, where multiple changes may occur constantly across multiple artifacts with automated tools. 6. Use model-based and machine-processable notation to capture design. 7. Establish the process for objective quality control and project progress assessment that includes the assessment of all the intermediate artifacts. 8. Use a demonstration-based approach where intermediate artifacts are transitioned to executable demonstration of the user scenario so that these artifacts can be assessed earlier. 9. Plan to have incremental releases, each composed of a group of usage scenarios, with evolving levels of detail. 10. Establish a configurable process, because no one process is suitable for all software development. These 10 principles are heavily influenced by the assumption that the underlying development process should be iterative in nature. It is considered modern because it is becoming more evident that building a large, complex system in one iteration is extremely difficult. Simply understanding the requirements of a large system alone requires multiple iterations. A process that allows us to construct a software system iteratively and incrementally is crucial and is preferred as an alternative to the sequentially regimental phase approach such as the waterfall process model.

According to a March 2004 U.S. General Accounting Office (GAO) report to the Committee on Armed Services of the U.S. Senate, three basic management strategies were cited as key to ensuring the delivery of high-quality software on time and within budget; what were they?

1. Focused attention on the software development environment(s) 2. Disciplined development processes 3. Methodical usage of metrics to gauge cost, schedule, and performance targets

According to the CHAOS report, what are the most commonly cited reasons for failure of the projects that are impaired and ultimately cancelled?

1. Incomplete requirements 2. Lack of user involvement 3. Lack of resources

According to the CHAOS report, what three factors attributed most to failure of "challenged" projects*. *"Challenged" projects are those that are completed and operational but over budget or over the time estimate, or those lacking some functional features from the original specification.

1. Lack of user input 2. Incomplete requirements and specifications 3. Changing requirements and specifications.

According to the text and Alan Davis (1994), what are the 15 "most important principles" of software engineering?

1. Make quality number 1: It is shortsightedness to deliver a product that is of poor quality. Quality has many definitions and means different things to different constituents. For example, to the developer, it may mean "elegant design," and to the customers it may mean "good response time." In any case, quality must be viewed as the first requirement. 2. High-quality software is possible: Large software systems can be built with good quality, although it may carry a high price. 3. Give products to customers early: It is very difficult to completely understand and capture the users' needs during the requirements phase; thus it is more effective to give the users a prototype of the product and let them play with it. Gather the feedback and then go into full-scale development of the product. 4. Determine the problem before writing the requirements: Before the software engineers rush to offer the solution, ensure that the problem is well understood. Then explore the potential solution and various alternatives. 5. Evaluate design alternatives: After the requirements are understood and agreed on, explore a variety of design architecture and related algorithms. Ensure that the selected design and algorithms are the best match to satisfy the goals of the requirement. 6. Use an appropriate process model: Since there is no universal process model that applies to all projects, each project must select a process that best fits the project based on parameters such as corporate culture, project circumstances, user expectations and requirements volatility, and resource experiences. 7. Use different languages for different phases: No one single language is optimal for all phases of software development. Therefore select the best methodology and language for the different phases of software development. The difficulty in transition from one phase to another is not necessarily solved by using a single language across all phases. 8. Minimize intellectual distance: It is easier to create the solution if the distance between the real-world problem and the computerized solution to that problem is minimized. That is, the software solution structure needs to be as close as possible to the real-world problem structure. 9. Put technique before tools: Before using the tool, the technique needs to be well understood. Otherwise, the tool just rushes us into performing the wrong thing faster. 10. Get it right before you make it faster: It is essential to make the software execute correctly first and then work on improving it. Do not worry about optimization for either execution speed or code during initial coding. 11. Inspect code: Inspection as first proposed by IBM's Mike Fagan is a much better way to find errors than testing. Some early data in inspections showed a reduction of 50% to 90% of the time-to-test.. 12. Good management is more important than good technology: A good manager can produce extraordinary results even with limited resources. Even the best technology cannot compensate for terrible management because it cannot motivate the people as good mangers can. 13. People are the key to success: Software is a labor-intensive profession, and people with experience, talent, and appropriate drive are the key. The right people can overcome many of the shortcomings in process, methodology, or tools. There is no substitute for quality people. 14. Follow with care: Be careful in adopting tools, process, methodology, and so on. Do not follow just because someone else is doing it or using it. Run some experiments before making a major commitment. 15. Take responsibility: If you developed the system, then you should take responsibility to do it right. Blaming the failure or the problem on others, on the schedule, or on the process is irresponsible.

According to the CHAOS report, what are the four most important reasons for project success?

1. User involvement 2. Executive management support 3. Clear requirement statements 4. Proper planning

What is software engineering, according to the text?

A broad field that touches upon all aspects of developing and supporting a software system: * Technical and business processes * Specific methodologies and techniques * Product characteristics and metrics * People, skills, and teamwork * Tools and training * Project coordination and management

True/False? Explain your reasoning. Most of the problems in software project failures are attributed to bad code.

False. As systems grow more complicated, failures instead have far less technical explanations: bad management, communications or training.

The Software Engineering 2004 Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering published by the Association of Computing Machinery (ACM) and IEEE Computer Society recognize that SE is a broadly scoped field, but what are the three highlighted definitions?

From F. L. Bauer: "The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines." From CMU/SEI-90-TR-003: "Software engineering is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems." From IEEE std 610-1990: "The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software." The Curriculum Guidelines goes on to further state, Software engineering is about creating high-quality software in a systematic, controlled, and efficient manner. Consequently, there are important emphases on analysis and evaluation, specification, design, and evolution of software. In addition, there are issues related to management and quality, to novelty and creativity, to standards, to individual skills, and to teamwork and professional practice that play a vital role in software engineering.

According to Ian Sommerville (2010), what is the definition of software engineering?

He states that "software engineering is an engineering discipline whose focus is the cost-effective development of high-quality software systems." He further explains that software is "abstract and intangible" and defines software engineering as "an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use."

What does it mean when referencing the "principles of software engineering"?

Principles of software engineering are the rules and assumptions in software engineering derived from extensive observations.

How are requirements and design specifications validated to ensure correctness? What is the benefit of doing so?

Requirements specification and design specification are not directly executable. A prototype may be built to test them. However, for the most part, requirement and design are detected through reviews and formal inspections. The more often these errors are found prior to coding, the less impact they will have on coding, testing, and on user guide development and other documentation activities.

What is the most costly type of error in the software development life cycle? Why?

Requirements. An error introduced during the requirements phase may propagate into design and coding. It may not be discovered until after the product's release. Furthermore, one requirement error may turn into several design and coding problems. Thus, fixing a requirement error that escaped into design or code is generally more expensive than fixing a coding error.

According to Shari Pfleeger (2009), what is the definition of software engineering?

Software engineering is the application of computing tools to solving problems

How did the concept of software engineering come about?

TODO: summarize this. The term software engineering was first introduced in a 1968 North Atlantic Treaty Organization (NATO) conference held in Germany. During the late 1960s, the computing field was starting to face a software "crisis." Computer hardware had made great leaps in computing power and storage capacity. This ushered in an era that saw the beginning of developing large and complex software that required a large number of programmers. The first wave involved system-level software such as operating systems, file systems, and access methods. With the recognition of the huge potential of business automation, large and complex business applications software also started to emerge shortly afterward. Early experiences with writing programs proved to be insufficient for these large, complex projects. As a result, many software projects were delayed, and some were never completed. Others were completed but experienced excessive budget overruns. The final software product often demonstrated unsatisfactory quality and performance. The users of these software systems were often subjected to incomprehensible manuals that were written by programmers who never met the users. These software releases needed continual support and maintenance that the original programmers were not trained to handle. The attendees of the 1968 NATO conference recognized the need for a discipline much like the other engineering disciplines and thus formalized the concept of software engineering.

Are there laws in software engineering, similar to laws of motion or laws of thermodynamics? Explain your reasoning.

There are no laws in SE. We do have several sets of proposed principles of software engineering. These principles have evolved through numerous years of past experience and many are well accepted. Because software engineering is still young and still developing, the existing principles will continue to be modified and new ones added.


Ensembles d'études connexes

Intro to Nursing Exam Review III

View Set

306 Exam 3/Final Pearson Questions

View Set

Amy Cuddy: Your Body Language Shapes Who You Are

View Set

AOP Chemistry: Measurement and Analysis - Quiz 2 - Precision, Significant Figures, and Scientific Notation

View Set

143 Module 2 - Upper Respiratory Tract Disorders (PRACTICE QUESTIONS)

View Set