Sei sulla pagina 1di 16

Software Engineering

Assignment

Simranjeet Singh
Question: Define CMMI Model. Explain the need for the model.

Answer: Capability maturity model integration (CMMI) is an approach or methodology for


improving and refining the software development process within an organization. It is based on a
process model or a structured collection of practices.

CMMI is used to guide the improvement process across a project, division or even an entire
organizational structure. It also allows companies to integrate organizational functions that are
traditionally separate, set goals for process improvements and priorities, provide guidance for
quality processes, and act as a point of reference for appraising processes.

Question: What is the use of Testing phase in Software Development? What are the different
parameters of evaluating regression test selection techniques?

Answer: The testing phase of the software development lifecycle (SDLC) is where you focus on
investigation and discovery. During the testing phase, developers find out whether their code and
programming work according to customer requirements. And while it's not possible to solve all
the failures you might find during the testing phase, it is possible to use the results from this
phase to reduce the number of errors within the software program.

Before testing can begin, the project team develops a test plan. The test plan includes the types of
testing you'll be using, resources for testing, how the software will be tested, who should be the
testers during each phase, and test scripts, which are instructions each tester uses to test the
software. Test scripts ensure consistency while testing.

The parameters which form the basis of comparison and evaluation of the selection techniques
are as follows:

 Inclusiveness: Analyses the extent to which a test case selection will cause the modified
program to produce different output other than the original. Helps to capture faults caused
as a result of modifications.

 Precision: Those test cases are not selected that won't produce a different output than the
original one.
 Efficiency: Calculates the cost of computing and practicality of adopting a technique.

 Generality: Ability of a technique to handle varied language constructs, complex changes


in the system.

Question: What is test maturity model? It is complementary to Capability maturity model.


Discuss.

Answer: When a software is tested, there are so many processes which are followed in order to
attain maximum quality and minimizing defects or errors. Test Maturity Model is one of such
model which has a set of structured levels. TMM is now replaced by Test Maturity Model
Integration(TMMI) is a 5 level model which provides a framework to measure the maturity of
the testing processes. In other words, the main aim of this model is to optimize the testing
processes.

1. Initialization: This is the first level of TMM. In this level, there is no defined testing process.
There will be exploratory or ad-hoc testing carried out on the software. The main aim of this
level is to make sure that the software is running fine and there are no roadblocks. There are
no quality checks before delivering the product.
2. Definition: As name suggests, this level is all about defining the requirements. In this second
level of TMM, test strategies, test plans and test cases are developed according to the
requirements given by the client to build a software. The main aim of this level is to make
sure that the product runs according to the requirements and to achieve that test cases and test
plan documents are created and followed religiously.
3. Integration: This is the third level of TMM. As name suggests, in this level testing is
integrated with the software life cycle and becomes a part of it. For example, V model has
both development and testing phases. Testing comes after the development is over and the
software under test is handed over to the professional testing team. Testing is carried out
independently. The whole testing objectives are based on the risk management.
4. Management and Measurement: Managing and measuring the requirements are taken care
in this level of TMM. This is the fourth level where testing becomes the part of all the
activities in software life cycle. From reviewing the gathered requirements and design of the
software to deciding the quality criteria, is included. This builds a clearer picture for the
organization which in turn helps them to achieve the required quality.
5. Optimization: This is the last level of TMM. The fifth level is responsible for optimizing the
test process itself. In other words, testing processes are tested and measures are taken to
improve them iteration by iteration.This testing is mainly carried out by the help of different
tools. Also, in this level defects are prevented by improving the processes throughout the
software life cycle so main focus is defect prevention rather than defect detection in each
phase.

Test Maturity Model (TMM) is fairly a new concept compared to Compatibility Maturity Model
(CMM) but the main goal of both models remains the same i.e. to show us how a structured set
of levels leads to high quality expected output by optimizing the processes, behaviors and
practices of an organization. These models can be generalized according to the business and can
be applied for the enhanced results. I am sure in coming years; most of the software
organizations would start opting for TMM for software testing as its benefits start reaping
results.

Question: Differentiate between all SDLC models.

Answer:

1. Waterfall model:

This is one of the simplest, classic life-cycle models, also known as the 'linear-sequential'
life cycle model. In a waterfall model, each phase must be completed before moving onto
the next. A review process is scheduled at the end of each phase to check that the project
is on the right track. The steps are as follows:

1. Requirements

2. Plan
3. Design

4. Build & Unit Test

5. Integration & System Testing

6. Maintenance

Advantages of the waterfall model

1. Simple to understand and use.


2. Each phase is independent of other phases and is processed and completed separately.
3. Suitable for smaller projects, and for projects where the requirements are clearly outlined.

Disadvantages of the waterfall model

1. No output or working software is produced until late in the life cycle.


2. High degree of uncertainty and risks.
3. Not a good choice for big or ongoing projects.

2. Iterative Model:

The Iterative model can be thought of as a “multi-waterfall” cycle. Cycles are divided into
smaller and easily managed iterations. Each iteration passes through a series of phases, so after
each cycle you will get working software.

1. Cycle will be:

1.1 Requirements
1.2. Plan

1.3. Design

1.4. Build & Unit Test

1.5. Integration & System Testing

2. Maintenance

Advantages of the iterative model

1. Produces working software early during the lifecycle.


2. More flexible as scope and requirement changes can be implemented at low cost.
3. Testing and debugging is easier, as the iterations are small.
4. Low risks factors as the risks can be identified and resolved during each iteration.

Disadvantages of the iterative model

1. This model has phases that are very rigid and do not overlap.
2. Not all the requirements are gathered before starting the development; this could lead to
problems related to system architecture at later iterations.

3. Spiral Model:

The spiral model is similar to the iterative model, but places more emphasis on risk analysis. The
steps involved in this model can be generalised as follows:

System requirements are defined in as much detail as possible by involving various users, so as
identify the various aspects of the system.

A preliminary design of the system is created. This is the most crucial step in the spiral model, as
it helps in developing cost-effective strategies for working on a project.
Using the preliminary design, a prototype for the new system is developed. This is generally a
scaled down system, which represents an approximate characteristics of the final output.

Consecutive prototypes are then evolved through a fourfold procedure

1. Strengths, weaknesses and risks of the previous prototype are evaluated

2. Requirements for the new prototype are defined

3. Planning and design of the new prototype begins

4. Developing and testing the new prototype are carried out

Advantages of the spiral model

1. Good for large and critical projects


2. Working software is produced early during the lifecycle.
3. Large amount of risk analysis.

Disadvantages of the spiral model

1. Involves higher cost.


2. Not suitable for smaller projects.
3. Project success depends on the risk analysis phase - hence, it requires highly specific expertise in
risk analysis.

4. Prototype model:
The prototype model is used to overcome the limitations of waterfall model. In this model,
instead of freezing the requirements before coding or design, a prototype is built to clearly
understand the requirements. This prototype is built based on the current requirements. Through
examining this prototype, the client gets a better understanding of the features of the final
product.

Advantages of the prototype model

1. Benefits from user input.


2. As a working model of the system is provided, users get a better understanding of the system that
is being developed.
3. Errors and risks can be detected at a much earlier stage, as the system is developed using
prototypes.
Disadvantages of the prototype

1. Increases complexity of the overall system.


2. Involves exploratory methodology and therefore involves higher risk.
3. Involves implementing and then repairing the way a system is built, so errors are an inherent part
of the development process.

4. V-shaped model:

V-shaped SDLC model is an expansion of classic waterfall model and it’s based on associated
test stage for the every development stage. This is a very strict model and the next stage is started
only after the previous phase. This is also called “Validation and verification” model. Every
stage has the current process control, to make sure that the conversion to the next stage is
possible.

Advantages:-
1. Every stage of V-shaped model has strict results so it’s easy to control
2. Good for the small projects, where requirements are static and clear

Dis-advantages:

1. Lack of the flexibility


2. Relatively big risks

5. Agile model:

In the agile methodology after every development iteration, the customer is able to see the result
and understand if he is satisfied with it or he is not. This is one of the advantages of the agile
software development life cycle model. One of its disadvantages is that with the absence of
defined requirements it is difficult to estimate the resources and development cost. Extreme
programming is one of the practical use of the agile model. The basis of such model consists of
short weekly meetings – Sprints which are the part of the Scrum approach.

Advantages:-
1. Corrections of functional requirements are implemented into the development process to
provide the competitiveness.
2. Risks are minimized thanks to the flexible change process.

Dis-advantages:-
1. Difficulties with measuring the final cost because of permanent changes.
2. New requirements may conflict with the existing architecture.
Question: What are the different states of prototype model? What is the effect of designing a
prototype on the overall cost f the software project. Under what circumstances is it beneficial to
construct a prototype?

Answer: 1. Requirements gathering and analysis: A prototyping model begins with requirements
analysis and the requirements of the system are defined in detail. The user is interviewed in order
to know the requirements of the system.

2. Quick design: When requirements are known, a preliminary design or quick design for the
system is created. It is not a detailed design and includes only the important aspects of the
system, which gives an idea of the system to the user. A quick design helps in developing the
prototype.

3. Build prototype: Information gathered from quick design is modified to form the first
prototype, which represents the working model of the required system.

4. User evaluation: Next, the proposed system is presented to the user for thorough evaluation of
the prototype to recognize its strengths and weaknesses such as what is to be added or removed.
Comments and suggestions are collected from the users and provided to the developer.

5. Refining prototype: Once the user evaluates the prototype and if he is not satisfied, the current
prototype is refined according to the requirements. That is, a new prototype is developed with the
additional information provided by the user. The new prototype is evaluated just like the
previous prototype. This process continues until all the requirements specified by the user are
met. Once the user is satisfied with the developed prototype, a final system is developed on the
basis of the final prototype.

6. Engineer product: Once the requirements are completely met, the user accepts the final
prototype. The final system is evaluated thoroughly followed by the routine maintenance on
regular basis for preventing large-scale failures and minimizing downtime.

The development of a prototype might involve extra cost, but overall cost might turnout to be
lower than that of an equivalent system developed using the waterfall model.
 Prototype model should be used when the desired system needs to have a lot of
interaction with the end users.
 Typically, online systems, web interfaces have a very high amount of interaction with
end users, are best suited for Prototype model. It might take a while for a system to be
built that allows ease of use and needs minimal training for the end user.
 Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system. They are
excellent for designing good human computer interface systems.

Question: Write a short note on software quality assurance. How many product quality factors
are defined?

Answer:

SQA is a concept that spans across the entire software development process. It focuses on
improving the process of development of software so that problems can be prevented before they
become a major issue. SQA also involves continuous monitoring of the process and making sure
those agreed-upon standards and procedures are followed all along in the development process. It
is the process of providing adequate assurance (to clients, senior management and other
stakeholders) on (quality of) the process followed in the development of software (so that all
concerned are satisfied about the fact that the plans laid out for development have been adhered
to and that the software as developed conforms to specifications).

 This model classifies all software requirements into 11 software quality factors. The 11
factors are grouped into three categories – product operation, product revision, and
product transition factors.
 Product operation factors − Correctness, Reliability, Efficiency, Integrity, Usability.

 Product revision factors − Maintainability, Flexibility, Testability.

 Product transition factors − Portability, Reusability, Interoperability.

Question: What is meant by the term Modularity in the context of software design? Why
modularity is considered desirable?

Answer:

Modularization is a technique to divide a software system into multiple discrete and


independent modules, which are expected to be capable of carrying out task(s) independently.
These modules may work as basic constructs for the entire software. Designers tend to design
modules such that they can be executed and/or compiled separately and independently.

Modular design unintentionally follows the rules of ‘divide and conquer’ problem-solving
strategy this is because there are many other benefits attached with the modular design of
software.

Advantage of modularization:

 Smaller components are easier to maintain

 Program can be divided based on functional aspects

 Desired level of abstraction can be brought in the program

 Components with high cohesion can be re-used again

 Concurrent execution can be made possible

 Desired from security aspect

Question: What is reverse Engineering? Explain the different activities undertaken by reverse
Engineering.
Answer: Software Reverse Engineering is a process of recovering the design, requirement
specifications and functions of a product from an analysis of its code. It builds a program
database and generates information from this.
The purpose of reverse engineering is to facilitate the maintenance work by improving the
understandability of a system and to produce the necessary documents for a legacy system.

Activites undertaken are:

1. Collection Information:
This step focuses on collecting all possible information (i.e., source design documents etc.)
about the software.
2. Examining the information:
The information collected in step-1 as studied so as to get familiar with the system.
3. Extracting the structure:
This step concerns with identification of program structure in the form of structure chart
where each node corresponds to some routine.
4. Recording the functionality:
During this step processing details of each module of the structure, charts are recorded
using structured language like decision table, etc.
5. Recording data flow:
From the information extracted in step-3 and step-4, set of data flow diagrams are derived
to show the flow of data among the processes.
6. Recording control flow:
High level control structure of the software is recorded.
7. Review extracted design:
Design document extracted is reviewed several times to ensure consistency and
correctness. It also ensures that the design represents the program.
8. Generate documentation:
Finally, in this step, the complete documentation including SRS, design document, history,
overview, etc. are recorded for future use.
Question: What do you mean by cohesion and coupling criteria that address it’s fuctional
dependencies? Explain it with examples.

Answer:

Coupling is defined as the degree of interdependence between two or more classes, modules, or
components. Tight coupling is bad, and loose coupling is good. This will make more sense
with an example.
Let’s say we have a clinical research application that contains a patient information collection
form. On this form is a field for the SSN. Whenever a patient enrolls in a study, the form checks
the SNN to see whether: 1) it is a valid SSN (i.e., fits the pattern 000-00-0000), and 2) the patient
has been a subject in prior studies. In the current version of the application, when the cursor
leaves the SSN field, the following procedure runs.

Procedure SSN Check


Begin
If is_Number(Left_Three_Chars)
Then
Result=0
Else
Result =1
If is_Number(Middle_Two_Chars)
Then
Result=0
Else
Result =1
If is_Number(Right_Three_Chars)
Then
Result=0
Else
Result =1
If Result=0
Then
Count = “SELECT SSN
FROM patients
WHERE SocNum=SSN”
Else
Print “This is not a valid SSN”
End

Cohesion is defined as the degree to which all elements of a module, class, or component work
together as a functional unit. High cohesion is good, and low cohesion is bad. The ideal situation
is one where a module, class, or component provides only one function or, at most, a very
closely related set of functions. Looking at the above procedure, we see that it performs two
functions. It validates SSNs, and it performs a database query. These are completely unrelated
actions and, thus, the procedure exhibits low cohesion.

Here is the SSN Check procedure after Validation and Data Access modules have been created.
Procedure SSN Check
Begin
Result =Validate (SSN)
If Result=0
Then
Count=Database_look_up(SSN)
Else
Print “This is not a valid SSN”
End

Question: Compare and Contrast CMM and ISO 9001.


Answer: The fundamental difference between CMMI vs ISO is conceptual. CMMI is a process
model and ISO is an audit standard.

CMMI is a set of related “best practices” derived from industry leaders and relates to product
engineering and software development. Businesses receive CMMI ratings from Level 1 to Level
5 depending upon the extent of compliance to key performance areas specified in the selected
CMMI process area.

ISO is a certification tool that certifies businesses whose processes conform to the laid down
standards.

Agile methods are adaptive rather than predictive. Engineering methods tend to try to plan out a
large part of the software process in great detail for a long span of time, this works well until
things change. So their nature is to resist change. The agile methods, however, welcome change.
They try to be processes that adapt and thrive on change, even to the point of changing
themselves.

Potrebbero piacerti anche