Professional Documents
Culture Documents
ANS:
Abstraction level: OOA metrics are designed to evaluate the abstraction level of
a software system. This means that they focus on how well the software system
is designed to represent real-world objects and concepts, and how well it
abstracts away the details that are not relevant to the system's purpose. For
example, metrics such as coupling and cohesion can be used to evaluate how
well a system is designed to encapsulate its data and functionality, and how well
it separates concerns between different objects.
Structural and behavioral analysis: OOA metrics can be used to analyze both
the structure and behavior of a software system. Structural analysis focuses on
the relationships between objects, such as coupling, cohesion, and inheritance.
Behavioral analysis focuses on how objects interact with each other, such as
through message passing and method calls. Metrics such as cyclomatic
complexity and code coverage can be used to evaluate the behavior of a system.
Tool support: OOA metrics are often supported by software tools that can
automatically analyze a software system and generate reports on its quality.
These tools can be used to identify potential design flaws and code smells, and
to suggest improvements that can make the system more modular, maintainable,
and reusable. For example, tools such as SonarQube and CodeClimate can be
used to analyze code quality using various OOA metrics.
5)Write a short note on coupling and cohesion.
ANS:Coupling and cohesion are two important concepts in software engineering
that describe the degree to which the components of a software system are
interconnected and how well they work together.
Cohesion, on the other hand, refers to the degree to which the components
within a module or class work together to achieve a single, well-defined purpose.
High cohesion means that the components are closely related and work together
to achieve a common goal, while low cohesion means that the components are
loosely related and may not work well together. High cohesion is generally
desirable as it leads to better maintainability, reusability, and ease of
understanding the system.
6)Give the difference between Function Oriented Design & Object Oriented
Design
ANS:
Function-oriented design (FOD) and Object-oriented design (OOD) are two
approaches to software design. Here are the key differences between them:
Focus:
FOD focuses on functions and procedures that are designed to perform specific
tasks. On the other hand, OOD focuses on objects and their interactions with
each other.
Data handling:
In FOD, data is passed between functions and modules as parameters, whereas
in OOD, data is encapsulated within objects, and objects communicate with each
other through methods.
Reusability:
FOD modules are typically designed to perform specific tasks and are often not
reusable in other parts of the application. In contrast, OOD encourages reuse of
objects and their functionality across different parts of the application.
Maintenance:
In FOD, changes to a function or module can potentially affect other parts of the
application, making maintenance challenging. OOD makes maintenance easier
as changes to an object typically only affect the object itself and its interactions
with other objects.
Modularity:
FOD divides the application into smaller, more manageable functions and
modules. In OOD, objects encapsulate data and behavior, making the application
more modular and easier to manage.
Inheritance:
OOD supports inheritance, where objects can inherit properties and behavior
from other objects, resulting in code reuse and reducing duplication. FOD does
not support inheritance.
ANS:
Feasibility, on the other hand, refers to the extent to which a software project is
viable given its technical, economic, and organizational constraints. A feasibility
study is typically conducted early in the software development process to
determine whether the project is feasible or not. Factors that are considered
during a feasibility study may include the availability of resources, the technology
needed to implement the software, the financial resources required, and the
impact of the software on existing systems and processes.
Ans:Design modeling principles are a set of guidelines that can help designers
create effective models of products, systems, or processes. Here are some key
design modeling principles:
Abstraction: Design models should represent the essential features of a
product, system, or process, without getting bogged down in details that are not
relevant to the design goals.
Decomposition: Design models should be decomposed into smaller, more
manageable components that can be designed and analyzed separately.
Modularity: Design models should be organized into modules or components
that can be easily replaced or modified without affecting other parts of the design.
Hierarchy: Design models should be organized into a hierarchy of components,
with each component being responsible for a specific function or set of functions.
Coupling and Cohesion: Design models should aim for high cohesion, meaning
that components should have a clear and specific responsibility, and low
coupling, meaning that the components should have minimal interdependence.
Iteration: Design modeling is an iterative process, and models should be refined
and updated as the design progresses.
Consistency: Design models should be consistent with each other and with the
design goals and requirements.
Traceability: Design models should be traceable, meaning that it should be
possible to track the evolution of the design from the initial requirements through
to the final product.
13)explain diffrence between flowchart and dfd