Aim: Theory:: Practical - 6
Aim: Theory:: Practical - 6
Theory:
To control and manage software configuration items, each must be separately named and then
organized using an object-oriented approach. Two types of objects can be identified: basic objects
and aggregate objects. A basic object is a "unit of text" that has been created by a software engineer
during analysis, design, code, or test. For example, a basic object might be a section of a
requirements specification, a source listing for a component, or a suite of test cases that are used to
exercise the code. An aggregate object is a collection of basic objects and other aggregate objects.
Design Specification is an aggregate object. Conceptually, it can be viewed as a named (identified)
list of pointers that specify basic objects such as data model and component N.
Each object has a set of distinct features that identify it uniquely: a name, a description, a list of
resources, and a "realization." The object name is a character string that identifies the object
unambiguously. The object description is a list of data items that identify • the SCI type (e.g.,
document, program, data) represented by the object.
• a project identifier
• change and/or version information
Resources are "entities that are provided, processed, referenced or otherwise required by the
object. " For example, data types, specific functions, or even variable names may be considered to
be object resources. The realization is a pointer to the "unit of text" for a basic object and null for an
aggregate object. Configuration object identification must also consider the relationships that exist
between named objects. An object can be identified as <part-of> an aggregate object. The
relationship <part-of> defines a hierarchy of objects. For example, using the simple notation
It is unrealistic to assume that the only relationships among objects in an object hierarchy are along
direct paths of the hierarchical tree. In many cases, objects are interrelated across branches of the
object hierarchy. For example, a data model is interrelated to data flow diagrams (assuming the use
of structured analysis) and also interrelated to a set of test cases for a specific equivalence class.
These cross structural relationships can be represented in the following manner:
In the first case, the interrelationship is between a composite object, while the second relationship is
between an aggregate object (data model) and a basic object (test case class m).
Changes may be made to any version, but not necessarily to all versions. How does the developer
reference all components, documents, and test cases for version 1.4? How does the marketing
department know what customers currently have version 2.1? How can we be sure that changes to
the version 2.1 source code are properly reflected in the corresponding design documentation? A
key element in the answer to all these questions is identification.
A variety of automated SCM tools has been developed to aid in identification (and other SCM) tasks.
In some cases, a tool is designed to maintain full copies of only the most recent version. To achieve
earlier versions (of documents or programs) changes (catalogued by the tool) are "subtracted" from
the most recent version. This scheme makes the current configuration immediately available and
allows other versions to be derived easily.
1. Basic Objects: These are the individual units created during various stages of the software
development process (e.g., requirements, code, design). Each object must have a unique
identifier and may include:
o Requirements Specification Document: Contains the functional and non-functional
requirements of the project.
o Source Code Files: Files for backend logic (e.g., Python, Java), frontend code (e.g.,
HTML/CSS, JavaScript).
o Test Cases: Unit and integration test cases created to verify the functionality of the
software.
o Database Schema: SQL or NoSQL scripts defining the database structure (e.g.,
vehicle registration, entry/exit logs).
o Configuration Files: Files that define environment-specific settings like server
configurations.
2. Aggregate Objects: These are collections of basic objects that represent higher-level
components or documents. Aggregate objects are often complex and made up of related
basic objects. Examples include:
o Design Specification: This may aggregate the ER diagrams, data models, and design
patterns used.
o Module Components: Groupings of related source code files (backend, frontend).
o Test Suites: A collection of all test cases (unit, integration, system tests).
o Deployment Package: Includes all code, configuration files, and scripts necessary for
deployment.
Identification Scheme
Each object must have a unique identifier that specifies its type, version, and any interdependencies.
This helps to manage changes effectively. Here are examples of identifiers:
Requirement Document v1.0: REQ_DOC_V1.0
Backend Code Module v2.0: BACKEND_MODULE_V2.0
Frontend Code (HTML/CSS) v1.1: FRONTEND_MODULE_V1.1
Test Case Suite (Unit Tests) v1.2: TEST_SUITE_UNIT_V1.2
Evolution of Objects
Software objects evolve as they undergo changes. SCM tools track object versions to maintain
history and manage concurrent updates. For example:
Object Evolution:
o Version 1.0 (Initial version)
o Version 1.1 (Minor changes)
o Version 1.2 (Major update)
o Branching may also occur, creating version paths (e.g., 2.0, 2.1).
Conclusion
For your term project, identifying and organizing basic and aggregate objects within SCM will ensure
that all components are properly tracked and managed. Key objects include requirements
documents, code, test cases, and database schemas, all of which must have clear versioning and
relationships to maintain project consistency.
Signature of Faculty: