click below
click below
Normal Size Small Size show me how
Midterm I
Software Engineering Midterm I
Question | Answer |
---|---|
1.1 What are the essential difficulties of software? | Complexity, invisibility, changeability, conformity, and discontinuity |
1.2 Approximately when did the first software product appear? | 1950s |
1.3 What was the background of the first software developers? | Electrical/Hardware Engineers and mathematicians |
1.4 Why was the discipline of software engineering established? | Paradigm shifted because of the anomaly of software complexity. |
1.5 Explain the stages of the waterfall and the rationale for its adoption. | Requirements elicited from users. Design completion. Implement design with code. Maintenance of software. Promised that if requirements and design were done up front, expensive late changes would not be necessary. |
1.6 Why does the waterfall work for construction and for manufacturing but not for software engineering? | Volatility of requirements, resulting from software conformity. |
1.7 How long did the waterfall dominate the discipline of software engineering? | 25 years |
1.8 How high is the approximate yearly volatility in the requirements of commercial software? | 50% |
1.9 When implementing a control program for a dishwasher that has fewer than 10 different washing cycles, what paradigm would you use? Why? | The suitable paradigm is waterfall; the software is small, and once implemented, there will be no volatility during the life of the dishwasher. |
1.10 When implementing a website with 10 different pages for a medium-size business, what paradigm would you use? Why? | The suitable paradigm is iterative; there will be frequent changes in the requirements. |
2.1 What are the five stages of the staged model of software life span? | Initial Development -> Evolution -> Servicing -> Phaseout -> Closedown |
2.2 What important software properties does the initial development establish? Why are they important? | The technologies the project will use, like languages, libraries, and tools, and the system architecture, which consists of the modules and their interactions. These are important because changing these properties later are expensive and maybe impossible. |
2.3 How is software evolution different from servicing? | Evolution adds new functionality and correct previous mistakes. Major changes are occuring. No major changes are made in the servicing stage, only patches and wrappers. |
2.4 How can code decay if it is not physical? | This happens due to loss of software knowledge/coherence or loss of key personnel. The software that results from this decayed. |
2.5 How long on average does large software last? | 10-20 years. |
2.6 In what situation is it better to skip initial development and start software by evolution of an already existing software? | When the new software is closely related to the old one. One example would be mobile phone apps. |
2.7 What are the issues that have to be addressed during software closedown? | Exit strategy is needed. Changing to another system requires retraining. What to do with long lived data? |
2.8 Why is the term life cycle misleading? Which term is more commonly used: life span model or life cycle? | The term “lifecycle” is misleading because there is no cycle in the lifespan model. In spite of that, term “lifecycle” is more commonly used. |
2.9 In what situation can the V-model of the software life span be used? | V-model is a derivative of the waterfall and it can be used in the situations where waterfall can be used, i.e. for short-lived software or for software in very stable domains. |
2.10 What are the advantages and disadvantages of the prototyping model? | Advantage: It supports requirements elicitation and also supports dealing with the initial requirements volatility. Disadvantage: It does not support requirements volatility after the prototyping stage is completed. |
3.1 In compiled languages, what are the steps programmers have to make to create an executable file? | Source code is divided into source files, the compiler translates individual files into object files, then the linker links the object files into one executable. |
3.2 Are program libraries used in the form of source file or object file? Why? | Program libraries are used in the form of object files, and are linked to the executable file by the linker |
3.3 What is the role of version control system in software projects? | Maintains the repository in which all project files are stored and an be retrieved on demand. |
3.4 Explain what a baseline is. | The current version of the project, consisting of a specific version of all files. |
3.5 How does the program version in the private workspace differ from the baseline? | This is the modified version of baseline containing the individual's changes. |
3.7 What does merge tool do? | Takes an original file and a corresponding patch file and makes all the changes that the patch file requests |
3.8 What is the conflict between two updates of a file? How does it arise and how is it resolved? | When two people update the same file in parallel, in contradictory ways, the second person cannot commit. Second person can undo changes to conflicting areas, restart with the new file and make changes again, or convince first person to undo their changes |
3.9 What is the build and what is the result of a build? | During a build, files are compiled, linked, to create a new version to test. Barring problems, the result is a new baseline. |
3.10 A class that supports course grading; contains an array where each student is identified by an integer and has a course grade. There is also a method that can change the student grade and a method that computes the grade point average for the class. | |
3.11 What is three-tier architecture? | Program organization technique, using a presentation tier, business logic tier, and data tier. |
3.12 How long does it typically take a technology to reach majority adopters? | 10+ years |
3.13 What is inheritance in object-oriented technology? Give an example. | A relation between two classes, one called base class and the other called derived class. Base class defines class members that are shared among all derived classes, derived contain members that are specific to that particular class. |
3.14 What is the difference between an object and a class in OO technology? | An object is an instance of a class. |
3.15 Describe the role of polymorphism in object-oriented technology. Give an example. | Polymorphism allows the use of derived type in the place where base type appears. It allows the programmer to write more general code that applies to many situations. |
3.16 Describe the role of “information hiding” in program comprehension. | Information hiding allows the object to present themselves being simpler than they truly are. As aresult, the interaction between the objects is simpler, helping with comprehension of the software. |
4.1 Draw a class diagram of a small banking system showing the associations between three classes: the bank, customer, and the account. | |
4.2 Draw a class diagram of a library lending books using the following classes: Librarian, Lending Session, Overdue Fine, Book Inventory, Book, Library, Checkout System, and Library Card. | |
4.3 Draw an activity diagram of pumping gas and paying by credit card at the pump. Include at least five activities, such as “Select fuel grade” and at least two decisions, such as “Get receipt?” | |
4.4 Draw a class dependency graph of a software for a library lending books. | |
4.5 Explain how a class dependency graph differs from a UML class diagram. | CDG represents classes and more specifically, their dependencies. UML class diagrams represent the classes and their relationships. |
4.6 Suppose that you have two classes: class A responsible for reading an address provided by a user, and supplier class B verifies whether a user-provided ZIP code is located within the user-provided state. Write the contract between classes A and B | Preconditions, bounds, and postconditions, results |
4.7 For a program represented by the class dependency graph of Figure 4.12, write a contract between classes Sale and Payment in plain English. | |
4.8 Why does each contract have to specify preconditions? | Because valid data is needed to guarantee the result |
4.9 Explain the meaning of the activity diagram in Figure 4.15. | The activity diagram shows the steps that need to be followed by a programmer using configuration management. |
4.10 In the class dependency graph of Figure 4.16, define both supplier slices and client slices of classes B, C, D. | |
5.1 How are software changes classified by their purpose? What is the most common purpose of the change? | Perfective changes and functionality and increase value. Adaptive changes adapt software to new circumstances. Corrective, protective. |
5.2 How do software changes impact functionality of software? What is the classification from this point of view? | Incremental add new functionality contraction remove obsolete functionality replacement replace existing functionality, refactoring change structure |
5.3 When is it permissible to do quick-fix changes? | Emergency, life or death |
5.4 Name and give the order of at least five phases of software change. | Initiation, concept location, impact analysis, prefactoring, actualization, post factoring, conclusion |
5.5 What is a product backlog? | Stores a set of requirements |
5.6 What is prioritization of requirements in a backlog? What are the changes with the highest priority? | Severity, fatal, no workaround, workaround, minor |
5.7 Explain the severity ranks of the bugs. | |
5.9 you distribute cards to your users and tell them to write requests for new functionality to your software. A user of your software says, “I can’t fit my user story on these small cards. ” What should you tell this user? Why? | |
5.10 In the point-of-sale software, two types of payment are accepted: check and charge. Write three new user stories for three additional types of payment. | |
6.1 Find a significant concept in the following change request: “To the color palette in your application, add ‘amber.’” | |
6.2 For the concept named “color amber,” find intension and some real world extensions. | |
6.3 What are the basic steps of the search for concept location? Draw the diagram. | Understand the problem, selecting a search srategy, formulate query, execute search, analysis of results |
6.4 Extract the significant concepts from the following change request:“The application allows the users to draw only two figures: circles and rectangles. Allow the user to draw triangles.” Justify your answer. | |
6.5 What is the difference between grep and dependency search in concept location? What are the advantages and disadvantages of the two techniques? | Grep is a pattern match, can be alot of results, contains exact matches, suitable for expolicit Dependency search uses CDG, find local and composite functionality, need correct understanding. |
6.6 Describe a situation when a grep search fails. What would you do if this happened to you? | |
6.7 Explain the difference between local and combined responsibility. | |
6.8 Which parts of the concept location by dependency search are done by the programmer, and which parts are done by the computer? | The computer finds the set of starting modules, set of supplier modules, and set of back track modules. The programmer selects modules and determines if the concept is implemented in the module or the composite module. |
6.9 Your program has the dependency graph of Fig 6.13. What is first class have to inspect for concept location by dependency search? Suppose you always decide correctly which is the next inspected class. What is the max # of classes to be inspected? | |
7.1a | |
7.1b | |
7.1c | |
7.2 Describe at least two different diagrams or graphs that could be used in impact analysis and discuss their benefits and limitations. | UML, to see classes and their relationships. Cooridnations can be missing. Class Interaction graphs, to see dependencies and coordinations. |
7.3 What is the difference between initial impact set and estimated impact set? | The modules that are identified during concept location are the initial impact set. The estimated impact set contains the initial impact set and secondary modifications. |
7.4 Explain the difference between dependencies and coordinations. Give an example of each. | Dependencies are described between client and supplier classes. Coordinations also contain interactions where the classes don't have a contract between them but still interact with each other. If class C is a client of A and B and data flows from A to B. |
7.5 What is a propagating class? Give an example. | Class propagates change to neighbor class but does not change itself. Can be a class that pipes data from one to another. |
7.6 Consider the class interaction graph of a program in Figure 7.14. If the concept is located in A, and the change set is {A, E}, what components need to be inspected by the programmers during impact analysis? Justify your answer. | |
7.7 In the 7.15, Among the classes that are currently left blank, denote by C all classes that are Changed so that the process of impact analysis also produces the classes currently labeled by P and U. | |
7.8 In Figure 7.5, a UML class diagram is used for impact analysis; all class associations are, in fact, class dependencies. Create the corresponding interaction graph. | |
7.9 Change the activity diagram of Figure 7.13 in such a way that the classes marked Unchanged are inspected again if a class marked Changed becomes their neighbor. | |
8.1 If you have a choice to incorporate your changes through polymorphism or through a component class, which one are you going to choose? Why? | Polymorphism, because it usually leads to small change propagation. |
8.2 Do changes done through polymorphism propagate to the clients of the base class? | They should not in a proper design, but they can be. |
8.3 How is the activity diagram of impact analysis in Figure 7.9 modified for change propagation? | |
8.4 What is the difference between small and medium size changes? | Small changes usually entail changing a small segment of code. Medium sized changes can be helped by polymorphism. |
8.5 Give an example of the replacement of a component class by a class that contains new functionality. | |
8.6 Give an example of the replacement of the composite class by a class that contains new functionality | |
10.1 After completing 100% statement coverage, is software without a bug? Give a simple example to validate your answer. | |
10.2 What is unit testing and why is it used? | Verify individual modules to test classes or class methods and their local and composite responsibilty. |
10.3 What is the difference between inspection and testing? | |
10.4 What is regression testing? What does regression testing prevent? | |
10.5 Design a minimal test suite that cover all the statements of the following function: | |
10.6 For the following program, design a minimal test suite: | |
10.7 Explain the difference between unit and functional testing. | |
10.8 In test-driven development, a test is written first and then the code to pass it. Given the following test, write a method that passes the test. | |
10.9 Expand the test in exercise 10.8 to include grades A to F using the following grade scale: | |
10.10 The following class Item needs to be tested: | |
10.11 Explain the inspection process. | |
10.12 Inspect the following code and identify bugs in it. |