0% found this document useful (0 votes)
2 views9 pages

Se Unit 2 (Part 2)

Coupling refers to the interdependence between software modules, with low coupling being desirable for maintainability and scalability. Cohesion measures how well elements within a module work together, with high cohesion being preferable for clarity and reliability. Effective project planning in software development involves managing scope, resources, risk, and communication to ensure successful project execution.

Uploaded by

nikhilchadha2135
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views9 pages

Se Unit 2 (Part 2)

Coupling refers to the interdependence between software modules, with low coupling being desirable for maintainability and scalability. Cohesion measures how well elements within a module work together, with high cohesion being preferable for clarity and reliability. Effective project planning in software development involves managing scope, resources, risk, and communication to ensure successful project execution.

Uploaded by

nikhilchadha2135
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Coupling

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. A good software will have low coupling.
Following are the 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 of each other and communicate 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 was 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.

Temporal Coupling: Temporal coupling occurs when two modules depend on the timing or order of
events, such as one module needing to execute before another. This type of coupling can result in
design issues and difficulties in testing and maintenance.

Sequential Coupling: Sequential coupling occurs when the output of one module is used as the input
of another module, creating a chain or sequence of dependencies. This type of coupling can be
difficult to maintain and modify.

Communicational Coupling: Communicational coupling occurs when two or more modules share a
common communication mechanism, such as a shared message queue or database. This type of
coupling can lead to performance issues and difficulty in debugging.

Functional Coupling: Functional coupling occurs when two modules depend on each other’s
functionality, such as one module calling a function from another module. This type of coupling can
result in tightly-coupled code that is difficult to modify and maintain.

Data-Structured Coupling: Data-structured coupling occurs when two or more modules share a
common data structure, such as a database table or data file. This type of coupling can lead to
difficulty in maintaining the integrity of the data structure and can result in performance issues.

Interaction Coupling: Interaction coupling occurs due to the methods of a class invoking methods of
other classes. Like with functions, the worst form of coupling here is if methods directly access
internal parts of other methods. Coupling is lowest if methods communicate directly through
parameters.
Advantages of low coupling
• Improved maintainability: Low coupling reduces the impact of changes in one module on
other modules, making it easier to modify or replace individual components without
affecting the entire system.
• Enhanced modularity: Low coupling allows modules to be developed and tested in isolation,
improving the modularity and reusability of code.
• Better scalability: Low coupling facilitates the addition of new modules and the removal of
existing ones, making it easier to scale the system as needed.

Disadvantages of high coupling


Increased complexity: High coupling increases the interdependence between modules, making the
system more complex and difficult to understand.

Reduced flexibility: High coupling makes it more difficult to modify or replace individual components
without affecting the entire system.

Decreased modularity: High coupling makes it more difficult to develop and test modules in
isolation, reducing the modularity and reusability of code.

Cohesion
Cohesion refers to the degree to which elements within a module work together to fulfill a single,
well-defined purpose.

High cohesion means that elements are closely related and focused on a single purpose.

Low cohesion means that elements are loosely related and serve multiple purposes.
Following are the 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 in 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 unit 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.

Informational Cohesion: Informational cohesion occurs when elements or tasks are grouped
together in a module based on their relationship to a specific data structure or object, such as a
module that operates on a specific data type or object. Informational cohesion is commonly used in
object-oriented programming.
Advantages of high cohesion
• Improved readability and understandability: High cohesion results in clear, focused modules
with a single, well-defined purpose, making it easier for developers to understand the code
and make changes.
• Better error isolation: High cohesion reduces the likelihood that a change in one part of a
module will affect other parts, making it easier to
• Improved reliability: High cohesion leads to modules that are less prone to errors and that
function more consistently, leading to an overall improvement in the reliability of the system

Disadvantages of low cohesion


• Increased code duplication: Low cohesion can lead to the duplication of code, as elements
that belong together are split into separate modules.
• Reduced functionality: Low cohesion can result in modules that lack a clear purpose and
contain elements that don’t belong together, reducing their functionality and making them
harder to maintain.
• Difficulty in understanding the module: Low cohesion can make it harder for developers to
understand the purpose and behaviour of a module, leading to errors and a lack of clarity.

Relation b/w cohesion and coupling


Both coupling and cohesion are important factors in determining the maintainability, scalability, and
reliability of a software system. High coupling and low cohesion can make a system difficult to
change and test, while low coupling and high cohesion make a system easier to maintain and
improve.

Project Planning
A Software Project is the complete methodology of programming advancement from requirement
gathering to testing and support, completed by the execution procedures, in a specified period to
achieve intended software product.

Need of Software Project Management

Software development is a sort of all new streams in world business, and there's next to no
involvement in structure programming items. Most programming items are customized to
accommodate customer's necessities. The most significant is that the underlying technology changes
and advances so generally and rapidly that experience of one element may not be connected to the
other one. All such business and ecological imperatives bring risk in software development; hence, it
is fundamental to manage software projects efficiently.

Software Project Manager

Software manager is responsible for planning and scheduling project development. They manage the
work to ensure that it is completed to the required standard. They monitor the progress to check that
the event is on time and within budget. The project planning must incorporate the major issues like
size & cost estimation scheduling, project monitoring, personnel selection evaluation & risk
management.

To plan a successful software project, we must understand:

o Scope of work to be completed


o Risk analysis
o The resources mandatory
o The project to be accomplished
o Record of being followed

Software Project planning starts before technical work start. The various steps of planning activities
are:

Essential activities of a software project planning

The size is the crucial parameter for the estimation of other activities. Resources
requirement is required based on cost and development time. Project schedule may
prove to be very useful for controlling and monitoring the progress of the project. This
is dependent on resources & development time.

Software Project Management consists of many activities, that includes planning of the
project, deciding the scope of product, estimation of cost in different terms, scheduling
of tasks, etc.

The list of activities are as follows:


Project planning and Tracking

Project Resource Management

Scope Management

Estimation Management

Project Risk Management

Scheduling Management

Project Communication Management

Configuration Management

1. Project Planning: It is a set of multiple processes, or we can say that it a task that
performed before the construction of the product starts.

2. Scope Management: It describes the scope of the project. Scope management is


important because it clearly defines what would do and what would not. Scope
Management create the project to contain restricted and quantitative tasks, which may
merely be documented and successively avoids price and time overrun.

3. Estimation management: This is not only about cost estimation because whenever
we start to develop software, but we also figure out their size(line of code), efforts,
time as well as cost.

If we talk about the size, then Line of code depends upon user or software requirement.

If we talk about effort, we should know about the size of the software, because based
on the size we can quickly estimate how big team required to produce the software.

If we talk about time, when size and efforts are estimated, the time required to develop
the software can easily determine.

And if we talk about cost, it includes all the elements such as:

o Size of software
o Quality
o Hardware
o Communication
o Training
o Additional Software and tools
o Skilled manpower

4. Scheduling Management: Scheduling Management in software refers to all the


activities to complete in the specified order and within time slotted to each activity.
Project managers define multiple tasks and arrange them keeping various factors in
mind.

For scheduling, it is compulsory -

o Find out multiple tasks and correlate them.


o Divide time into units.
o Assign the respective number of work-units for every job.
o Calculate the total time from start to finish.
o Break down the project into modules.

5. Project Resource Management: In software Development, all the elements are


referred to as resources for the project. It can be a human resource, productive tools,
and libraries.

Resource management includes:

o Create a project team and assign responsibilities to every team member


o Developing a resource plan is derived from the project plan.
o Adjustment of resources.

6. Project Risk Management: Risk management consists of all the activities like
identification, analyzing and preparing the plan for predictable and unpredictable risk
in the project.

Several points show the risks in the project:

o The Experienced team leaves the project, and the new team joins it.
o Changes in requirement.
o Change in technologies and the environment.
o Market competition.

7. Project Communication Management: Communication is an essential factor in


the success of the project. It is a bridge between client, organization, team members
and as well as other stakeholders of the project such as hardware suppliers.
From the planning to closure, communication plays a vital role. In all the phases,
communication must be clear and understood. Miscommunication can create a big
blunder in the project.

8. Project Configuration Management: Configuration management is about to


control the changes in software like requirements, design, and development of the
product.

The Primary goal is to increase productivity with fewer errors.

You might also like