
EBK SOFTWARE ENGINEERING
10th Edition
ISBN: 9780133943238
Author: SOMMERVILLE
Publisher: PEARSON CO
expand_more
expand_more
format_list_bulleted
Expert Solution & Answer
Chapter 9, Problem 9.8E
Explanation of Solution
Software maintenance:
In order to correct faults and to improve performance and other attributes after delivery various software modification techniques are used.
The three main types of software maintenance are:
- Corrective maintenance: Corrective maintenance or fault repair are the changes made to the system to repair reported faults which may be program bugs or specification errors or omissions.
- Adaptive maintenance: Adaptive maintenance or environmental adaptations is the change in software to adapt it to changes in its environment such as changes to other software systems.
- Perfective maintenance: Perfective maintenance or functionality addition involves adding new functionality or features to the system...
Expert Solution & Answer

Want to see the full answer?
Check out a sample textbook solution
Students have asked these similar questions
Please answer two Java OOP questions.
Please answer two JAVA OOP questions.
Please answer two JAVA OOP questions.
Chapter 9 Solutions
EBK SOFTWARE ENGINEERING
Ch. 9 - Explain why a software system that is used in a...Ch. 9 - Prob. 9.2ECh. 9 - Prob. 9.3ECh. 9 - Prob. 9.4ECh. 9 - What are the strategic options for legacy system...Ch. 9 - Prob. 9.6ECh. 9 - As a software project manager in a company that...Ch. 9 - Prob. 9.8ECh. 9 - Explain the differences between software...Ch. 9 - Prob. 9.10E
Knowledge Booster
Similar questions
- describe 3 practices you would not recommend when designing data visualizations. Explain your responsearrow_forwardPlease answers two questions of JAVA OOP.arrow_forward4. Suppose we have a perfect binary tree with height h 0 representing a heap, meaning it = has n 2+1 1 keys indexed from 1 to 2+1 1. When we run convertomaxheap we run maxheapify in reverse order on every key with children. Let's examine the worst-case - In the worst-case every single key gets swapped all the way to the leaf level. (a) For each level in the tree there are a certain number of nodes and each of those nodes [10 pts] requires a certain number of swaps. Fill in the appropriate values/expressions in the table: Level Number of Keys Number of Swaps per Key 0 2 .. (b) Write down a sum for the total number of swaps required. This should involve h, not n. [10 pts] Totalarrow_forward
- The next problem concerns the following C code: /copy input string x to buf */ void foo (char *x) { char buf [8]; strcpy((char *) buf, x); } void callfoo() { } foo("ZYXWVUTSRQPONMLKJIHGFEDCBA"); Here is the corresponding machine code on a Linux/x86 machine: 0000000000400530 : 400530: 48 83 ec 18 sub $0x18,%rsp 400534: 48 89 fe mov %rdi, %rsi 400537: 48 89 e7 mov %rsp,%rdi 40053a: e8 di fe ff ff callq 400410 40053f: 48 83 c4 18 add $0x18,%rsp 400543: c3 retq 400544: 0000000000400544 : 48 83 ec 08 sub $0x8,%rsp 400548: bf 00 06 40 00 mov $0x400600,%edi 40054d: e8 de ff ff ff callq 400530 400552: 48 83 c4 08 add $0x8,%rsp 400556: c3 This problem tests your understanding of the program stack. Here are some notes to help you work the problem: ⚫ strcpy(char *dst, char *src) copies the string at address src (including the terminating '\0' character) to address dst. It does not check the size of the destination buffer. • You will need to know the hex values of the following characters:arrow_forward1234 3. Which line prevents compiler optimization? Circle one: 1234 Suggested solution: Store strlen(str) in a variable before the if statement. ⚫ Remove the if statement. Replace index 0 && index < strlen(str)) { 5 } } = str [index] = val;arrow_forwardCharacter Hex value | Character Hex value Character Hex value 'A' 0x41 'J' Ox4a 'S' 0x53 'B' 0x42 'K' 0x4b "T" 0x54 0x43 'L' Ox4c 'U' 0x55 0x44 'M' 0x4d 'V' 0x56 0x45 'N' Ox4e 'W' 0x57 0x46 '0' Ox4f 'X' 0x58 0x47 'P' 0x50 'Y' 0x59 0x48 'Q' 0x51 'Z' Ox5a 'T' 0x49 'R' 0x52 '\0' 0x00 Now consider what happens on a Linux/x86 machine when callfoo calls foo with the input string "ZYXWVUTSRQPONMLKJIHGFEDCBA". A. On the left draw the state of the stack just before the execution of the instruction at address Ox40053a; make sure to show the frames for callfoo and foo and the exact return address, in Hex at the bottom of the callfoo frame. Then, on the right, draw the state of the stack just after the instruction got executed; make sure to show where the string "ZYXWVUTSRQPONMLKJIHGFEDCBA" is placed and what part, if any, of the above return address has been overwritten. B. Immediately after the ret instruction at address 0x400543 executes, what is the value of the program counter register %rip?…arrow_forward
- 1 typedef struct node* { 2 struct node* next; 3 char* key; 4 char* val; 5} node_t; 6 7 char* find_node (node_t* node, char* key_to_find) { while(strcmp (node->key, key_to_find ) != 0 ) { node = node->next; 8 9 10 } 11 return node->val; 12 }arrow_forwardMatch each of the assembler routines on the left with the equivalent C function on the right. Write the name of the label (e.g., foo) to the right of the corresponding function. Note: shrq is the logical right shift instruction, and sarq is the arithmetic right shift instruction. foo1: leaq 0(,%rdi, 8), %rax long choice1 (long x) { ret return x - 8 >8; foo3: } movq sarq %rdi, %rax $8, %rax long choice4 (long x) ret { return x*256; } foo4: long choice5 (long x) leaq -8 (%rdi), %rax { ret return x-8; } long choice6 (long x) foo5: { leaq -8 (%rdi), %rax return x+8; shrq $63, %rax } retarrow_forwardGiven the variables and code in the text below, identify where in memory they will live once the code is compiled. 1 char big_array [1L<<24]; /* 16 MB */ 2 GB * :/ 2 char huge_array [1L<<31]; /* 3 4 int global = 0; 5 6 int useless () { return 0; } 7 8 int main() 9 { 10 void *p1, p2, *p3, *p4; int local = 0; malloc (1L << 28); /* 256 MB *, 11 12 p1 13 p2 = malloc (1L << 8); /* 256 B * 14 p3 15 p4 = malloc (1L << 32); malloc (1L << 8); /* 4 GB * */ /* 256 B */ 16 } Note: *pN is the thing at which pN points. 1. big_array 2. huge_array 3. global 4. useless 5. void* p1 6. *p1 7. void* p2 8. *p2 9. void* p3 10. *p3 11. void* p4 12. *p4arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- Principles of Information Systems (MindTap Course...Computer ScienceISBN:9781305971776Author:Ralph Stair, George ReynoldsPublisher:Cengage LearningFundamentals of Information SystemsComputer ScienceISBN:9781337097536Author:Ralph Stair, George ReynoldsPublisher:Cengage LearningPrinciples of Information Systems (MindTap Course...Computer ScienceISBN:9781285867168Author:Ralph Stair, George ReynoldsPublisher:Cengage Learning
- Management Of Information SecurityComputer ScienceISBN:9781337405713Author:WHITMAN, Michael.Publisher:Cengage Learning,Enhanced Discovering Computers 2017 (Shelly Cashm...Computer ScienceISBN:9781305657458Author:Misty E. Vermaat, Susan L. Sebok, Steven M. Freund, Mark Frydenberg, Jennifer T. CampbellPublisher:Cengage LearningInformation Technology Project ManagementComputer ScienceISBN:9781337101356Author:Kathy SchwalbePublisher:Cengage Learning

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781305971776
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Fundamentals of Information Systems
Computer Science
ISBN:9781337097536
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781285867168
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Management Of Information Security
Computer Science
ISBN:9781337405713
Author:WHITMAN, Michael.
Publisher:Cengage Learning,

Enhanced Discovering Computers 2017 (Shelly Cashm...
Computer Science
ISBN:9781305657458
Author:Misty E. Vermaat, Susan L. Sebok, Steven M. Freund, Mark Frydenberg, Jennifer T. Campbell
Publisher:Cengage Learning

Information Technology Project Management
Computer Science
ISBN:9781337101356
Author:Kathy Schwalbe
Publisher:Cengage Learning