Software Engineering
Software Engineering
Types of Coupling:
Data Coupling: If the dependency between the modules is based on the fact that
they communicate by passing only data, then the modules are said to be data
coupled. In data coupling, the components are independent to each other and
communicating through data. Module communications don’t contain tramp data.
Example-customer billing system.
Stamp Coupling In stamp coupling, the complete data structure is passed from one module to another
module. Therefore, it involves tramp data. It may be necessary due to efficiency factors- this choice
made by the insightful designer, not a lazy programmer.
Control Coupling: If the modules communicate by passing control information, then they are said to be
control coupled. It can be bad if parameters indicate completely different behavior and good if
parameters allow factoring and reuse of functionality. Example- sort function that takes comparison
function as an argument.
External Coupling: In external coupling, the modules depend on other modules, external to the
software being developed or to a particular type of hardware. Ex- protocol, external file, device format,
etc.
Common Coupling: The modules have shared data such as global data structures.The changes in
global data mean tracing back to all modules which access that data to evaluate the effect of the
change. So it has got disadvantages like difficulty in reusing modules, reduced ability to control data
accesses and reduced maintainability.
Content Coupling: In a content coupling, one module can modify the data of another module or control
flow is passed from one module to the other module. This is the worst form of coupling and should be
avoided.
Cohesion: Cohesion is a measure of the degree to which the elements of the module
are functionally related. It is the degree to which all elements directed towards
performing a single task are contained in the component. Basically, cohesion is the
internal glue that keeps the module together. A good software design will have high
cohesion.
Types of Cohesion:
Functional Cohesion: Every essential element for a single computation is contained in the component.
A functional cohesion performs the task and functions. It is an ideal situation.
Sequential Cohesion: An element outputs some data that becomes the input for other element, i.e.,
data flow between the parts. It occurs naturally in functional programming languages.
Communicational Cohesion: Two elements operate on the same input data or contribute towards the
same output data. Example- update record int the database and send it to the printer.
Procedural Cohesion: Elements of procedural cohesion ensure the order of execution. Actions are still
weakly connected and unlikely to be reusable. Ex- calculate student GPA, print student record, calculate
cumulative GPA, print cumulative GPA.
Temporal Cohesion: The elements are related by their timing involved. A module connected with
temporal cohesion all the tasks must be executed in the same time-span. This cohesion contains the
code for initializing all the parts of the system. Lots of different activities occur, all at init time.
Logical Cohesion: The elements are logically related and not functionally. Ex- A component reads
inputs from tape, disk, and network. All the code for these functions is in the same component.
Operations are related, but the functions are significantly different.
Coincidental Cohesion: The elements are not related(unrelated). The elements have no conceptual
relationship other than location in source code. It is accidental and the worst form of cohesion. Ex- print
next line and reverse the characters of a string in a single component.
Output mission
The required accuracy of output that can be negatively affected by inaccurate data or inaccurate
calculations.
The completeness of the output information, which can be affected by incomplete data.
The up-to-dateness of the information defined as the time between the event and the response by the
software system.
Reliability
Reliability requirements deal with service failure. They determine the maximum allowed failure rate of the
software system, and can refer to the entire system or to one or more of its separate functions.
Efficiency
It deals with the hardware resources needed to perform the different functions of the software system. It
includes processing capabilities (given in MHz), its storage capacity (given in MB or GB) and the data
communication capability (given in MBPS or GBPS).
It also deals with the time between recharging of the system’s portable units, such as, information system
units located in portable computers, or meteorological units placed outdoors.
Integrity
This factor deals with the software system security, that is, to prevent access to unauthorized persons, also
to distinguish between the group of people to be given read as well as write permit.
Usability
Usability requirements deal with the staff resources needed to train a new employee and to operate the
software system.
Maintainability
This factor considers the efforts that will be needed by users and maintenance personnel to identify the
reasons for software failures, to correct the failures, and to verify the success of the corrections.
Flexibility
This factor deals with the capabilities and efforts required to support adaptive maintenance activities of the
software. These include adapting the current software to additional circumstances and customers without
changing the software. This factor’s requirements also support perfective maintenance activities, such as
changes and additions to the software in order to improve its service and to adapt it to changes in the firm’s
technical or commercial environment.
Testability
Testability requirements deal with the testing of the software system as well as with its operation. It includes
predefined intermediate results, log files, and also the automatic diagnostics performed by the software system
prior to starting the system, to find out whether all components of the system are in working order and to obtain
a report about the detected faults. Another type of these requirements deals with automatic diagnostic checks
applied by the maintenance technicians to detect the causes of software failures.
Portability
Portability requirements tend to the adaptation of a software system to other environments consisting of
different hardware, different operating systems, and so forth. The software should be possible to continue
using the same basic software in diverse situations.
Reusability
This factor deals with the use of software modules originally designed for one project in a new software project
currently being developed. They may also enable future projects to make use of a given module or a group of
modules of the currently developed software. The reuse of software is expected to save development
resources, shorten the development period, and provide higher quality modules.
Interoperability
Interoperability requirements focus on creating interfaces with other software systems or with other equipment
firmware. For example, the firmware of the production machinery and testing equipment interfaces with the
production control software.
https://www.geeksforgeeks.org/software-engineering-system-configuration-management/
5.