Software Engineering CIA QA
Software Engineering CIA QA
Section A
Answer any 10 questions
is the process of designing, developing, testing and maintaining software. It is a systematic and
disciplined approach to software development that aims to create high quality, reliable and
maintainable software.
2. Expand SDLC.
System (or) Software Development Life Cycle
SDLC is an approach for making software for the developer, user and customer. SDLC focus on the
initial phase to the end phase for making particular software. It generally deals with the analyser and
corresponding clients. The phases of SDLC are
Project identification
Feasibility Study
System analysis
System design
System development
System testing
System implementation
System Maintenance
System documentation
5. What is SRS.
The SRS is a specification for a specific software product, program, or set of applications that
perform particular functions in a specific environment.
6. What is Cohesion.
In software engineering, cohesion refers to the degree to which elements within a module, class, or
component are related and work together to achieve a single, well-defined purpose. High cohesion
means elements are tightly focused on a specific task, while low cohesion suggests elements are
loosely related and may be doing unrelated things.
7. Define Context Diagram.
A context diagram is a high-level, visual representation that outlines the scope of a system, showing its
interactions with external entities and illustrating data flows, often used to clarify system boundaries
and requirements early in a project.
8. Explain UML.
Unified Modeling Language (UML) is a general-purpose modeling language. The main aim of UML is
to define a standard way to visualize the way a system has been designed. It is quite similar to
blueprints used in other fields of engineering. UML is not a programming language, it is rather a visual
language.
9. What is testing.
In the context of software development, "testing" refers to the process of evaluating and verifying that a
software product or application functions as intended and meets the specified requirements.
Validation is the process of checking whether the specification captures the customer's requirements,
while verification is the process of checking that the software meets specifications.
Section B
Answer any 5 Questions
The SRS should be easy to understand, using simple language and avoiding jargon.
Complete: It should cover all aspects of the software's functionality and non-functional requirements.
Consistent: The requirements should not contradict each other, and the terminology should be used
consistently throughout the document.
Unambiguous: Each requirement should have only one possible interpretation, leaving no room for
misinterpretation.
Verifiable: Each requirement should be testable and measurable, allowing developers to determine if
the software meets the requirements.
Modifiable: The SRS should be easy to update and change as the software development process
progresses.
Traceable: Each requirement should be traceable to its source and to other related requirements,
making it easier to track changes and ensure that all requirements are met.
Feasible: The requirements should be realistic and achievable within the constraints of the project.
Prioritized: The SRS should prioritize requirements, so that the most important requirements are
addressed first.
Structured: The SRS should be well-organized, making it easy to navigate and understand.
Black-box view: The SRS should define what the system should do, not how it should do it.
16. Explain the concept of structured analysis and structure analysis tools.
Process-Oriented:
Structured analysis focuses on the processes and data flow within a system rather than the specific
implementation details.
Graphical Representation:
It uses diagrams and other graphical tools to represent the system's structure and behavior, making it
easier to understand and communicate.
Top-Down Approach:
Structured analysis typically starts with high-level overviews and then refines them into more detailed
specifications.
Systematic:
It provides a structured and organized approach to system analysis and design, ensuring a clear and
consistent methodology.
Class diagrams provide a high-level view of a system's structure, focusing on the relationships and
structure of classes, while object diagrams offer a more specific and concrete view by illustrating
instances and their relationships at runtime.
Class Diagram:
Purpose: Class diagrams are primarily used for modeling the static structure of a software system.
They depict the classes, their attributes, methods, and the relationships between classes.
Elements: Class diagrams typically include classes, interfaces, abstract classes, associations,
generalizations (inheritance), dependencies, and multiplicities.
Use Cases: Class diagrams are useful for designing the overall architecture of a system, defining the
classes and their relationships, and illustrating how different classes collaborate to achieve the
system’s functionality.
Example: In a class diagram, you might represent classes like “Car,” “Engine,” and “Wheel,”
showing their attributes and methods, as well as relationships like “Car has an Engine” and “Car has
Wheels.”
Object Diagram:
Purpose: Object diagrams, on the other hand, focus on capturing a snapshot of the runtime instances
of classes and the relationships between them at a specific moment in time. They represent a set of
objects and their associations.
Elements: Object diagrams include objects (instances of classes), links (associations between
objects), and multiplicity notations to indicate how many instances are involved.
Use Cases: Object diagrams are particularly useful for testing, debugging, and documenting specific
scenarios or instances of a system. They show how objects interact at a given point in time.
Example: In an object diagram, you might depict instances like “myCar” (an instance of the “Car”
class) with its associated instances of “Engine” and “Wheel” at a particular point in the system’s
execution.
Class diagrams provide a high-level view of a system’s structure, focusing on the relationships and
structure of classes, while object diagrams offer a more specific and concrete view by illustrating
instances and their relationships at runtime. Both diagrams are essential for understanding and
designing software systems, each serving a distinct purpose in the UML modeling process.
Black box testing evaluates software functionality from an end-user perspective without knowledge
of the internal code, while white box testing examines the internal structure, logic, and code to
identify defects.
Black Box Testing:
Focus: External behavior and functionality, focusing on inputs and outputs.
Knowledge Required: No knowledge of the internal code or structure is needed.
Testing Approach: Test cases are designed based on the software's requirements and specifications,
without understanding how the code processes them internally.
Examples: Functional testing, non-functional testing, regression testing.
Techniques: Equivalence partitioning, boundary value analysis, decision table testing, state
transition testing.
White Box Testing:
Focus: Internal structure, logic, and code of the software.
Knowledge Required: In-depth knowledge of the internal code structure and how it operates.
Testing Approach: Testers inspect the code, run it through different paths, and check if all
components (functions, methods, loops) behave correctly.
Examples: Unit testing, integration testing.
Techniques: Conditional testing, loop testing, control flow testing, data flow testing, branch testing.
Section C
Answer any 3 Questions
Software engineering emerged in the late 1960s as a distinct discipline to address the growing
complexity and challenges of software development, spurred by the "software crisis" and the need for a
more structured and reliable approach.
In the late 1960s, software projects faced increasing challenges, including delays, cost overruns, and
unreliable software. This period, known as the "software crisis," highlighted the need for a more
systematic approach to software development.
To address these issues, the term "software engineering" and the field emerged, drawing inspiration
from traditional engineering disciplines.
Early Conferences:
The first software engineering conference, sponsored by NATO in 1968, brought together experts to
discuss the problems and potential solutions for software development.
Key Goals:
The goal of software engineering was to establish a disciplined and organized approach to software
development, aiming to improve quality, reduce costs, and enhance reliability.
Today, software engineering continues to evolve, with new technologies and methodologies emerging
to address the challenges of developing complex and scalable software systems.
Formal specification in software engineering uses mathematical and logical techniques to define
system requirements and behavior precisely, aiming for clarity and unambiguousness, which is crucial
for building reliable and verifiable systems.
Here's a more detailed explanation:
Purpose:
Formal specifications aim to provide a precise and unambiguous description of what a software
system should do, rather than how it should do it.
Method:
They use formal languages (with a defined syntax and semantics) and mathematical models to
represent system requirements and behavior.
Benefits:
Clarity and Precision: Formal specifications eliminate ambiguity and vagueness, making it easier to
understand and verify the system's behavior.
Early Error Detection: Formal methods can help identify potential problems and inconsistencies in the
requirements early in the development process, which is cheaper to fix than later.
Verification and Validation: Formal specifications can be used as a basis for formal verification,
where mathematical proofs are used to demonstrate that the system meets its requirements.
Improved Reliability: By ensuring that the system's behavior is consistent with its formal
specification, formal methods can lead to more reliable and robust software.
Formal specifications are often used in the early stages of software development, during requirements
analysis and system design.
They serve as a foundation for building the system, ensuring that the implementation is consistent
with the intended behavior.
Formal Verification:
The process of proving or disproving properties of the software system against a formal specification.
Formal verification techniques can be used to demonstrate that the system meets its requirements,
ensuring its correctness and reliability.
Coupling refers to the degree of interdependence between software modules. High coupling means
that modules are closely connected and changes in one module may affect other modules. Low
coupling means that modules are independent, and changes in one module have little impact on other
modules.
Types of Coupling
Following are the types of Coupling:
Data Coupling
Stamp Coupling
Control Coupling
External Coupling
Common Coupling
Content Coupling
Focus Cohesion represents the functional Coupling represents the independence among
strength of modules. modules.
Relationship Highly cohesive gives the best Whereas loosely coupling gives the best
software. software.
Example In cohesion, the module focuses on In coupling, modules are connected to the other
a single thing. modules.
Aspect Cohesion Coupling
Creation Cohesion is created between the Coupling is created between two different
same module. modules.
A Use Case Diagram is a type of Unified Modeling Language (UML) diagram that represents the
interaction between actors (users or external systems) and a system under consideration to accomplish
specific goals. It provides a high-level view of the system's functionality by illustrating the various ways
users can interact with it.
24. Explain different types of testing.