You are on page 1of 13

Question 1.

Attempt any FOUR

1. What are advantages and disadvantages of prototyping model?

The prototyping model is a software development model that involves building, testing, and
reworking a prototype of the software until it meets the customer's requirements and
expectations.
A prototype is a working version of the software that demonstrates its functionality and features,
but may not have the full quality and performance of the final product.

● The prototyping model is suitable for projects where the requirements are unclear,
complex, or changing, and where the customer needs to see and evaluate the software
before accepting it.
● The prototyping model follows a cycle of requirement gathering and analysis, quick
design, prototype building, user evaluation, and prototype refinement until a satisfactory
prototype is achieved.
- The prototyping model has several advantages, such as reducing the risk of
misunderstanding the user requirements, increasing user involvement and feedback,
supporting early product marketing, and detecting errors earlier.
- The prototyping model also has some disadvantages, such as creating unrealistic
expectations from the customer, requiring extensive customer collaboration, being too
customer-specific and not market-oriented, and being difficult to manage and document.

There are different types of prototyping models, such as rapid throwaway prototyping,
evolutionary prototyping, incremental prototyping, and extreme prototyping, depending on the
purpose and scope of the prototype.
2. Briefly explain software design concept refactoring and its types.

Refactoring is the process of improving the internal structure and quality of software design
without changing its external behavior or functionality
Refactoring helps to make the code more readable, maintainable, efficient, and consistent

Types of refactoring:

● Code refactoring: modifying the source code to improve readability, maintainability,


performance, etc. For example, extracting a method from a long or complex function, or
inlining a variable that is only used once.

● Data refactoring: modifying the data structures and schemas to improve efficiency,
consistency, integrity, etc. For example, changing a reference to a value, or changing a
value to a reference, or encapsulating a collection.

● Architecture refactoring: modifying the high-level design and architecture to improve


modularity, scalability, reliability, etc. For example, collapsing a hierarchy, or combining
functions into a class, or introducing a special case.

3. What is cyclomatic Complexity? Which are the different methods of computing it?

Cyclomatic complexity is a metric that measures the complexity of a software module or system
based on the number of linearly independent paths through its control flow graph

Methods of computing cyclomatic complexity:

● Using the formula: C = E - N + 2 where C is the cyclomatic complexity, E is the number


of edges, N is the number of nodes

● Using the number of decision points: C = P + 1 where C is the cyclomatic complexity and
P is the number of decision points (such as if, while, for, case, etc.) in the module

● Using the number of regions: C = R where C is the cyclomatic complexity and R is the
number of regions (enclosed areas) in the control flow graph
4. Define software engineering. Explain in brief the software process framework

Software engineering is the application of engineering principles and practices to the


development, operation, and maintenance of software systems
Software process framework is a set of activities, tasks, roles, and artifacts that guide and
support the software engineering process

The software process framework includes five key activities:

● Communication: Gathering customer requirements and stakeholders' input to


understand system objectives and software needs.
● Planning: Creating an engineering work plan, identifying technical risks, specifying
resource requirements, and setting project schedules.
● Modeling: Developing architectural models and designs based on requirements analysis
and design phases to find the best solution.
● Construction: Writing code, testing the system, fixing issues, and ensuring all
requirements are met through code generation and testing.
● Deployment: Presenting the product or software to customers for evaluation and
feedback, enabling modifications for better products based on their input.

Each of these activities outlines necessary work outputs, project milestones, and points for
software quality assurance (SQA).

5. Define Software Engineering. Describe in brief Umbrella activities of software


development.

Software engineering is the application of engineering principles and practices to the


development, operation, and maintenance of software systems
Umbrella activities of software development are the common activities that are applicable across
different software process models and phases, such as:

● Project management involves planning, organizing, directing, and controlling software


projects to ensure their successful execution.
● Software configuration management identifies, tracks, and controls changes made to
software artifacts throughout the development process.
● Software quality assurance ensures that software meets specified requirements and
adheres to predefined standards, maintaining its overall quality.
● Software verification and validation entail checking whether the software aligns with
its specifications (verification) and fulfills the user's needs (validation).
● Software measurement and metrics involve collecting, analyzing, and reporting data
related to the software process and product to assess performance and progress.
6. Explain functional and non-functional requirements with examples?

Functional requirements are the requirements that specify what the software system should do,
i.e., the functions, features, and behaviors of the system
Non-functional requirements are the requirements that specify how the software system should
do it, i.e., the quality attributes, constraints, and standards of the system

● Examples of functional requirements:


- The system should allow users to register and login with their email and password
- The system should display the current weather and forecast for the selected location
- The system should generate invoices and receipts for the completed transactions

● Examples of non-functional requirements:


- The system should have a response time of less than 2 seconds for 95% of the requests
- The system should have a reliability of 99.9% and a availability of 99.5%
- The system should comply with the GDPR and ISO 27001 standards

7. Functional independence of a software design is assessed using which two criteria?


highlight the differences between both.

Functional independence of a software design is assessed using two criteria: cohesion and
coupling
● Cohesion is the degree to which the elements of a module belong together and perform
a single task
● Coupling is the degree to which a module depends on other modules or external
components

- The difference between cohesion and coupling is that cohesion measures the internal
strength of a module, while coupling measures the external dependency of a module
- A good software design should have high cohesion and low coupling, which means that
the modules are well-defined, self-contained, and loosely connected

8. What are stubs and drivers? How are they different from each other?

Stubs and drivers are the dummy modules that are used to simulate the behavior of the missing
or incomplete modules during the software testing process

● Stubs are the modules that act as the temporary substitutes for the called modules, i.e.,
the modules that are invoked by the module under test
● Drivers are the modules that act as the temporary substitutes for the calling modules,
i.e., the modules that invoke the module under test

- The difference between stubs and drivers is that stubs are used for the top-down testing
approach, while drivers are used for the bottom-up testing approach
9. Differentiate between white box and black box testing.

White box testing and black box testing are the two types of software testing techniques that are
based on the level of knowledge of the internal structure and implementation of the software
system

● White box testing is the testing technique that uses the knowledge of the internal
structure and implementation of the software system to design and execute the test
cases
● Black box testing is the testing technique that uses the knowledge of the external
functionality and requirements of the software system to design and execute the test
cases

The difference between white box and black box testing are as follows:

- White box testing involves examining the internal structure of software and is
conducted by developers or testers who have access to the source code.
- It focuses on detecting logic, syntax, and design errors within the system, ensuring
comprehensive code coverage by measuring the code executed by test cases.
- Black box testing does not require knowledge of the internal structure and is performed
by testers or users without access to the source code.
- It aims to uncover functionality, usability, and performance errors without measuring the
code coverage, also known as functional, behavioral, or opaque testing.

White box testing is sometimes referred to as structural, glass box, or clear box testing, while
black box testing is often termed functional, behavioral, or opaque testing.

10. Explain size-oriented software engineering Metrics.

Size-oriented software engineering metrics are the metrics that are based on the size of the
software product or the amount of effort required to produce it
Size-oriented software engineering metrics are used to measure the productivity, quality, and
complexity of the software product or process

Size-oriented software engineering metrics can be classified into two categories: direct and
indirect

● Direct size-oriented software engineering metrics are the metrics that measure the size
of the software product directly, such as lines of code (LOC), function points (FP), or
object points (OP)

● Indirect size-oriented software engineering metrics are the metrics that measure the size
of the software product indirectly, such as Halstead's metrics, cyclomatic complexity, or
information flow metrics
Question 2. Attempt any three questions out of five

11. Explain RAD process model in detail.

RAD stands for Rapid Application Development, which is a software development process
model that emphasizes fast and iterative delivery of software products

RAD process model consists of four phases:


● Requirements planning: the phase where the project scope, objectives, constraints, and
risks are defined and agreed upon by the stakeholders
● User design: the phase where the user requirements are elicited and analyzed, and the
prototypes of the user interface and functionality are developed and validated by the
users
● Construction: the phase where the software components are built or reused, integrated,
and tested using automated tools and techniques
● Cutover: the phase where the software product is deployed, reviewed, and maintained in
the operational environment

- RAD process model is suitable for projects that have clear and well-defined
requirements, low technical cpmplexity, and tight deadlines¹

12. Explain User interface design Process with an example.

User interface design process is the process of designing the graphical, textual, and auditory
elements that enable the user to interact with the software system
User interface design process consists of four steps:
● User analysis: the step where the user characteristics, needs, preferences, and
expectations are identified and understood
● Task analysis: the step where the user goals, tasks, subtasks, and scenarios are defined
and structured
● Interface design: the step where the layout, navigation, controls, feedback, and
aesthetics of the user interface are designed and prototyped
● Interface evaluation: the step where the user interface is tested and evaluated for
usability, functionality, and user satisfaction

An example of user interface design process is as follows:

- User Analysis: Target users are college students seeking online programming education.
- Task Analysis: User goals involve enrolling, watching lectures, coding practice, and
taking quizzes/exams.
- Interface Design: Components include homepage, course catalog, course page, video
player, code editor, and quiz page.
- Interface Evaluation: Testing via usability tests, heuristic evaluations, and user surveys
ensures the effectiveness of the user interface.
13. Explain any two requirement models using suitable example

Requirement models are the graphical or textual representations of the user and system
requirements that facilitate the analysis, communication, and validation of the requirements

Two examples of requirement models are:

● Use case model: a requirement model that describes the interactions between the
system and the external actors (users or other systems) in terms of use cases, which are
the sequences of actions that achieve a specific goal

- Example: a use case model for an online shopping portal can include the following use
cases: browse products, search products, view product details, add product to cart,
update cart, checkout, make payment, etc.

● Data flow diagram: a requirement model that shows the flow of data and the processes
that transform the data in the system

- Example: a data flow diagram for an online shopping portal can include the following
processes and data flows: product catalog, product details, shopping cart, order,
payment, confirmation, etc.

14. Explain COCOMO 2 cost estimation model in detail

COCOMO 2 stands for Constructive Cost Model 2, which is a software cost estimation model
that estimates the effort, duration, and size of a software project based on various factors such
as the project characteristics, the development environment, and the personnel capability

COCOMO 2 consists of three submodels:


● Application composition model: a submodel that estimates the effort and size of a
software project based on the number of object points, which are the units of
functionality that are composed using graphical user interface tools or code generators
● Early design model: a submodel that estimates the effort and size of a software project
based on the number of function points, which are the units of functionality that are
derived from the user requirements
● Post-architecture model: a submodel that estimates the effort and size of a software
project based on the number of source lines of code, which are the units of functionality
that are implemented using a programming language

COCOMO 2 uses the following formula to calculate the effort in person-months:


- Effort = A * Size^E * EM
- where A is a constant, Size is the estimated size of the project in object points, function
points, or source lines of code, E is an exponent that depends on the submodel, and EM
is an effort multiplier that reflects the influence of various cost drivers
15. Explain LOC and FP based cost estimation model in detail

LOC stands for Lines of Code, which is a metric that measures the size of a software product
based on the number of source lines of code
FP stands for Function Points, which is a metric that measures the size of a software product
based on the number of user functions or features

● LOC and FP based cost estimation models are the models that estimate the cost of a
software project based on the size of the software product in LOC or FP
● LOC and FP based cost estimation models use the following formula to calculate the
cost in dollars:
- Cost = A * Size^B * M
- where A is a constant, Size is the estimated size of the software product in LOC or FP, B
is an exponent that reflects the economy or diseconomy of scale, and M is a multiplier
that reflects the influence of various cost drivers

LOC and FP based cost estimation models have some advantages and disadvantages, such
as:
- Advantages:
- Easy and simple to use and understand
- Based on historical data and empirical evidence
- Widely accepted and standardized

- Disadvantages:
- Sensitive to the definition and measurement of LOC and FP
- Affected by the programming language, technology, and quality of the software product
- Not suitable for agile and iterative development methods

16. Discuss in detail about software risk and its types. Elaborate steps involved in
generating RMMM plan.

Software risk is the possibility of a negative or undesirable outcome due to uncertainty or


variability in the software project
Software risk management is the process of identifying, analyzing, prioritizing, and mitigating
software risks to reduce their impact and likelihood.

Software risks can be classified into three main categories:


● Project risks are related to budget, schedule, personnel, resource, and customer issues
that may affect the project’s success.
● Technical risks are related to system, implementation, interfacing, testing, and
maintenance issues that may affect the software’s quality and functionality.
● Business risks are related to market, competition, legal, and strategic issues that may
affect the software’s viability and profitability.
RMMM stands for Risk Mitigation, Monitoring, and Management, which is a plan that describes
the strategies and actions for dealing with the software risks

The steps involved in generating an RMMM are:

● Risk Identification: Identify and categorize potential risks using techniques like
brainstorming, checklists, questionnaires, etc.
● Risk Analysis: Estimate and prioritize the probability and impact of each risk using
methods such as risk matrices, risk exposure, risk ranking, etc.
● Risk Mitigation: Plan and implement preventive and corrective measures to reduce or
eliminate risks using techniques like risk avoidance, reduction, transfer, acceptance, etc.
● Risk Monitoring: Track and report the status and outcome of risks and mitigation actions
using methods such as risk indicators, audits, reviews, etc.
● Risk Management: Control and improve the overall risk management process through
techniques like risk policies, standards, guidelines, etc.

17. Discuss in detail about Spiral model. In which kind of situation spiral model should be
useful?

Spiral model is a software development process model that combines the features of the
waterfall model and the prototyping model, and incorporates the risk management and iterative
development aspects

Spiral model consists of four quadrants:

● Planning: the quadrant where the objectives, alternatives, and constraints of the
software project are defined and analyzed
● Risk analysis: the quadrant where the potential risks of the software project are
identified, assessed, and mitigated
● Engineering: the quadrant where the software product is developed, tested, and verified
● Evaluation: the quadrant where the software product is reviewed and evaluated by the
stakeholders and feedback is obtained

Spiral model is useful for the software projects that have:


- High complexity and uncertainty
- High risk and cost
- Dynamic and evolving requirement
- Long-term and large-scale scope
18. Explain McCall's quality factor's. Explain SQA Activities.

McCall's quality factors are a set of 11 attributes that define the quality of a software product
from three perspectives: product operation, product revision, and product transition

McCall's quality factors are:

● Correctness: the degree to which the software product meets the specified requirements
and performs the intended functions
● Reliability: the degree to which the software product performs consistently and
accurately under normal and abnormal conditions
● Efficiency: the degree to which the software product utilizes the minimum amount of
resources and time to perform the required functions
● Integrity: the degree to which the software product protects itself and its data from
unauthorized access and modification
● Usability: the degree to which the software product is easy to learn, use, and understand
by the users
● Maintainability: the degree to which the software product can be modified and corrected
easily and cost-effectively
● Flexibility: the degree to which the software product can be adapted and extended to
accommodate new or changing requirements
● Testability: the degree to which the software product can be tested and verified
effectively and efficiently
● Portability: the degree to which the software product can be transferred and operated on
different platforms and environments
● Reusability: the degree to which the software product or its components can be reused
in other software products or projects
● Interoperability: the degree to which the software product can interact and exchange
data with other software products or systems

SQA stands for Software Quality Assurance, which is the process of ensuring that the software
products and processes meet the specified requirements and standards

SQA activities are:

- Software quality planning: the activity of defining the quality objectives, criteria, and
measures for the software products and processes
- Software quality control: the activity of checking and measuring the quality of the software
products and processes against the quality standards and specifications
- Software quality improvement: the activity of identifying and implementing the actions for
enhancing the quality of the software products and processes
- Software quality audit: the activity of conducting an independent and objective assessment
of the software products and processes to verify the compliance with the quality standards and
regulations
19. Explain Software Design concept in detail

Software design is the process of defining the architecture, components, interfaces, and
behavior of a software system that satisfies the user and system requirements

Software design concept involves the following aspects:

● Abstraction: the concept of hiding the unnecessary details and focusing on the essential
features of a software system
● Modularity: the concept of dividing a software system into smaller and independent units
or modules that can be developed, tested, and maintained separately

- Cohesion: the concept of measuring the degree to which the elements of a module
belong together and perform a single task
- Coupling: the concept of measuring the degree to which a module depends on other
modules or external components

● Decomposition: the concept of breaking down a complex software system into simpler
and manageable sub-systems or components
● Composition: the concept of combining the sub-systems or components into a coherent
and integrated software system

- Design principles: the guidelines and best practices that help to achieve a good software
design, such as simplicity, clarity, consistency, generality, etc.
- Design patterns: the reusable and proven solutions for common software design
problems, such as creational, structural, and behavioral patterns
- Design models: the graphical or textual representations of the software design that
facilitate the communication, analysis, and validation of the design, such as UML
diagrams, data flow diagrams, etc.

21. What is FTR in SQA? What are its objectives? Explain the steps in FTR

FTR stands for Formal Technical Review, which is a software quality assurance activity that
involves a structured and systematic examination of a software artifact by a team of qualified
reviewers

● The objectives of FTR are:

- To find and fix the defects in the software artifact


- To improve the quality and reliability of the software artifact
- To verify the compliance of the software artifact with the standards and specifications
- To assess the feasibility and suitability of the software artifact
- To provide feedback and suggestions for the improvement of the software artifact
● The steps in FTR are:

- Planning: the step where the FTR team, agenda, date, and location are decided
- Preparation: the step where the FTR team members study and analyze the software
artifact and prepare the review materials and questions
- Review: the step where the FTR team members meet and discuss the software artifact
and identify the issues and recommendations
- Rework: the step where the software artifact is modified and corrected based on the
review findings and feedback
- Follow-up: the step where the FTR team members verify and validate the reworked
software artifact and close the review process

20. Explain in detail about PERT technique. Mention advantages and disadvantages of
PERT. Comment on how it is different from Gantt chart.

PERT stands for Program Evaluation and Review Technique, which is a project management
technique that uses a network diagram to represent the activities, dependencies, and durations
of a project.

PERT technique involves the following steps:


● Identify tasks & dependencies by determining project tasks and their relationships or
dependencies to establish a structured workflow.
● Create a network diagram using nodes and arrows to visually represent task sequences,
aiding in understanding project flow.
● Estimate task durations by assessing optimistic, most likely, and pessimistic durations for
each task to gauge time expectations.
● Calculate expected duration & variance through formulas
(E = (O + 4M + P) / 6, V = ((P - O) / 6)^2) to determine average duration and variability.
● Determine task timings by computing earliest start, earliest finish, latest start, and latest
finish times using forward and backward pass methods for scheduling precision.

Advantages of PERT technique:


Efficiently plans, schedules, and coordinates complex projects; identifies critical activities,
directing focus and resources.
Accurately estimates project completion time, assesses impact of changes/risks on outcomes
effectively.

Disadvantages of PERT technique:


Time-consuming data collection for network diagrams; reliant on subjective task estimates.
Lacks representation of resource allocation, progress, and status for project tasks visually.

PERT technique uses a network diagram to display task sequences and relationships, ideal for
complex and uncertain projects. In contrast, a Gantt chart employs a bar chart to illustrate task
durations and dates, better suited for simpler, less uncertain projects.
21. How does Scrum framework implement agility in software engineering? Explain the
agility principles and the Scrum process model with a suitable diagram.

Scrum framework implements agility in software engineering by following the agile principles
and practices that enable the software teams to deliver valuable and high-quality products in an
iterative and incremental manner. Some of the agility principles and the Scrum process model
are:

● Customer satisfaction is prioritized by delivering frequent working software with


continuous feedback and collaboration to meet their needs.

● Scrum embraces change by adapting to evolving requirements through short,


time-boxed iterations, adjusting backlogs even in late development.

● Delivering value is ensured by organizing backlog items based on business value,


prioritizing the most beneficial features in each sprint.

● Scrum empowers teams to self-organize, make decisions, and work autonomously,


providing necessary resources and support.

● Collaboration and communication thrive in Scrum through events like daily scrum,
sprint review, and product backlog, encouraging teamwork and iterative improvement via
empirical methods.

You might also like