November 02, 2018

Software Engineering - Comprehensive

 2015 - 2016
Comprehensive Examination (Regular) 

Question) Indicate True or False for following statements with a justification within 30 words. No credit is given for answers with no justification.  

a. For successful design, you must practice diversification followed by convergence.
b. Appraisal cost is likely to be the most expensive element of cost of quality.
c. Before an architectural pattern is chosen for use in a particular system it must have a code implementation to expedite its reuse.
d.Quantitative methods for evaluating the quality of proposed architectural designs are freely available.
Answer) FALSE
e. In component-based software engineering, the team searches for available components at the outset of the project.
f. With thorough testing it is possible to remove all defects from a program prior to delivery to the customer.
g. Many software metrics can only be measured indirectly.
h. Software testing is deemed complete at end of budgeted duration for testing.
i. Design patterns are not applicable to the design of object-oriented software.

Question) Differentiate the following: 
a. Analysis vs. design

Analysis: The goal in Analysis is to understand the problem and to begin to develop a visual model of what you are trying to build, independent of implementation and technology concerns. Analysis concentrates on translating the functional requirements into software theories. The idea is to get a rough cut at the objects that comprise our system, but focusing on behavior  (and therefore encapsulation). After Analysis is performed we move effortlessly, into "Design" and the other concerns.

DesignGoal of Design is to improve the model with the purpose of developing a Design Model that will permit a seamless transition to the coding phase. In design, we familiarize ourselves to the implementation and the deployment environment. The implementation environs is the "developer" environment, which is a software super set and also a hardware subset of the deployment environment.

Focus on understanding the problem
Idealized design
System structure
Functional requirements
A small model
Focus on understanding the solution
Operations and attributes
Close to real code
object life cycles
Nonfunctional requirements
A large model

b. Cohesion vs. coupling
Cohesion is the indication of the relationship within module.
Coupling is the indication of the relationships between modules.
Cohesion shows the module’s relative functional strength.
Coupling displays the relative independence between the modules and components of system.
Cohesion is a degree (quality) to which a component / module emphases on the single thing.
Coupling is a degree to which a component / module is related to the other modules.
While designing you should strive for high cohesion i.e. a cohesive component/ module focus on a single task (i.e., single-mindedness) with little interaction with other modules of the system.
While designing you should strive for low coupling i.e. dependency between modules should be less.
Cohesion is a natural way of extension of data hiding. For example, class having all members visible with a package ensuring default visibility.
Creating private methods, private fields and non-public classes delivers loose coupling.
Cohesion is Intra – Module Concept.
Coupling is Inter -Module Concept.

c. White-box testing vs. black-box testing
             Black Box Testing
                   White Box Testing
With Black box testing one can test the software without knowing the internal structure of code or program.
With White box the internal structure of system is well-known to tester who is going to check the software.
This type of testing is carried out by testers.
Generally, this type of testing is performed by software developers.
Implementation Knowledge is not required to carry out Black Box Testing.
Implementation Knowledge is required to carry out White Box Testing.
Programming Knowledge is not required to carry out Black Box Testing.
Programming Knowledge is required to carry out White Box Testing.
In this method, testing is applicable on higher levels of testing .For instance System Testing, Acceptance testing.
In this method, testing is applicable on lower level of testing .Example :Unit Testing, Integration testing.
Black box testing means external test or functional testing.
White box testing means interior test or structural testing.

d. Measure vs. indicator

e. Function-points vs. Lines of Code estimation
Both FP and LOC are units of measurement for software size. The size of a software that is subject to development is required in order to come up with accurate estimates of effort, cost and duration of a software project. Most parametric estimation models such as COCOMO accept size expressed in either FP or LOC as input. Personally i prefer functional size of software expressed as FP for one very important reason: Size expressed using the FP metric stay constant regardless of which programming language or languages are used. Since the industry has more than 700 programming languages and almost every application uses multiple languages, the consistency of FP metric allow economic studies that are not possible using LOC metric. Function points can be seen as a universal IT-currency converter, giving a synthetic measure of the size of a software. For instance, it takes about 106.7 Cobol statements to construct 1 function point of software. It takes 128 C statements for the same 1 function point.

Question) Your organization has been executing software projects using prescriptive process models. Your management wanted to shift to agile processes. Prepare a memo listing requirements and implications of the shift.

Question) Consider the software requirements for a modern bank offering savings accounts to its customers.

a.Draw use case diagram to express their requirements
b.Prepare detailed structured documentation for one of the use cases.
c.Identify the analysis classes with brief justification for the selection of each class.

Question) Consider the binary search algorithm given below:

algobinarySearch(arr, size, searchValue)
int low =0;
int high = size-1;
int mid = (low + high) /2;
int NOT_FOUND = -1;
while (low < = high &&arr[mid] != searchValue)
if (arr[mid] <searchValue) low = mid +1;
else high = mid - 1;
mid = (low + high)/2;
if (low > high) mid = NOT_FOUND;
return mid;

Answer the following questions:
a) Draw the control flow graph for the given algorithm.
b) Calculate Cyclomatic Complexity using all the three methods.
c) Find the basis set of the execution paths.

No comments:

Post a Comment