This document discusses modularity and coupling in software engineering. It defines that programs are comprised of components that communicate to achieve program goals. Component size can vary, but should generally be 5-9 statements to fit in human working memory. Modularity partitions a system into components to improve design, maintenance, testing and more. Coupling describes the interaction between components, with loose/weak coupling like data coupling being preferred over tight/strong coupling like content coupling. The document provides examples to illustrate different types of coupling and how modularity improves software engineering.
Cohesion and Coupling - The Keys To Changing Your Code With ConfidenceDan Donahue
Developers often begrudge how difficult their code is to maintain. They look for new languages, new paradigms and new practices to help them write more maintainable code. But they often gloss over the basics of clean code.
This talks discusses two simple software metrics conceived in the 1960s - cohesion and coupling. These two measurable properties can tell you so much about how readable and maintainable your code really is.
You'll learn how to measure cohesion and coupling, interpret what the measurements mean and how to refactor to improve these metrics and ultimately, the maintainability of your codebase.
Illustrate general good design principles in software engineering such as low coupling, high cohesion, modularity, abstraction, separation of interface and implementation. With examples.
Cohesion and Coupling - The Keys To Changing Your Code With ConfidenceDan Donahue
Developers often begrudge how difficult their code is to maintain. They look for new languages, new paradigms and new practices to help them write more maintainable code. But they often gloss over the basics of clean code.
This talks discusses two simple software metrics conceived in the 1960s - cohesion and coupling. These two measurable properties can tell you so much about how readable and maintainable your code really is.
You'll learn how to measure cohesion and coupling, interpret what the measurements mean and how to refactor to improve these metrics and ultimately, the maintainability of your codebase.
Illustrate general good design principles in software engineering such as low coupling, high cohesion, modularity, abstraction, separation of interface and implementation. With examples.
Software design is a process through which requirements are translated into a ― blueprint for constructing the software.
Initially, the blueprint shows how the software will look and what kind of data or components will be required to in making it.
The software is divided into separately named components, often called ‘MODULES’, that are used to detect problems at ease.
This follows the "DIVIDE AND CONQUER" conclusion. It's easier to solve a complex problem when you break it into manageable pieces.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
When a software program is modularized, there are measures by which the quality of a design of modules and their interaction among them can be measured. These measures are called coupling and cohesion.
Presentation covers all aspects about Software Designing that are followed by Software Engineering Industries. Readers can do detailed study about the Software Design Concepts like (Abstraction, Architecture, Patterns, Modularity, Information Hiding, Refinement, Functional Dependence, Cohesion, Coupling & Refactoring) plus Design Process.
Later then Design Principles are there to understand with Architectural Design, Architectural Styles, Data Centered Architecture, Data Flow Architecture, Call & Return Architecture, Object Oriented Architecture, Layered Architecture with other architectures are named at end of it.
Later then, Component Level Design is discussed. Then after UI Design & Rules of it, UI Design Models, Web Application Design, WebApp Interface Design are discussed at the end.
Comment back if you have any query about it.
Software design is a process through which requirements are translated into a ― blueprint for constructing the software.
Initially, the blueprint shows how the software will look and what kind of data or components will be required to in making it.
The software is divided into separately named components, often called ‘MODULES’, that are used to detect problems at ease.
This follows the "DIVIDE AND CONQUER" conclusion. It's easier to solve a complex problem when you break it into manageable pieces.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
When a software program is modularized, there are measures by which the quality of a design of modules and their interaction among them can be measured. These measures are called coupling and cohesion.
Presentation covers all aspects about Software Designing that are followed by Software Engineering Industries. Readers can do detailed study about the Software Design Concepts like (Abstraction, Architecture, Patterns, Modularity, Information Hiding, Refinement, Functional Dependence, Cohesion, Coupling & Refactoring) plus Design Process.
Later then Design Principles are there to understand with Architectural Design, Architectural Styles, Data Centered Architecture, Data Flow Architecture, Call & Return Architecture, Object Oriented Architecture, Layered Architecture with other architectures are named at end of it.
Later then, Component Level Design is discussed. Then after UI Design & Rules of it, UI Design Models, Web Application Design, WebApp Interface Design are discussed at the end.
Comment back if you have any query about it.
*A modular design reduces complexity
*The concept of functional independence is a direct outgrowth of modularity and the
concepts of abstraction and information hiding
*functional independence is a key to good design, and design is the key to software quality
An introduction to systems design process. We have a look at an in-depth overview of topics in architectural design patterns such as SOLID principles, hexagonal architecture etc. Then we proceed to software design patterns and explore topics such as creational patterns, structural patterns etc. We also have a look at hardware design patterns with examples such as Modularity, pipelining, redundancy etc. And finally, we go through project management methodologies, explaining methodologies such as waterfall, agile, lean etc. Further information was provided on sources to learn more about the presentation.
Software Design
Design principles
Problem partitioning
Abstraction
Top down and bottom up-design
Structured approach
Functional versus object oriented approach
Design specifications and verification
Monitoring and control
Cohesiveness
Coupling
Fourth generation techniques
Functional independence
Software Architecture
Transaction and Transform Mapping
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
The French Revolution, which began in 1789, was a period of radical social and political upheaval in France. It marked the decline of absolute monarchies, the rise of secular and democratic republics, and the eventual rise of Napoleon Bonaparte. This revolutionary period is crucial in understanding the transition from feudalism to modernity in Europe.
For more information, visit-www.vavaclasses.com
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...Levi Shapiro
Letter from the Congress of the United States regarding Anti-Semitism sent June 3rd to MIT President Sally Kornbluth, MIT Corp Chair, Mark Gorenberg
Dear Dr. Kornbluth and Mr. Gorenberg,
The US House of Representatives is deeply concerned by ongoing and pervasive acts of antisemitic
harassment and intimidation at the Massachusetts Institute of Technology (MIT). Failing to act decisively to ensure a safe learning environment for all students would be a grave dereliction of your responsibilities as President of MIT and Chair of the MIT Corporation.
This Congress will not stand idly by and allow an environment hostile to Jewish students to persist. The House believes that your institution is in violation of Title VI of the Civil Rights Act, and the inability or
unwillingness to rectify this violation through action requires accountability.
Postsecondary education is a unique opportunity for students to learn and have their ideas and beliefs challenged. However, universities receiving hundreds of millions of federal funds annually have denied
students that opportunity and have been hijacked to become venues for the promotion of terrorism, antisemitic harassment and intimidation, unlawful encampments, and in some cases, assaults and riots.
The House of Representatives will not countenance the use of federal funds to indoctrinate students into hateful, antisemitic, anti-American supporters of terrorism. Investigations into campus antisemitism by the Committee on Education and the Workforce and the Committee on Ways and Means have been expanded into a Congress-wide probe across all relevant jurisdictions to address this national crisis. The undersigned Committees will conduct oversight into the use of federal funds at MIT and its learning environment under authorities granted to each Committee.
• The Committee on Education and the Workforce has been investigating your institution since December 7, 2023. The Committee has broad jurisdiction over postsecondary education, including its compliance with Title VI of the Civil Rights Act, campus safety concerns over disruptions to the learning environment, and the awarding of federal student aid under the Higher Education Act.
• The Committee on Oversight and Accountability is investigating the sources of funding and other support flowing to groups espousing pro-Hamas propaganda and engaged in antisemitic harassment and intimidation of students. The Committee on Oversight and Accountability is the principal oversight committee of the US House of Representatives and has broad authority to investigate “any matter” at “any time” under House Rule X.
• The Committee on Ways and Means has been investigating several universities since November 15, 2023, when the Committee held a hearing entitled From Ivory Towers to Dark Corners: Investigating the Nexus Between Antisemitism, Tax-Exempt Universities, and Terror Financing. The Committee followed the hearing with letters to those institutions on January 10, 202
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
2. Program and its Components
– Like all other engineering artifacts, programs
are comprised of components.
– Components can be small or large, but all
communicate with each other to achieve the
goal of the program
– A program can have various program
structures; one having small number of Large
components having few links or another
having large number of Small components
having a large number of links between them
to achieve the assigned goal of the program
4. How Large Should be a
Component?
– One page (40-50 statements)?
– Only 5-9 statements long? as a human mind
can store 7 2 items in its active memory – a
research from cognitive and psychological
sciences areas.
– Or in between the two sizes.
– Size of components ∞ (no. of Components) - 1
5. Modularity
Modules’ Cost Vurses Size
Larger the module size higher the cost and vice versa, overall cost of
system is dependent on other costs as well, like Module Integration cost
6.
7. Why Modularity?
• Modularity is to partition the software system into
number of components, whereas a Component
could be a method, a class, a package or a
module.
• Modularity is important throughout the SD
including Design and Maintenance.
• Ideally each component should be self
contained and have as few references to other
modules as possible.
• Correlation with other Engineering artifacts
8. • Modularity has consequences for
– Architectural Design
– Component or Detailed Design
– Debugging
– Testing
– Maintenance
– Independent Development
– Damage Control and
– Software Reuse
9. Types of Components
• Generically for sake of discussion,
components could be classified as per
their roles as:
– Computation Only (retain no data, math
methods or filters in Unix)
– Memory (persistent data maintenance & use)
– Manager
– Controller
– Link (UI or Main Pipes)
10. Coupling and Cohesion
• Coupling and Cohesion are the terms that
describe the character of the interaction
between components and within components
respectively.
• These are complimentary.
• Strong Coupling and Weak Cohesion are bad,
Weak Coupling and Strong Cohesion are good
• These terms provide a terminology for
qualitative analysis of Modularity
12. Coupling
• Coupling is the degree of interaction
between two modules.
• It is of 5 types
1. Content Coupling (Bad or Undesirable)
2. Common Coupling
3. Control Coupling
4. Stamp Coupling
5. Data Coupling (Good or the Desirable)
6. Data Stream Coupling (Good and Desirable)
13. Content Coupling
• The two modules are Content-Coupled if
one can change the others contents
• Earlier programming languages had constructs to
perform such tricky things, but realizing problems
this sort of coupling may cause, these constructs
have been abolished, Eg alter in earlier versions of
COBOL has now been removed. Currently only
Assembly Language can do it.
• Maintainability and reuse problems
14. Global Data (Common) Coupling
• When two or more modules have (read as
well as write) access to global data they are
said to be Common Coupled
• ‘Common’ comes from FORTRAN COMMON
statement, initiated to relinquish long
parameter lists, and to share data; COMMON
in FORTRAN and global in COBOL-80,
Public data or methods in modern languages
• Problems:
• Most data (Shared data) passed to the modules thru
COMMON blocks not thru the parameter lists, so
modules are difficult to comprehend and read
• Any module having access can change it so difficult to
determine ‘who changed when’ in case of problem, so
difficult to debug and maintain
15. Common Coupling .
• Data is un-necessarily exposed to modules where it should
not be, thus compromising the Security
• Maintenance changes made in one of the modules to the
declaration (say array size) of a global variable, then that
change has to be made in every module that has access to
that variable
• Common-coupled modules are difficult to reuse, since
identical list of global variables has to be supplied each time
the module is reused
– Despite problems, one can benefit from the gains of
COMMON statement, if applied carefully and
Access levels of different modules to different
blocks are well documented, and the set
guidelines for Common use are strictly
implemented by the Management
18. Control Coupling
• When a module passes control or switch to
another module then it explicitly controls the
logic of the other module, then these are called
as control-coupled modules
– Ex
• Call io (command, device, buffer, length), where command
can have values 0, 1 and 2 for operations read, write and
open
• This called module io and its calling module will be control-
coupled, calling module needs to know the internal structure
of io, or it’s controlling the logic of called module
• Instead io should be replaced by three modules of read, write
and open like
Call read(device, buffer, length)
19. Control coupling.
• Two modules are not independent, the calling has
to be aware of internal structure and the logic of
the called module, reuse not possible
• Generally Control Coupling is associated with
modules that have logical Cohesion, and so
difficulties with logical cohesion are also present
20. Stamp Coupling
• Two modules are Stamp-coupled if the calling
module passes on data structure to the called
module, which uses only some individual
components of the data structure
– Eg
• Calculate withholding (employee_record), where
employee_record data structure contains all data related to
employee, his name, contact, qualification, but only salary is
used to calculate withholding
• Insecurity, called module will have access to not
needed data
• Use of data structures as arguments is
recommended provided they are fully used
21. Data Coupling
• Two modules are data-coupled if all arguments
are homogeneous data items. Every item can
either be a data structure or a simple element,
but should be used in called module
– Ex
• Calculate withholding (employee_salary), where
employee_salary is the salary of employee
• This is the most desired coupling, results in
independent, easily maintainable and re-usable
modules
22. Stream Coupling
• Passing of a serial data stream,
• This is the weakest or the best coupling
achieved without any transfer of control between
components.
• It is like one component is out puting information
to a serial file and other component is reading
from there.
• New languages like Java have library functions
like java.io.PipedInputStream and
java.io.PipedOutputStream; Ada also have
similar constructs
25. References
1. Douglas Bell (2005); Software Engineering for Students; 4th
Edition, Pearson Education, Ch-6, Modularity, pp 67-86
2. Stephen R Schach (2007); Software Engineering, 7th Edition,
Tata McGraw-Hill Publishing Company Limited, New Delhi,
Ch-7 From Modules to Objects, pp 177 - 218
3. Pankaje Jalote (2004); An Integrated Approach to Software
Engineering, 2nd Edition; Narosa Publishing House, New Delhi;
Ch – 5
4. S A Kelkar (2007); Software Engineering – A Concise Study;
Prentice-Hall of India, New Delhi, pp 548-550