Software engineering test 1

Ace your homework & exams now with Quizwiz!

Which of the following is NOT an example of an increase in the breadth of complexity of a problem? a. Number of major functions b. Types of data and data structures c. Recursive relationships d. Interfaces to other external systems

(c. Recursive relationships) are not an example of an increase in the breadth of complexity of a problem

List all of the key processes addressed by SEI's CMM model as well as their Maturity Level.

(lvl = maturity level) 1. Requirements management (Lvl 2) 2. Software project tracking and oversight (Lvl 2) 3. Software quality assurance (Lvl 2) 4. Software project planning (Lvl 2) 5. Subcontract management (Lvl 2) 6. Software configuration management (Lvl 2) 7. Organization project focus (Lvl 3) 8. Training Program (lvl 3) 9. Software product engineering (Lvl 3) 10. Peer Reviews (lvl 3) 11. Organization process definition (Lvl 3) 12. Integrated software management (Lvl 3) 13. Intergroup coordination (Lvl 3) 14. Quantitative process management (Lvl 4) 15. Software quality management ( Lvl 4) 16. Defect prevention (Lvl 5) 17. Technology change management (Lvl 5) 18. Process change management (lvl 5)

What is the maximum number of communication paths for a team of 20 people?

- 190 communication paths - 19+18+17+16+15+14+13+12+11+10+9+8+7+6+5+4+3+2+1 or the sum of (n-1) or (n*(n-1))/2

Discuss one advantage and one disadvantage of the waterfall process.

1. Advantage: one advantage of the waterfall model is that it provides an easy way to track the project and gives project managers a precise way to describe the project's status. The Waterfall process model has phases that are processed and completed one at a time which doesn't overlap. Therefore, project can be tracked as it moves through specific and identifiable stages and results are well documented. In essence, the process is made visible - this is why it can be tracked. 2. Disadvantage: one disadvantage is that technically, one stage should not start until the previous stage has been completed. Conversely, once a later stage has started, it is presumed that the earlier stages are complete. In software development, though, the activities correlating to the stages of the waterfall process often overlap and feed information to each other. For example, requirements may need clarification once the project as entered the design phase. Without some process to account for overlap and iteration between the various stages, a mistake found in an earlier stage might not be implemented correctly (or at all) in the later stages. This make the waterfall model one that results in projects that do not accommodate change well.

What are the advantages and disadvantages of waterfall model?

1. Advantages: - The process is highly visible and thus highly manageable. - Results in a higher quality product that can be maintained easier over time. 2. Disadvantages: - the difficulty of accommodating change after the process is underway because, a phase has to be complete before moving onto the next phase. - Process takes a lot of time, heavy up-front costs - Customer feedback on systems may come at very end

Name some of the primary reasons behind the failure of many large scale software projects.

1. An increase in team members leads to an increase in communication paths, which in turn leads to an increase in the potential for miscommunication regarding critical details. 2. Effort estimates and schedules for large, complex systems tend to be extremely optimistic and aggressive, leading to unrealistic expectations on customers and development teams. 3. A lack of domain-specific knowledge among the team members performing the requirements analysis. In the payroll case discussed in the chapter, this could be a lack of someone having proper knowledge of benefits or tax laws. 4. A lack of training and documentation for the end users of the software.

Define the depth versus the breadth issue in software complexity.

1. An increase in the breadth of a complex system would involve an increase in the number of tasks and functions that the software is expected to perform. This would mean more major functions, more features within the various functional areas, more interfaces with various systems, simultaneous users, and more types of data. 2. Depth issues manifest as increased linkages and relationships between units. Linkages may occur through the sharing of data or transfer of control between components. Examples of ways in which relationships between items become more complex include more levels of decisions, nesting of loops, and recursion.

Chapter 1 gave which of the following pointers on Implementation?

1. Be consistent in your choice of names, capitalization, and programming conventions. 2. Know the standard library 3. Test before using a function or method

What type of system is an incremental model mostly used on (or when is it the model that is best to use):

1. Business systems that are not life critical 2. Systems that have a short life span 3. Small systems that must be produced quickly 4. Software that does require large teams

What is an entry and exit criteria to a process?

1. Entry Criteria - are those conditions required for the initiation of an activity. The intent of entry criteria is to take a high-level definition of a process stage and create an executable plan from it. Entry criteria would include a listing and description of the following resources: - Required artifacts - Required people - Required tools - Required definition of the activity to be performed There must be some observable metric for each of the above that signals that it is ready to use for the activity. As an example, people must be available and have the proper experience. For entry into the design stage, requirements specifications must be measured as completed, which might mean the following: - All specifications have been reviewed by customers and other stakeholders - All exceptions found during the review are changed - The modified specifications are accepted by all parties. 2. Exit Criteria - are those post-conditions required for an activity to be considered complete. The main purpose is to describe the artifacts that must be available for the next activity. Exit criteria would include: - Review of artifacts - Correction of all (or a specified percentage) of errors. - Approval and acceptance of the artifacts by downstream personnel.

What are the four phases of the RUP?

1. Inception Phase - during the inception phase, the scope and goals are of the project are established. Critical use cases and scenarios that drive the architecture are also established. Basic architecture and early design alternatives are proposed. The schedule and required resources are estimated, and the methodologies for implementation, testing, integration and configuration are tentatively planned. Finally, any risks are estimated. 2. Elaboration Phase - the elaboration phase may be considered the most important phase of the RUP. At the end of this phase, most unknowns should be resolved. All major and critical system requirements are analyzed, understood, documented, and agreed to by all parties. Baseline design is fully established and demonstrated. Methodologies and platforms for implementation, testing, and integration are fully established. Major test scenarios are established and metrics for the measurement of goals is decided upon. At the end of this phase, the team should have a complete development plan that includes detailed requirements specification, design, and lays out all of the needed resources for implementation, testing, and integration. 3. Construction Phase - at the end of the construction phase, a working, tested version of the code should be available for a limited release to Alpha users. The software product should be produced within established budget and time constraints. The software should meet most of the established goals, as measured by the metrics decided upon during the elaboration phase. Finally, any remaining activities that need to be completed prior to release should be established during this phase. 4. Transition Phase - the transition phase can be described as the point at which the system is moved from the development community to the user community and made to work in its intended environment ("Rational Unified Process Phases"). Alpha and Beta testing is completed, and the final product is prepared for release. Users are trained and transitional activities, such as data migration, are complete. User documentation should be complete. All personnel who will be assisting users, either in sales or support, are trained.

List four factors that should be considered in deciding how many post-release people will be needed.

1. Number of expected users of the system 2. Number of expected issues, both known by developers at the time of release and those projected to be found by users after the release 3. Amount of user training 4. Expected number of future releases, both problem-fix releases and future functional releases.

List and describe three of the typical kinds of non-functional requirements.

1. Performance/Real Time Requirements - These have been grouped together because they appear to tackle many of the same issues. How quickly and easily does the software perform its tasks? Does it use too much memory? Does it interfere with other programs running simultaneously? When considering performance requirements, one must also consider the worst-case scenarios under which the software might run, to determine if the performance (which might be measured in time or memory allocation) will still be acceptable under those circumstances. 2. Modifiability - What is the life expectancy of the program, and will the software need to be modified during that time to meet changing requirements? Are there plans to expand the functionality of the software? Depending on the future plans for the program, how easily the code can be modified or expanded may require particular attention. It should be noted, however, that even if the program doesn't need to be easily modified, good programming practices should still apply, and the code should still be easy to follow and understand. 3. Security - What are the goals of the proposed software, and what are the threats against it? Will the software need to be written to prevent unlicensed use? Will the program contain proprietary or other sensitive information that must be protected from theft? Security requirements would dictate how the software should be designed to withstand the various threats. For example, a credit reporting agency would need to design their software in a way that would protect personal information and credit histories from those wishing to steal that information.

What is the requirement set of activities through each quadrant of the spiral model?

1. Quadrant I - Identify the main requirements and any constraints that will affect the project. At this point, a feasibility study may be completed to determine if the project is worth pursuing. 2. Quadrant II - Evaluate the requirements. Identify any risks associated with the project, such as unclear requirements or an aggressive schedule, and take steps to mitigate those risks. 3. Quadrant III - Depending on the number and severity of risks, perform the extended requirements analysis and engineering, as well as any risk mitigation activities identified in the second quadrant. This may include, for example, developing a prototype, which would help to clarify any unclear requirements, as well as verify that the project is on the right track. Validate the requirements that have been specified. This would involve obtaining approval from the appropriate parties, such as clients or management. If developed, management and a small selection of users would evaluate the prototype. 4. Quadrant IV - a development plan would be completed in this step, and planning for the next cycle of the spiral - the development cycle.

What are the four quadrants in a spiral model?

1. Quadrant I - Identify the objectives, alternatives, or constraints for the particular cycle 2. Quadrant II - Evaluate the alternatives; identify & resolve risks 3. Quadrant III - Develop & verify the product of the phase/cycle 4. Quadrant IV - Plan the next phase

What are the eight principles for software engineering code of ethics recommended by the IEEE-CS/ACM Version 5.2 joint task force report?

1. Software engineers shall act consistently with the public interest. 2. Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest. 3. Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. Software engineers shall maintain independence and integrity in their professional judgment. 5. Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. Software engineers shall be fair to and supportive of their colleagues. 8. Software engineers shall participate in lifelong learning regarding the practice of their profession, and shall promote an ethical approach to the practice of their profession.

From the definition of software engineering, list three areas that software engineering must touch on.

1. Specific methodologies and techniques - Examples of methodologies might include waterfall and agile processes. 2. Product characteristics and metrics - The engineer must ensure that the software does what it needs to do, and must be able to measure how successfully the objectives were reached. 3. Project coordination and management - As software development is a labor-intensive activity, project coordination and management are required to create a quality software product within budget and time constraints. 4.Development of high quality software 5.Cost effective development of the software 6.Maintenance of the software after release.

List two technical concerns in developing large systems.

1. Technology and tool considerations - what language would be most appropriate for the development team? Further, what technological tools will the design be utilizing or interfacing? These tools might include databases, networks, or other middleware. 2. Process and Methodology - What process will be used to drive the different phases of development, from requirements analysis to post-release maintenance and support? As the tasks are divided (for example, between coding/unit testing and integration/testing), how will the team ensure a clear understanding of where one group's tasks end and another's begin? A software development process should answer these and other questions related to how the software will be developed.

What is the goal of a software process model? and what should process models define?

1. The goal of a software process model is to provide coordination between the tasks that must be performed in a particular order to achieve a quality product within budget and time constraints. 2. process models should define the set of tasks that need to be performed, the input to and output from each task, the preconditions and postconditions related to each task, and the sequence and flow of the tasks.

What are the disadvantages of the incremental model

1. The process is not visible 2. managers need regular deliverables to measure progress. If systems are developed quickly it is not cost effective to produce documents that reflect very increment of the system. 3. System structure degrades with new increments 4. software not as quality 5. many versions may lead to increasing complexity of the software and confusion (lack of understanding of the software due to this increase in complexity) (change can corrupt the software structure ) 6. User needs may keep increasing to the point of impractical to implement

A software development process involves what?

1. The sequence and flow of tasks 2. Inputs and outputs from the tasks 3. Preconditions and postconditions for each of the tasks

What type of system is a waterfall model mostly used on? (or when is it the model that is best to use):

1. Used for large engineering projects developed at several sites or (plan driven nature helps coordinate the work) 2. Used when requirements are well understood 3. Used when software will have a long life and need maintenance by people who did not develop the code

What are the advantages of the incremental model?

1. cost of accommodating change is reduced and easier to make changes 2. less rework of analysis and documentation that with the waterfall model 3. More rapid delivery of software to customer is possibly 4. Easier to get customer feedback on the development work that has been done 5. Supports parallel processing - 6. The incremental delivery of individual increments support lower risk of overall project failure. (this is contributed to the fact that high priority services tend to receive the most testing because they are implemented first and retested in new increments) 7. Each increment acts as a prototype to help elicit requirements for later increments (help elicit requirements and with validation of requirements - advantage over waterfalls)

How many process areas, in total, are included in SEI's Software CMMI? List those that fall into the engineering category and the support category.

1. there are 25 major process areas included in the CMMI 2. Engineering Category Processes - Requirements development - Requirements management - Technical Solution - Product Integration - Verification - Validation 3. Support Category Processes - Configuration management - Process and Quality Assurance - Measurement and analysis - Organizational environment for integration - Decision analysis and resolution - Causal analysis and resolution

What type of testing refers to testing done by the clients (or somebody on their behalf), to make sure the program runs as specified?

Acceptance Testing - refers to the testing done by clients or their representatives to ensure that the program runs as specified.

List the fundamental concepts of software engineering that have remained constant even though industry and trends have changed.

Anthony Wasserman's concepts and principals. 1. Abstraction 2. Analysis and design methods 3. User Interface Prototyping 4. Modularity 5. Architecture 6. Reuse 7. Life cycle and process 8. Metrics 9. Tools and integrated environments

When and where was the term software engineering first introduced?

At a 1968 North Atlantic Treaty Organization (NATO) conference in Germany, the term software engineering was introduced as a response to what was termed a "growing crisis" in the emerging industry of software development. In the late 1960's, as programs became larger and more complex, it became evident that better management, methods, and techniques were needed to produce code that performed well and was completed within reasonable budget and time constraints. The attendees of this conference recognized the need for a disciplined approach to software development, similar to the approach used in other engineering professions. The concept of software engineering formalized this need for an engineering approach to software development.

What is CLI?

Command Line Interface - programs that run from the command prompt. This type of interface is easier to implement than a GUI, but is more appropriate for a user with significant computing experience.

A deadline for delivery of a project is an example of a

Design Constraint

What are statements that constrain the ways in which the software can be designed and implemented?

Design Constraints - statements that constrain or restrict the ways in which the software can be designed and implemented. Practically, constraints may be thought of as ways in which the implementation is limited by outside forces, such as budgets, schedules, experience of the programmers, or systems with which the software must interoperate (Graves).

List two of the three strategies cited by the 2004 US General Accounting Office report as key to ensuring delivery of successful software.

Focused attention on the software development environments - Software development teams should have a planned approach to the various phases of development Methodical use of metrics to gauge cost, schedule, and performance targets - Teams should have clear, quantifiable targets that can be easily measured.

Which type of requirement statement defines what the program needs to do?

Functional Requirements - define the tasks that the program needs to do. These requirements are typically measured in a Boolean manner, as the program either satisfies the requirement or it doesn't. Examples of functional requirements given in the case study in the chapter include sorting a file, given a particular input format, and with consideration of how the simple sorting program will handle special cases and error conditions.

What is GUI?

Graphical User Interface - Using graphics and dialog boxes, this type of interface is considered more user-friendly to the novice user.

What are the three major concepts that drove the Rational Unified Process (RUP) framework?

In the supplemental text, Ian Sommerville notes that as more process models have been developed, attempts have been made to create universal process models or frameworks that draw on the basic elements from all processes. The Rational Unified Process (RUP) framework is one such model. 1. Use-Case and Requirements Driven - In the past, use-cases were used to determine requirements. The RUP takes this a few steps further, in that all stages of the process, from requirements to design to testing, are driven by use- cases. 2. Architecture-Centric - Architecture plays a significant role, describing the static and dynamic aspects of the overall system. Architecture is based on the relevant use-cases. 3. Iterative and Incremental - The RUP framework recommends the development of large software systems in smaller pieces or increments.

What type of requirements qualify functional requirements? Specify in what manner they need to be achieved.

Non-Functional Requirements - these requirements specify the manner in which the functional requirements need to be achieved. Non-functional requirements are typically achieved in a linear manner. In other words, the degree to which a non-functional requirement is met may vary, and may be measured in degrees of satisfaction. Applied to the example of maintainability, one particular design may be easier to maintain than another, but both designs may still be considered "maintainable." One design will just meet the requirement with a greater degree of satisfaction.

What are statements that define and qualify what the program needs to do?

Program Requirements - usually are created by the client with input from the software engineer

The methodology known as Extreme Programming dictates that

Programmers should write their own test cases before coding

A client has stated that the software to be designed must protect against unauthorized use. This would be an example of which type of requirement?

Security

List two key reasons that have caused both software project successes and failures.

Successes: A lot of User Involvement and Clear Requirement Statements. Failures: Lack of User Involvement and Incomplete Requirements and Specifications.

What motivated software engineers to move from the waterfall model to the incremental or spiral model?

Technically, the waterfall model is a very rigid model. Each stage feeds into the next, and it is presumed that there is no overlap or contact between the people performing each activity. In other words, one stage cannot start before the previous one is complete. While this makes sense for hardware development, where manufacturing costs are high, in software development, the costs of rework and regeneration of documents necessitated the need for better development models. Frequently, problems with early stages are identified in later stages, such as requirements issues that are identified during the design stage, or design problems identified during the implementation stage. If a problem is found, it must be re-worked and documentation updated to reflect the change. Thus, the waterfall model, because of this rigidity, is much less forgiving of the iterative nature of software development. Incremental and spiral models were adopted because they provided more tolerance for the iterative nature of development in the process. Problems found can be corrected more easily and cheaply with these models.

What is meant by the term principles of software engineering?

The principles of software engineering refer to those rules and assumptions in software engineering derived from extensive observations. The principles refer to practices that have shown to meet the metrics of good engineering, that is, producing a product that does what it is supposed to do within reasonable budget and time constraints. There are 3 different sets of principles outlined in the text. The Set defined by Alan Davis, then the set defined later my Walker Royce, an d Anthony Wasserman. See pages 50-53 for these principles.

Describe a way to simplify a complex problem.

To simplify a complex problem, you have to break the problem down into smaller, more manageable pieces through... 1. Decomposition - refers to this method of breaking the problem down. Types of decomposition correspond to how the problem is broken down. Modular decomposition indicates that the problem is broken down into modules, for example. For the payroll system described in the text, functional decomposition was used for the solution, in which the pieces were designed along common functions, such as administrative actions or payroll processing tasks. 2. Modularization - refers to the concept presented by D.L. Parnas, defined as "the coding techniques . . . which (1) allow one module to be written with little knowledge of the code in another module, and (2) allow modules to be reassembled and replaced without reassembly of the whole system" (1053). 3. Separate the concerns of the problem and solution. 4. Incremental Iterations - with each iteration (step) building an additional layer of complexity onto the existing solution. Once a problem has been broken down, the designers of the system can decide whether to use these smaller problem segments as the basis of the architecture of the new system, or if the system should be broken down differently.

What decisions are taken by the software engineer about the best ways (processes, techniques and technologies) to design software to meet the requirements?

Typically, the software engineer will decide on algorithms and in some cases, the programming language to be used. However, the programming language or the use of other tools is often given as a requirement, as the software must interoperate with other programs, or if the client has a particular interest in certain technologies.

What test determines whether the developers are building the correct system for the client?

Validation test

What test determines if the system built is the correct system.

Verification test

Can a software engineer become a certified Professional Engineering (PE)?

Yes! In the United States, a software engineer can be licensed as a Professional Engineer in the state of Texas. Although a national Principles and Practice exam specific to software engineering debuted in 2013, it does not appear that other states have begun to offer a license under this branch. A quick search on the Texas Board of Professional Engineers listed 83 licensed engineers under the branch of software.

Which of the following is NOT a factor in deciding how much post-release support a system should have? a. Amount of support personnel training b. Expected number of future releases c. The technical tools used in conjunction with the software d. Number and type of known problems at the time of release

c. The technical tools used in conjunction with the software


Related study sets

Computer Science - Chapter 14 (Quiz)

View Set

Common mental and behavioral disorder

View Set

Chapter 10: Foreign Exchange Market

View Set

NCLEX + 35 Page study guide, NCLEX UWorld

View Set

Romanian Orphan Studies: Effects of Institutionalisation

View Set