0% found this document useful (0 votes)
4 views19 pages

Notes Se

Uploaded by

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

Notes Se

Uploaded by

habibatumai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Modularization

• Modularization is a technique to divide a software system into multiple


discrete and independent modules, which are expected to be capable of
carrying out task(s) independently.

• These modules may work as basic constructs for the entire software.

• Designers tend to design modules such that they can be executed and/or
compiled separately and independently.
• Modular design unintentionally follows the rules of ‘divide and
conquer’ problem-solving strategy this is because there are many other
benefits attached with the modular design of a software.
The characteristics of modularity

• Flexibility: Allows for easy customization and adaptation to

changing requirements.

• Abstraction: Modules provide clear, high-level interfaces abstracting

complex functionality.

• Collaboration: Facilitates parallel development by enabling teams to

work on different modules independently.


• Testing: Modular systems are easier to test as each module can be tested

separately, promoting robustness.

• Documentation: Encourages better documentation practices as module

interfaces need to be well-defined and documented.

• Interchangeability: Modules can be swapped or upgraded without affecting the

overall system functionality, promoting interoperability.


Cohesion and coupling

• Cohesion and coupling in software engineering are two important concepts


that describe the relationship between the modules or components in a
software system.

• They are used to assess the quality of the design & to measure how well the
system's components interact with each other.

• Coupling represents the relationships between modules, and cohesion


defines the relationships within them
Cohesion
• Cohesion in software engineering refers to how closely related the
responsibilities and functions of a single module.

• In other words, it measures how well the elements within a module work
together to achieve a single purpose.

• High cohesion means that a module has a clear, focused purpose and its parts
are directly related to that purpose.

• This is desirable because highly cohesive modules are easier to understand,


maintain, and test.
• Example :

Consider a module that handles all the operations related to user


authentication, such as logging in, logging out, and managing
passwords. If these tasks are all contained within one module, that
module has high cohesion.
Coupling

• Coupling in software engineering refers to the degree of


interdependence between two or more modules in a system.

• It indicates how much one module relies on the details of another.

• Low coupling is preferable because it means changes in one


module are less likely to impact others, making the system more
flexible and easier to maintain.
• Example :

• If a user authentication module is designed in such a way that it can


work independently of other modules, such as the user profile or
the database, then it has low coupling.

• This independence means that changes to the authentication module


won't necessitate changes to other parts of the system.
Key Differences

• 1. Focus: Cohesion is about how closely related the elements within a module are.
Coupling is about the relationships between different modules and how much they
depend on each other.

• 2. Desirability: High cohesion is desirable because it means a module is focused on


a specific task. Low coupling is also desirable because it allows modules to be
changed without affecting others.

• 3. Maintenance: Systems with high cohesion and low coupling are easier to
maintain and expand, as changes in one module are less likely to cause issues in
others.
Atomicity

• Atomicity is a property of a system that ensures that multiple


operations are treated as a single unit of work, and are either all
completed or none are completed.

• This property is important in database systems, where it


prevents partial updates that can lead to data inconsistencies
The software tester
• A software tester is a professional responsible for evaluating software
applications to ensure they function correctly, meet specifications, and are free
from bugs or defects.

• The role is essential in the software development lifecycle to ensure high-


quality, reliable, and user-friendly products.

• The role of a software tester in software engineering is to ensure that a software


product meets the required specifications and performs as expected
Types of Software Testing:

• Unit Testing:

Testing individual components or functions of a program to ensure they work


as intended.

Integration Testing:

Testing the interaction between different modules or systems to ensure they


work together.
• System Testing: Testing the entire software system as a
whole to ensure it meets all specified requirements.

• Acceptance Testing: Verifying that the software satisfies


business requirements and is ready for release.
Key Responsibilities:

Test Planning:

Understand project requirements and create detailed test plans and test cases to ensure

software meets the necessary criteria.

Test Execution:

Run tests manually or through automated testing tools to identify issues such as bugs,

errors, and performance problems.

Defect Reporting:

Document and report issues found during testing in detail, including steps to reproduce the

issue, severity, and potential impact.


Regression Testing:

After developers fix bugs or add new features, perform regression testing to

ensure that no existing functionality is broken.

Collaboration:

Work closely with developers, business analysts, and product managers to

understand requirements and provide feedback on software usability and quality.


Analyst in software engineering

• Analyst typically refers to a Systems Analyst or Business Analyst


working closely with software development teams to define, design,
and implement software solutions.

• Analysts in software engineering help bridge the gap between business


requirements and technical solutions, ensuring that the software meets
both the business needs and the technical specifications.
A developer

• A developer (software developer or programmer) is a professional


responsible for writing, testing, and maintaining the code that makes
software applications run.

• Developers work across various programming languages and


technologies
Types of Developers

• Front –end developer


• Back –end developer
• Full stack developer

• Etc….

You might also like