Principal of Software Engineering - Conceptual Exam

Ace your homework & exams now with Quizwiz!

25. List two different problems with the traditional waterfall model of software development.

(lecture slides "software process models") -Rigid/change adverse -long lead times

21. What does it mean for requirements to be externally complete?

-all states, state changes, inputs, products, and constraints are described by some requirement.

37. List four different stakeholders who can contribute to the requirements process and one benefit their inclusion can provide.

1. Clients, who are the one paying for the software to be developed. The benefit of their inclusion is that there the one paying for its development, so if they receive a product that they didn't want they probably won't rehire you for another product. 2. Lawyers or auditors, who are familiar with government, safety, or legal requirements. The benefit of them is that they can approve your product from any illegalities. 3.Customers, people who buy the software after it is developed. Their benefit is that their positive feedback can help sell more of the product. 4. {need to find this one still}

8. List (you do not need to describe) the two types of participants in extreme programming.

1. Customer 2. Developers 3. Coach 4. Tracker

2. List and provide a description of two different techniques for estimating effort.

1. Expert Based Deliphi Method - Experts answer questions and revise answers to get closer to the correct answer. 2. Algorithm Based Funciton point analysis - It assesses the functionality delivered to its users, based on the user's external view of the functional requirements. 3. Machine Learning Cased-based reasoning - is the process of solving new problems based on the solutions of similar past problems.

40. List three types of coupling and rank them in order from loosest to tightest.

1. Uncoupled 2. control coupling 3. content coupling

4. List and provide a brief (2-3 sentences) description of three different software process models.

7 Software process models 1. Waterfall - it is the easiest model to understand. The stages happen one after another. The biggest drawback of waterfall is that it is hard to revise anything in the previous stages. 2.V-model- similar to waterfall except that it will verify and validate between steps. The biggest drawback is the same as water fall 3. Prototyping Model. - a model where you will protype and test certian portions of of the design process. Biggest drawback is that is designed for the customer. 4. Phased Models - Add phases to model as needed. Very adaptable. 5. Spiral Model - Risk Management Focused. It is a very slow development process. 6. Transformation Model - A model where the process may transform depending on requirements. Biggest drawback is that the errors are expensive. 7-1. Agile - Very good overall development process. It is good all around. Biggest drawback is that it is less rigor. 7-2. Scrum - Sprint based development method. Developer friendly. Biggest drawback is that it requires a lot of discipline.

22. Indicate how an acceptance test and an installation test are similar and how they are different.

Acceptance test- System Is checked against customer's requirements description. Installation test- System is installed in environment and ran to make sure that the system still functions as it should.

18. Describe in terms of activities performed, how an active design review and a passive review process are different from each other.

Active Design Review - Reviewers exercise the design document by using it in ways that developers will use the final document in practice. Rather than reading the documentation and looking from problems, reviewers are given or devise questions that they must answer by looking up information in the (software arch document)SAD. Purpose is to detect faults rather than correct them. Passive Design Review - Reading documentation and looking for problems.

66. What is one advantage and one disadvantage to using formal correctness proofs?

Advantage - gives us an in-depth understanding of the program as we examine the structure Disadvantage - Takes more time

64. List and provide a brief description of three different types of faults.

Algorithmic/Logic - Algorithm is designed incorrectly Performance - unacceptable execution speed Documentation - documentation does not match what the program actually does

69. Describe what is meant by static analysis and list two different types of static analysis.

Analysis performed when the program is not actually executing Code analysis - checks for syntax Data analysis - reviews data structures Checks code without executing program

27. List three different members of a software test team and provide a description of their roles.

Analysts - understand customer problems, clarify requirements questions System Designers - Understand system arrangements, aid in test case development Change Control(Configuration Management) - coordinate revision, assist with documentation Users- help evaluate HCI factors

11. List three desirable characteristics of requirements

Applicability- Technique applies to real world problems, have reasonable assumptions, and be compatible with other techniques used in the project. Implementability- easily refined or translated into an implementation. Testability/simulation- able to be testable. Checkability- readable by non developers. Must be accurate. Maintainability- useful in making changes to the system, easy to change the specification as system evolves. Modularity- allows for a large specification to be decomposed into smaller parts easier to write and understand. Able to make changes to smaller parts without rewriting whole entire specification. Level of abstraction/expressibility-Objects,states, and events correspond with actual objects, actions, and conditions in the problem domain. Specification is concise and elegant. Soundness- Semantics of the specification language are defined precisely. Verifiability- Specification satisfies the requirements. Runtime safety- Code generated automatically from specification, code degrades gracefully under expected runtime conditions. Tools maturity- Has a support tool of high quality with training available. Looseness-Specification can be incomplete or admit nondeterminism. Learning curve- User can learn quickly. Technique maturity- Technique has been certified or standardized. Large user base. Data modeling- Includes a data representation, relationship , or abstraction. Discipline- Technique forces it users to write well structured, understandable, and well behaved specifications.

29. Indicate two ways in which white box and black box testing are different.

Back Box-Each boundary has a valid boundary value and invalid boundary value. Test cases are designed based on both the valid and invalid, instead of a center input. White Box-Dividing the test input data into a range of values and selecting one input value from each range. TYpically done as unit tests. Tests thoroughness through path testing.

14. What is meant by big-bang testing and why is it generally not recommended?

Big-Bang testing- an integration testing strategy wherein all units are linked at once, resulting in a complete system. When this type of testing is adopted, it is difficult to isolate any errors found, because attention is not paid to verifying the interfaces across individual units.

10. Describe how boundary value analysis and equivalence class partitioning are used in unit testing.

Boundary Value Analysis- (black box). Each boundary has a valid boundary value and invalid boundary value. Test cases are designed based on both the valid and invalid, instead of a center input. Class partitioning- (White Box) Dividing the test input data into a range of values and selecting one input value from each range. TYpically done as unit tests. Tests thoroughness through path testing.

9. List and describe (10 - 15 words) two different types of software maintenance.

Corrective - Respond to problems resulting from faults. As failures occur, they are brought to the team's attention; then find the failure's cause and make corrections and changes as necessary. Adaptive- Implementation of secondary changes introduced in one part of the system. Adaptive changes do not correct faults; they merely allow the system to adapt as it evolves. Perfective- involves making changes to improve some aspect of the system, even when the changes are not suggested by faults. Changes to enhance readability are examples of perfective maintenance. Preventative- Changing some aspect of the system to prevent failures. Take action to a fault that has not yet become a failure before it has even happened.

28. Describe what is meant by the terms coupling and cohesion and indicate to what extent they are desirable in software systems.

Coupling- interdependence upon modules -It is unlikely that a system would be build completely of uncoupled modules. Our goal is to not have complete independence of modules, but rather to keep their degree of coupling low as possible. One objective of OO design is to promote loosely coupled designs. Cohesion- refers to dependence within and among a modules internal elements. The more cohesion, the more closely related its pieces are. -Design goal is to make each module as cohesive as possible, so that each module is easier to understand and less likely to change.

26. Describe the relationship between users, developers, and customers in software development.

Customer- is the company, org, or person who is paying for the software to be developed. Developer- is the person who is building the system for the customer. User- person or people who will actually be using the syste

32. Describe three different types of nonfunctional (quality) requirements.

Design constraint- a design decision, such a choice of platform or interface components, that has already been made and that restricts the set of solutions to our problem. Process constraint- restriction on the techniques or resources that can be used to build the system. Quality requirements- describe some quality characteristics that the software solution must posses.

23. What are design patterns and what is one benefit or reason to use them in a project?

Design pattern - codifies design decisions and best practices for solving a particular design problem according to design principles. -provides more specific guidance than design patterns do, but are less concrete and detailed than software libraries/toolkits. -improves a designs modularity

72. Provide a short (3 - 5 sentences) description of how a daily scrum operates.

Each team member answers the questions: a. What did you do yesterday? b. What will you do today? c. Is there any trouble in your way? Then, issues are dealt with in subgroups

49. List three different approaches to evaluation and rank them in order of ease of implementation.

Easiest to hardest => Feature Analysis, Survey, Case study

39. List and briefly describe (~ 20 words or less) three duties of a Scrum master.

Ensures scrum is understood and enacted Shields the team from external interference and distractions Has no management authority - can't control the group Resolves impediments / is a leader, but without authority

58. What are the three parts of an ER diagram and how do they relate to a UML class diagram.

Entity Relationship Attribute This is very similar to a UML diagram. It helps to show who is involved in a system and how all of the different modules of the system interact. UML class diagram is just a sophisticated ER diagram

30. List and describe two different biases that commonly affect estimations and list one which in which each can potentially be mitigated.

Expert Based- Delphi Method: Experts are asked to make individual predictions secretly, based on their expertise and using whatever process they choose. Then, the average estimate is calculated. Algorithm Based- COCOMO: Estimates size in what its creators call application points. Captures size in terms of high-level effort generators. Machine Learning- Case-based: Reasoning: machine learning technique that can be applied to analogy-based estimates. Builds decisions based on the several combinations of inputs that might be encountered in a project.

34. Provide a brief description of system testing, unit testing, and integration testing. Also indicate the order in which the different phases are typically performed.

First, each program component is tested on its own , isolated from other components in the system, this is known as unit testing- verifies that the component functions properly with the types of input expected from studying the component's design. Next, when collections of components have been unit-tested, the next step is ensuring that the interfaces among the components are defined and handled properly. Integration testing- the process of verifying that the system components work together as described in the system and program design specifications Finally, the last test is system test- the system is viewed and tested as a whole rather than separate pieces.

56. What are formal methods and why are they typically not used in real-world software projects?

Formal methods are mathematically based specification and design techniques. These are not used because it is highly intensive and really only necessary in safety critical applications like motor vehicle operation.

47. Provide a description of the pipe-and-filter architecture style and indicate one of the benefits for using this style.

Functionality is achieved by passing input data through a sequence of data-transforming components called filters to produce output. Pipes are connectors that transmit data from one filter to the next. Benefit - evolution is really easy as changing the system just involves inserting or modifying filters. Also, filters are independent, so analysis of them is easy.

12. What are the three different parts (levels) of the GQM approach?

Goal, Question, Metric Goal-> Conceptual level. Goal is defined for a team or system to meet a specific purpose. Question-> Operation level. Set of questions to define an objective model for assessing the achievement of our goals. Metric-> Quantitative level. Set of metrics associated with every question in order to answer it in a measurable way.

46. Provide a description of the relationship between errors, failures, and faults.

Human error causes a fault in the system which leads to failure a. A fault occurs when a human makes a mistake, called an error, in performing some software activity. b. A failure is a departure from the system's required behavior.

67. What is the difference between path testing and branch testing?

In branch testing, in every decision point, each branch is chosen at least once in some test. In path testing, every distinct path through the code is executed at least once.

48. What is meant by traceability and why is it desirable?

It's the ability to verify the history, location, or application of an item by means of documented identification. It aids verification and validation.

35. Provide a brief (~15 word) description of the Law of Demeter and specify two benefits that designs which obey this law tend to have.

Law of Demeter- allows for a direct application when writing code, while at the same time almost automatically guaranteeing proper encapsulation, cohesion and loose coupling.

24. List two different difficulties in performing risk analysis and describe what makes them challenging.

Measuring impact- Exact damages may be hard to quantify, sometimes the impact is unknowable. Estimating Probability- our estimates of the likelihood are inaccurate.

7. List and provide a brief (~15 word) description of the roles of four different members of a software development team.

Members Requirement analyst - work with the customer, breaking down what the customer wants into discrete requirements. Designers- generate a system-level description of what the system is supposed to do. Programmers- write lines of code that implement what the requirements specify. Testers- Often done by the programmers themselves. Help catch faults that the programmers overlook. Verify that the complete system is what the customer wants. Trainer- shows users how to use the system.

44. List and describe three different types (categories) of defects that can be found when inspecting requirements documents.

Omission - something is left out Inconsistency - one part does not line up with another part of the document Extraneous - extra information that is not needed Ambiguous - requirement is too vague or is not defined clearly

65. What is a project postmortem and when might it be performed?

Performed at the conclusion of the project - determine and analyze elements of the project that were successful and unsuccessful. "What worked and what didn't work well?"

13. Describe what is meant by the planning fallacy and indicate its effects on project management.

Planning fallacy- The tendency to hold a confident belief that one's own project will proceed as planned, even while knowing that the vast majority of similar projects have run late. Inaccurate completion estimates have economic, social, and personal costs.

15. When using a design by contract approach, describe what is meant by preconditions, postconditions, and invariants

Preconditions -mutual obligations Postconditions- benefits Invariants-consistency constraints -together these contract properties are called assertions.

17. List three advantages of prototyping and describe what is meant by rapid prototyping.

Rapid Prototyping - building software in order to answer questions about requirements. (page 272) -Effective tool for testing questionable requirements -Exploring user interface alternatives -Encourages us to communicate with customers and explore areas of uncertainty -Help us and customers understand what the system is to do

16. What is the difference between a requirements definition and a requirements specification?

Requirements Definition- complete listing of everything the customer wants to achieve. Expresses requirements by describing its entities in the environment which the proposed system will be installed. Requirements Specification-restates the requirements as a specification of how the proposed system shall behave.

33. Specify at which stages of development UML use case diagrams, sequence diagrams, and component diagrams are most commonly used.

Requirements and design

36. Define what is meant by risk and provide two examples of potential risks in a software projects.

Risk - a situation involving exposure to danger. -Unwanted events with negative consequences - Events without an upside or potential for positive outcome - Outcomes that we wish to avoid or mitigate

31. List two of the SOLID principles of software design and provide a brief description of what they mean.

S - Single-responsibility principle:A class should have one and only one reason to change, meaning that a class should have only one job. O - Open-closed principle:Objects or entities should be open for extension, but closed for modification. L - Liskov substitution principle - Interface segregation principle:Let q(x) be a property provable about objects of x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T. I - Interface segregation principle-A client should never be forced to implement an interface that it doesn't use or clients shouldn't be forced to depend on methods they do not use. D - Dependency Inversion Principle:Entities must depend on abstractions not on concretions. It states that the high level module must not depend on the low level module, but they should depend on abstractions.

20. How are software architecture and software design different from each other.

Software Architecture- Skeleton and high level infrastructure of software Software Design- responsible for individual modules/components.

60. What is meant by software reliability and how is it typically measured?

Software is reliable if it functions correctly and operates without internal errors. Software reliability is the probability that a system will operate without failure under given conditions for a given time interval.

19. What are stubs and drivers and how are they used in top-down and bottom-up testing?

Take place of the missing component. Answers the calling sequences and passes back output data that lets the testing process continue. Both stubs and drivers are needed for each component, leading to much more coding and potential problems.

71. What benefit is there to ensuring that all requirements are testable?

Testable requirements are beneficial because what gets measured gets done. Ambiguous requirements make it difficult to determine when work is done on a feature.

59. What is the purpose of a configuration management team and how do they interact with other members of a software development team?

The configuration management team is responsible for maintaining correspondence between the requirements, design, implementation, and tests. eg. the config management team should know if a developer alters something in one module whether it will affect any of the other code or tests in the project. They are responsible for knowing how everything works together.

55. Describe the set of steps that are employed as a part of planning poker.

The customer assigns a 'value' to each requirement as a way to rank based on importance. Then user stories are created to implement the requirements and the developers discuss how much resources it will take to complete the story. The developers discuss until they agree on a user story to implement the requirement

1. Describe one problem with fault/error seeding that reduces its effectiveness.

There are many problem with fault/error seeding: 1.Determining what sort of errors should be seeded 2. Extra work may be caused by adding the method 3. Figuring if all errors have been found / removed 4. Environment must be controlled to be effective

68. What is (i.e. explicitly state) Lehman's Law of Conservation of Organizational Stability and indicate at least one implication that is has for product development.

This law states that during the active life of a program, the overall rate of development for a programming project is statistically invariant. One implication of this is that at some point, optimum productivity is reached, and adding more input / resources will not speed up development.

3. Describe the relationship between tools, procedures, techniques, and paradigms.

Tools- Instrument or automated system for accomplishing something in a better way. Help aid in software engineering activities, documenting, and tracking requirements. IDEs are an example Procedures-Combination of tools and techniques that produce a particular product. Techniques- A method or technique is a formal procedure for producing a result. Paradigms- An approach or philosophy for building software. Software process models.

6. List three types of cohesion and rank them in order from low to high.

Types of cohesion from worst to best. 1. Coincidental 2. Logical 3. Temporal 4. Procedural 5. Communication 6. Functional 7. Informational

5. Define the terms verification and validation and indicate how they are different.

Verification- the process of establishing the truth, accuracy, or validity of something. Validation - the action of checking or proving the validity or accuracy of something. Validation is checking the software to see if it meets the need of the customers. Verification is checking if the software meets specification.

57. List (you do not need to describe) two different types of agile methods.

XP/Extreme Programming, Scrum

45. List the four different categories of software requirements and provide a brief description of each.

a. A functional requirement describes required behavior in the terms of required activities, such as reactions to inputs, and the state of each entity before and after an activity occurs. b. The nonfunctional requirement describes some quality characteristic that the software solution must possess, such as fast response time, ease of use, high reliability, or low maintenance costs. c. A design constraint is a design decision, such as choice of platform or interface components, that has already been made and restricts the set of solutions to our problem. d. A process constraint is a restriction on the techniques or resources that can be used to build the system.

73. List two different types of UML diagrams and provide a brief description of their purpose.

a. Class Diagrams: main building blocks of any object-oriented solution. It shows the classes in a system, attributes, and operations of each class and the relationship between each class. B. Use case diagrams: model the functionality of a system using actors and use case

42. Describe two differences between a code inspection and a code walkthrough.

a. Code inspection: formal and planned - checks code against prepared list of concerns b. Code walkthrough: informal and unplanned - concerns are not prepared, and in general you present your code to a review team that looks it over for correctness

38. List and provide a brief description of three types of performance tests.

a. Configuration tests analyze the various software and hardware configurations specified in the requirements. b. Security tests ensure that the security requirements are met. c. Documentation tests ensure that we have written the required documents.

52. List two different software design patterns.

a. Creational b. Structural c. Behavioral

73. List three different steps of systems testing.

a. Function testing. b. Performance testing. c. Acceptance testing. d. Installation testing.

53. List three different types of design methods or decompositions. Provide a brief (~20 words) description of each.

a. Functional Decomposition: functions as modules. Shows how modules interact with each other. b. Feature-oriented Decomposition: features are assigned to modules. Describe system in terms of service. c. Data-oriented Decomposition: Partition data into modules. Describe conceptual data structures.

61. In terms of software security, how are immunity and resilience different from each other?

a. Immunity: high immunity means can defend an attempted attack. b. High resilience: if it can recover quickly and easily from a successful attack.

50. How are the client-server and peer-to-peer architecture styles similar? How are they different?

a. In a client-server, the design is divided into two types of components: clients and servers. Server components offer services, and clients access them using a request/reply protocol. b. Peer-to-Peer each component acts as both a client and a server to other peer components. Any component can initiate a request to any other peer component.

74. Indicate how incremental development and iterative development are different.

a. Incremental development: adding new functionality in small chunks. b. Iterative development: adding new functionality in a repetitive manner - ie you start with a skeleton that only just meets all requirements and improve on it.

43. List two benefits of using interfaces or abstract classes in object oriented systems.

a. Interfaces allow us to develop loosely coupled systems. b. Interfaces make unit testing and mocking easier.

54. What is regression testing and why is it beneficial to perform?

a. Regression testing is the process of testing changes to computer programs to make sure that the older programming still works with new changes. The regression tests guarantee that the new system's performance is at least as good as that of the old.

51. List six different activities commonly undertaking during software development.

a. Requirement gathering and analysis. b. System analysis c. System design d. Coding e. Testing f. Implementation

41. When using the Human Error Taxonomy what do a slip and a lapse have in common and how are they different?

a. Slips relate to the observable actions and are commonly associated with attentional or perceptual failures. b. Lapses are more internal events and generally involve failures of memory.

62. What is information hiding and how does it make software easier to maintain.

a. The process of hiding details of an object or function. Information hiding is a powerful programming technique because it reduces complexity. Hiding information is encapsulation combining elements to create a larger entity. The programmer can then focus on the new object without worrying about the hidden details. (So, basically it allows abstraction?)

70. List three different perspectives on software quality and describe how they perceive quality.

a. The user view: quality is fitness for purpose. b. The manufacturing quality is consistent to specification. c. The product view: quality tied to inherent product characteristics.

63. What are three pieces of information that should be included in a header comment block?

a. What your component is called. b. Who wrote the component. c. When the component was written and revised.


Related study sets

ALL Answers in Code HS Web Design (Picasso)

View Set

Chapter 19: Program Design and Technique for Speed and Agility Training

View Set

Industrial Revolution Review Guide- History Chapter 25

View Set

Einstellungen und Einstellungsänderungen (D. Katz und L. Festinger)

View Set

SECTION 3 ECONOMICS FINAL REVIEW

View Set