Tag Archive for: Jama Connect Platform

G2 Summer Report

 


G2 Again Names Jama Connect® the Standout Leader in Requirements Management Software in their Summer 2023 Grid® Report

Thank You to Our Customers!

Jama Connect® was again named far above all others as the overall leader in the Summer 2023 G2 Grid Report for Requirements Management Software!

Alongside the honor of being named the only leader in requirements management software, we are proud to showcase that we were awarded several additional medals for Summer 2023 in both Requirements Management Software and Application Lifecycle Management (ALM) Software, including:

    • Users Love Us: For products that have collected 20 reviews with an average rating of 4.0 stars.
    • Enterprise Leader: For products rated highly by G2 users and have substantial Satisfaction and Market Presence scores
    • Momentum Leader: Products in the Leader tier in the Momentum Grid® rank in the top 25% of their category’s products by their users.
    • Easiest to Use: The product in the Usability Index earned the highest Ease of Admin rating in its category
    • Best Relationship: The Best Relationship product in the Relationship Index earned the highest Relationship rating in its category
    • Easiest To Do Business With: The Easiest Doing Business With product in the Relationship Index earned the highest Ease of Doing Business With rating in its category
    • Easiest Admin: For products that earn the highest Ease of Admin rating in their category
    • Best Usability: The Best Usability product in the Usability Index earned the highest Usability rating in its category
    • Fastest Implementation: For product that had the shortest go-live time in its category
    • Easiest Setup: The product that earned the highest Ease of Setup rating in its category
    • Users Most Likely to Recommend: The Users Most Likely to Recommend product in the Results Index earned the highest Likely to Recommend rating in its category

Download the full report to see why customers love using Jama Connect for product, systems, and software development.


Learn More About the Summer 2023 G2 Grid for the top Requirements Management Software products HERE!


At Jama Software®, we’re proud to be recognized as the leader in requirements management software. We’re grateful to our customers for their invaluable feedback on their experiences using Jama Connect for requirements management. We remain committed to providing them with the expert knowledge, attention, and resources they need to help them achieve their goals.

The “Users Love Us” category, in particular, is a testament to the value our industry-leading requirements management software brings to our customers, and especially for customers who have moved from a document-based approach to complex product, systems, or software developement.

Jama [Connect] is the final death blow to your grandfathers way of managing text based requirements.”

-From review collected and hosted on G2.com, Mark M. — Mid-Market

Read Jama Connect reviews on G2

We strive to provide our customers with the best experience while using our platform. Categories such as “Easiest to Use”, “Easiest Admin”, “Users Most Likely to Recommend”, and “Best Usability” in particular show how much our users enjoy working within Jama Connect.

Product Design teams need a requirements management tool like Jama [Connect.] Using Jama Connect allows our software development team to have a well-organized and well-written set of requirements. It allows us to more easily maintain a baseline of features in our continuously evolving software.”

-From review collected and hosted on G2.com, Verified User, Retail — Mid-Market

Review Jama Connect on G2

From all of us at Jama Software to all of you, thank you!


G2 scores products and sellers based on reviews, gathered from their user community, as well as data aggregated from online sources and social networks. Together, these scores are mapped on their proprietary G2 Grid®, which can be used to compare products, streamline the buying process, and quickly identify the best products based on the experiences of your peers.


Traceability Matrix


Traceability Matrix 101: Why It’s Not the Ultimate Solution for Managing Requirements

In this post, we cover the definition of a traceability matrix and discuss the limitations of using a trace matrix for requirements management and provide an alternate, superior option.

Trace matrices, also known as traceability matrices, are frequently used in complex product, system, and software development to keep track of the connections between specifications, design components, and test cases. They provide an organized way to make sure that the system’s planning, execution, and testing satisfy each requirement. When utilizing trace matrices in challenging development projects, however, it is important to consider a number of their known drawbacks.

Here are five key limitations of using a traditional traceability matrix for requirements management:

1. Limited Visibility: In projects with a lot of requirements and design components, trace matrices can grow significantly in size and complexity. As a result, it can be difficult for teams and stakeholders to get a comprehensive understanding of the complete system — and to understand how each requirement relates to the other components. This often results in mistakes and gaps in the trace matrix, which lowers the system’s quality and introduces risk to both the project and the product.

2. Maintenance Overhead: Trace matrices require constant maintenance throughout the development process. As new requirements are added or changed, the trace matrix needs to be updated to reflect these changes. This can be time-consuming and can take away from other important development tasks. Additionally, it can be challenging to keep track of every change, which can result in mistakes in the trace matrix.

3. Limited Scope: Trace matrices are typically limited to the scope of the specific project they were designed for. They are insufficient for tracing issues that span across various disciplines, such as security or efficiency, which may require a different, more robust, traceability strategy. Additionally, trace matrices might not fully account for a system’s complexity, such as sudden changes or relationships between components, which can result in unforeseen issues.

4. Lack of Context: Trace matrices only provide a static view of the system and do not capture the dynamic context in which the system operates. For example, a requirement may be met by a design element, but the design element may have unintended consequences when combined with other elements in the system. Trace matrices may not capture these interactions, which can lead to bugs or other issues in the final system.

5. Limited Support for Agile Development: Trace matrices are typically associated with traditional, waterfall-style development processes, which do not align well with Agile development methodologies. Agile development processes emphasize collaboration, iterative development, and quick feedback cycles, which can be difficult to reconcile with the strict traceability requirements of a trace matrix. As a result, trace matrices may not be well-suited for Agile development projects.


RELATED: The Jama Software® Guide to Requirements Traceability


Five Advantages of Using a Robust Requirements Management and Traceability Solution, Like Jama Connect®, Over a Static Traceability Matrix

Jama Connect®’s powerful, yet easy-to-use, requirements management and traceability platform bring people and data together in one place, providing visibility and actionable insight into the complete product development lifecycle. Teams and stakeholders — regardless of their location — can easily share updates in seconds, discover issues weeks sooner, and have one place to collaborate with key stakeholders — in real time. As a result, Jama Connect offers many advantages over using a traditional traceability matrix.

Here are five advantages of Jama Connect:

1. Automation: Jama Connect automates many tasks that would be tedious and time-consuming to do manually. For example, it can automatically generate traceability matrices, link requirements to test cases, and track changes to requirements. And, because testing is built into Jama Connect, users can take advantage of our trace view to navigate from high level requirements, all the way down to test cases and defects. This allows users to view any failed tests or open defects that are associated with their upstream requirements. Because traditional trace matrices are static, they are unable to benefit from this type of automation.

2. Visibility: Jama Connect provides a more comprehensive view of the requirements and their relationships than a static traceability matrix by automatically generating Live Traceability™ which allows you to navigate levels of traceability both upstream AND downstream. With Jama Connect, you can see the entire requirements hierarchy, including parent-child relationships, dependencies, and impact analysis.

3. Collaboration: Jama Connect makes it easy for teams to collaborate on requirements. With features like comments, reviews, and notifications, team members and stakeholders can discuss and iterate on requirements in real-time.

4: Customization: Jama Connect is highly customizable, allowing it to be tailored to your specific needs. You can create custom fields, workflows, and reports to match your organization’s processes and requirements.

5. Scalability: Jama Connect is designed to handle large and complex projects with thousands of requirements. It can support multiple teams, projects, and stakeholders, and can integrate with other best-of-breed tools in your ecosystem.

Additionally, with Jama Connect, teams can implement live requirements traceability and measure it to continuously improve end-to-end systems development process performance, even through siloed development, test, and risk activities.


RELATED: Requirements Traceability: Links in the Requirements Chain


What is Live Traceability™?

Live requirements traceability is the ability for any engineer at any time to see the most up to date and complete upstream and downstream information for any requirement—no matter the stage of systems development or how many siloed tools and teams it spans. This enables the engineering process to be managed through data, and its performance improved in real time.

Conclusion

Even though trace matrices can be a helpful tool for keeping track of requirements, design components, and test cases in some development projects, there are several drawbacks to be cognizant of, especially as projects become increasingly complex. These limitations include limited visibility, lack of context, narrow scope, maintenance overhead, and inadequate support for Agile development. So, it might be time to consider other, more modern, and robust approaches to traceability for complex product, systems, and software development projects.

Jama Connect, the leading requirements management and proven traceability software platform, enables a digital thread that ties tools and metadata together across the end-to-end product lifecycle. This provides real-time insights that allow for streamlined product development that is less prone to overall risk, rework, or recalls. Overall, Jama Connect offers more automation, visibility, collaboration, customization, and scalability than a traditional traceability matrix — and provides a more modern and efficient way of managing requirements in complex product, system, and software development.

Note: This article was drafted with the aid of AI. Additional content, edits for accuracy, and industry expertise by Karrie Sundbom and Mario Maldari.



AECO

In this blog series, we’ll recap the “Six Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry and How to Solve Them with Jama Connect®” whitepaper. To read part 1 of this two-part series, click HERE.


Solving Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry with Jama Connect®: Part 2

Six Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry and How to Solve Them with Jama Connect®

Six Key AECO Challenges Continued…

CHALLENGE #4 – Inability to Track and Manage Owner Changes

The AECO industry is a complex and dynamic industry that involves many stakeholders and moving parts. One critical aspect of managing AECO projects is conducting change impact analysis, which involves evaluating the potential effects of proposed changes to a project’s design, scope, schedule, and cost. The inability to effectively track and manage change can lead to significant negative impacts on project outcomes.

For example, without a proper analysis, changes may be implemented without understanding their full downstream consequences, resulting in unexpected delays, cost overruns, safety hazards, and quality issues. Furthermore, failing to conduct a change impact analysis can undermine project team collaboration, trust, and communication, leading to increased conflicts and disputes. Therefore, incorporating change impact analysis into AECO projects is crucial for ensuring project success and minimizing risks.

A real-world example might be: One contractor decides to make a window larger. This change might impact the structure of the building, air conditioning needs, electrical placement, the roof, and even violate building codes. While a simple change like this may seem insignificant, it will often have ripple effects throughout the development process. Without proper visibility, collaboration, and consideration, this can result in rework, delays, and increased costs across the board.

Jama Connect is a powerful tool that can help the AECO industry effectively manage change by providing a centralized platform for capturing, tracking, and analyzing changes across the end-to-end project development lifecycle. Jama Connect’s change management capabilities enable project teams to quickly assess the impact of proposed changes and make informed decisions about their implementation. With Jama Connect, project teams can easily collaborate and communicate about change requests, ensuring that all stakeholders are aware of the potential impacts and can provide input. Additionally, Jama Connect provides real-time visibility into the status of changes, allowing project teams to proactively identify and address any issues that arise. This level of transparency and control helps to reduce the risk of errors and delays, ensuring that projects are delivered on time and within budget. Overall, Jama Connect is an essential tool for the AECO industry to effectively manage change and ensure project success.


RELATED: Best Practices Guide for Writing Requirements


CHALLENGE #5 – Inefficient Design Review Process

In the AECO industry, design review processes are critical to ensure the quality and compliance of construction plans. However, inefficient design review processes can lead to significant delays, cost overruns, and mistakes in the final product. One common issue is the lack of clear communication and coordination between different stakeholders, such as architects, engineers, contractors, and clients. This can result in conflicting feedback, revisions, and approvals that prolong the design review process. Additionally, outdated or manual review methods, such as paper-based markups and physical meetings, can further slow down the process and increase the likelihood of errors. Overall, improving the efficiency of design review processes in the AECO industry requires better collaboration tools, streamlined workflows, and clear communication channels.

Jama Connect can play a significant role in streamlining the design review (and design verification) process in the AECO industry by enabling collaboration, improving communication, and reducing errors. It is required that engineering firms provide specific validation of how their proposed design meets the original owner’s requirements, and with Jama Connect, that process is simple.

Here are some specific ways Jama Connect can help with the design review process:

  • Centralized platform for design review: Jama Connect provides a centralized platform for design review, allowing all stakeholders to access the latest designs, review comments, and feedback in real-time. This eliminates the need for stakeholders to send design documents back and forth via email, which can be time-consuming and result in errors.
  • Collaborative review process: Jama Connect enables collaboration between all stakeholders during the design review process and documents the history of every change, who made it, and why. Stakeholders can provide feedback and comments on designs, and other stakeholders can respond to those comments, creating a collaborative feedback loop. The ability to trace designs back to the original requirements is a key component of moving smoothly through the design process, and with Live Traceability™ within Jama Connect, this traceability is automatically created as you go through the design and review process and gives an owner a complete record for their project. This helps to ensure that all stakeholders are on the same page, reducing errors and misunderstandings.
  • Version control and tracking: Jama Connect provides version control and tracking features that allow stakeholders to see the history of design changes, track who made each change, and ensure that everyone is working with the latest version of the design. This helps to avoid errors that can occur when stakeholders work with outdated or incorrect design documents.
  • Approval workflows: Jama Connect allows organizations to define and enforce approval workflows for design reviews. This ensures that designs are reviewed and approved by the appropriate stakeholders before being finalized, reducing the risk of errors and ensuring compliance with industry standards and regulations.
  • Reporting and analytics: Jama Connect provides reporting and analytics features that allow organizations to track the progress of design reviews, identify bottlenecks, and analyze review data. This helps organizations to continuously improve their design review process, reducing errors and improving efficiency over time.

AECO Projects Must Move Quickly While Balancing Budget and Quality:
Learn More: Buyer’s Guide- Selecting a Requirements Management and Traceability Solution eBook


CHALLENGE #6 – Lack of Accountability

Accountability is essential in the AECO industry, as it ensures that all stakeholders are responsible for their actions and decisions. This includes ensuring that project requirements are met, timelines are followed, and budgets are managed effectively.

Jama Connect can help solve this challenge by providing a platform for managing project requirements. This includes defining responsibilities and tracking progress against milestones. This helps ensure that all stakeholders are accountable for their actions and decisions.

Conclusion

In conclusion, while the AECO industry is facing many unique challenges, there is also an opportunity for process improvement that will allow stakeholders to reduce delays, project risk, and overspending. Jama Connect can help facilitate collaboration, prevent scope creep, reuse requirements, designs, knowledge, and components, and improve the design review process. By leveraging Jama Connect, AECO organizations can overcome many of the challenges they face and meet the evolving needs of clients and society while navigating a rapidly changing business landscape.

Click HERE for part 1 of this series and HERE to download the entire whitepaper,
“Six Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry and How to Solve Them with Jama Connect®

Want to Get Your Budget Back and Simplify Your AECO Projects?
Get Started By Trying Out Our Award-Winning Requirements Management Software Platform!




Solving Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry with Jama Connect®: Part 1

Six Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry and How to Solve Them with Jama Connect®

Introduction

The AECO (Architecture, Engineering, Construction, and Operations) industry faces various challenges and opportunities as it adapts to changing market trends and technological advancements.

AECO is the largest industry in the world, according to McKinsey, and makes up 13% of global GDP. The industry has seen a steady increase in demand for sustainable and energy-efficient designs, as well as for innovative building materials and construction techniques. Additionally, digital technologies such as Building Information Modeling (BIM), cloud-based collaboration, and requirements management tools have become more prevalent, enabling better communication and project management across different stakeholders.

However, the industry is also grappling with issues such as a shortage of skilled labor, rising material costs, and increasing regulatory requirements. As such, the AECO industry is undergoing a transformation as it seeks to meet the evolving needs of clients and society while navigating a rapidly changing business landscape.

One of the challenges in adapting to changes in AECO is that a typical project involves many stakeholders, including architects, engineers, contractors, owners, and regulators, often with different business models and goals. These stakeholders must work together to design, build, and maintain the built environment, but structural and contractual agreements often make it difficult to communicate with each other to deliver projects on time and budget.

In this whitepaper, we will explore some of these challenges and how a requirements management solution like Jama Connect® can help solve them.


RELATED: How to Integrate Jama Connect® with Microsoft Excel Using the Jama Connect Interchange™ (JCI)-Excel Functions Module


Six Key Challenges

CHALLENGE #1 – Lack of Collaboration and Poor Communication

Collaboration and communication are essential in the AECO industry but can be difficult to achieve. With dozens, if not hundreds of individual firms involved in any given project, each stakeholder brings their own expertise, agenda, and perspective, which can lead to misunderstandings and communication breakdowns. This can result in rework, delays, and increased costs throughout the development process.

A requirements management solution like Jama Connect can help facilitate collaboration by providing a central repository for all project requirements. For example, the owner could post their original requirements into a Jama Connect environment allowing all stakeholders, project managers, and contracted firms access to the same information to jointly verify that their work is aligned to achieve project goals. Using Jama Connect to manage this process goes beyond just document sharing, by creating a record of verification that the requirements are met, or if there are changes, that those modifications are also tracked and validated back to the source.

CHALLENGE #2 – Scope Creep

Scope creep is a common issue in the AECO industry, where projects can become more complex and costly than initially planned. Scope creep occurs when project requirements expand beyond the original scope, leading to additional work, time, and costs that were not anticipated in the project plan. Broadly, this is referred to as the ‘change order’ process and results in project delays in addition to cost increases. Sometimes the changes result from a lack of clear communication and project management, where changes or additions to the project scope are not properly documented or approved. Additionally, external factors such as changes in regulations, client requirements, or unexpected site conditions can also contribute to scope creep. Managing scope creep in the AECO industry requires a proactive approach, including regular communication and documentation of changes, proper project planning and risk management, and stakeholder engagement to ensure that project expectations are aligned with project scope.

Jama Connect can help prevent scope creep by providing a platform for managing project requirements. This includes defining the scope of the project and ensuring that all stakeholders are aligned on project objectives and their plans are validated against the owner’s project requirements documents. Any changes to the project scope can be easily tracked and managed — in real time — within Jama Connect.


RELATED: Extending Live Traceability™ to Project Lifecycle Management (PLM) with Jama Connect®


CHALLENGE #3: – Redoing Similar Work Across Multiple Projects

Requirements reuse is a practice in the AECO industry that involves leveraging existing design requirements to develop new projects. By reusing requirements, designers and engineers can save time and resources while improving project quality and consistency. This can be particularly useful for large-scale projects or projects with similar design requirements, where requirements can be adapted and refined to fit new project contexts. Reuse of requirements can also help to ensure compliance with regulations and standards, as existing requirements can be used as a baseline for new projects.

While reuse can save an incredible about of time and money for all stakeholders involved, there needs to be an upfront investment in both tools and processes. To facilitate reuse of requirements, effective requirements management processes and tools are needed to capture, store, and manage requirements. Additionally, collaboration across different stakeholders is important to ensure that requirements are applicable and relevant to new projects.

Jama Connect is a powerful platform that can help the AECO industry with reuse in a number of ways.

Here are some examples:

  • Requirements reuse: In the AECO industry, many projects have similar requirements. By using Jama Connect, organizations can create reusable templates and structures to reuse requirements across projects, saving time and effort. This can be especially useful for organizations that work on multiple projects simultaneously or for those that have a large number of projects with similar requirements.
  • Design reuse: Just like with requirements, many projects in the AECO industry require similar designs. Imagine a wind farm project for example, where each of the turbine structures are identical in design. By reusing designs, organizations can reduce design time, improve consistency, and minimize errors. Jama Connect allows organizations to easily store and retrieve design artifacts, making it easy to reuse them across projects.
  • Knowledge reuse: Over time, organizations in the AECO industry accumulate a lot of knowledge about their projects, including best practices and lessons learned from experience. Jama Connect provides a central repository for this knowledge, making it easy to share and reuse across projects.
  • Process reuse: Many organizations in the AECO industry have well-established processes for managing projects, for example processes like issue resolution and design-change tracking. By using Jama Connect, organizations can capture these processes and reuse them across projects, improving consistency and efficiency.
Stay tuned for part 2 of this two-part series. Click HERE to download the entire whitepaper,
“Six Key Challenges in the Architecture, Engineering, Construction, and Operations (AECO) Industry and How to Solve Them with Jama Connect®


REST API


Jama Software® Announces Massive Adoption of Jama Connect®‘s API

Cloud API service requests exceed 600 million per month

Jama Software®, the industry-leading requirements management and traceability solution provider, announced that usage of its market-leading REST API is now exceeding 600 million cloud service requests per month. This rapid adoption reflects the rapid adoption of Jama Connect® as organizations achieve Live Traceability™ across best-of-breed tools within the engineering function.

Live Traceability throughout the engineering process requires automated synchronization across best-of-breed tools. Jama Connect’s REST API is the most mature, secure, and scalable API for requirements management and traceability solutions:

  • The only SOC 2 Type 2 certified REST API in the requirements management space.
  • The only multi-tenant, cloud-architected requirements management software that can handle the scale of over 600 million API cloud service requests per month and over 100,000 trailing 90-day active users.
  • The richest REST API with over 200 separate API functions spanning all objects, including; projects, requirements, baselines, comments, test plans, tags, attachments, and more.

“Live Traceability requires automated synchronization across best-of-breed tools, and our REST API is the only API that can enable Live Traceability at scale.”

Josh Turpen, Chief Product Officer at Jama Software

In addition to enabling Live Traceability, Jama Connect’s REST API also enables customers to gather test results from disparate tools, ensure that the entire organization is working from a single source of truth, and communicate across their supply chains in an automated fashion.


To Learn More, Visit: Getting Started with Jama Connect REST API


About Jama Software

Jama Software is focused on maximizing innovation success. Numerous firsts for humanity in fields such as fuel cells, electrification, space, autonomous vehicles, surgical robotics, and more all rely on Jama Connect® to minimize the risk of product failure, delays, cost overruns, compliance gaps, defects, and rework. Jama Connect uniquely creates Live Traceability™ through siloed development, test, and risk activities to provide end-to-end compliance, risk mitigation, and process improvement. Our rapidly growing customer base of more than 12.5 million users across 30 countries spans the automotive, medical device, life sciences, semiconductor, aerospace & defense, industrial manufacturing, financial services, and insurance industries. For more information about Jama Connect services, please visit www.jamasoftware.com


Read the official press release here:
Jama Software® Announces Massive Adoption of Jama Connect®’s API


What is DOORS



TrustRadius


Jama Connect® Earns Top Marks on TrustRadius

Thank You to Our Customers!

Jama Connect® has earned its position as an outstanding solution on TrustRadius, solidifying its reputation as a leading platform for requirements, risk, and test management. With its intuitive interface, robust features, and exceptional customer support, Jama Connect has consistently earned praise from users for its ease of use, reliability, and reliability. Organizations across various industries have highlighted its ability to streamline collaboration, improve traceability, and enhance overall product development processes.

Reviewers have praised Jama Connect for its scalability, configurability, and advanced reporting capabilities, which have made it a top choice for businesses of all sizes. This recognition underlines Jama Connect’s unwavering commitment to delivering a reliable and efficient solution that empowers teams to drive innovation and achieve exceptional results.

Visit the full report to see why customers love using Jama Connect for product, systems, and software development.


RELATED: Buyer’s Guide: Selecting a Requirements Management and Traceability Solution


As the leading provider of requirements management software, Jama Software® is proud to receive recognition for our services. We value the feedback from our clients who have used Jama Connect and are committed to providing them with the best support, resources, and expertise to help them succeed.

I’m VERY likely to recommend Jama to a colleague because they’d struggle to get anything done without using it! That’s the tool we’re using for Req Management now, so I recommend to my colleagues that they get amongst it!”

-From review collected and hosted on TrustRadius – Ian Webb, Systems Engineering Technical Writer – Enphase EnergyElectrical & Electronic Manufacturing

TrustRadius

Jama Connect is a solid framework for systems engineering that can integrate many design processes into a single tool. At a fundamental level, it is a great tool for handling requirements management and traceability but offers a variety of other features such as risk management and verification and validation. For someone who works in the medical device industry, the tool also complies with CFR requirements for electronic approvals and can be validated for such use.”

-From review collected and hosted on TrustRadius – User in Engineering, Medical Devices Company

TrustRadius

From all of us at Jama Software to all of you, thank you!

 



Jama Connect Interchange


How to Integrate Jama Connect® with Microsoft Excel Using the Jama Connect Interchange™ (JCI)-Excel Functions Module

Everyday, the world’s most innovative companies use Jama Connect® to build life-changing products, software, and services. Jama Connect includes powerful requirements traceability, risk management, and test management capabilities to help our customers get their products to market faster.

Jama Connect also includes numerous configuration settings — which our customers use to adapt the tool to their organization’s engineering practices and achieve compliance to industry-specific standards and regulations.

On top of this wide range of options, though, many of our users still require an additional level of customization to really make Jama Connect their own – this just usually requires an adjustment to the workflow logic here, or an additional calculation there.

Other requirements management tools achieve this extra level of configuration using JavaScript extensions or complex propriety scripting languages that can take literally years to master (with the frustrations taking years off your life in the process!)

Jama Software® has solved this same problem using the much more accessible, universal language of Microsoft® Excel formulas. Our powerful Excel Functions add-on module can be purchased with our integration platform, Jama Connect Interchange™ (JCI).


RELATED DEMO: Jama Connect® Features in Five: Jama Connect Interchange™


How does the JCI-Excel Functions module work?

Imagine your average Excel workbook, where formulas are applied to certain cells to perform calculations or logically transform data. Now, imagine if you could apply those same formulas directly to fields in Jama Connect. Pretty powerful, right?

You can think of the JCI-Excel Functions as a calculator that runs in the background while you work in Jama Connect. As you enter fields in Jama Connect, field values are automatically sent to an Excel template where formulas are set up. Formulas are run instantly, and the resulting values are sent back to Jama Connect. Your Jama Connect users don’t ever need to open an Excel workbook or even have a license to Excel to benefit from this automation.

Sample JCI-Excel Functions workstreams

Last month we shared our most popular workstreams for streamlined software development using Jama Connect and Jira.

In today’s blog, I’d like to do the same for JCI-Excel Functions. As the Product Manager for JCI, I’ve heard from numerous customers who have used this module to achieve time-saving workflow automation, streamline manual data entry, and automate complex calculations.

Keep in mind that this is not an exhaustive list! If your team has another workstream they’re loving, I’d encourage you to post about it in the JCI Sub-Community for others to see.


RELATED: How to Use Requirements Management as an Anchor to Establish Live Traceability in Systems Engineering


Example #1 – Complex Calculations (Defect Prioritization Scenario)

Many projects incorporate complex and proprietary formulas or calculations that take years for a company to perfect. Rather than perform these calculations offline and input the results in Jama Connect manually, you can use JCI to map Jama Connect fields directly to an Excel workbook and watch the same calculations run automatically.

In this simple risk calculation, a Defect’s overall Risk Priority Number (RPN) is calculated using the following formula:
RPN = (A+B)*(C+D+E), where each variable is taken from a field in the item.

With JCI, fields A through E are mapped to the Excel template, where the formula is run. The resulting RPN is then automatically populated in the Calculated RPN field.

Example #2 – Field Inheritance Across Items (Library Scenario)

This flexible workstream allows you to share fields or values across related items. For example, you could maintain a standard or approved “library” of items in one part of the system, and automatically populate values from that library to other items as needed.

With this workstream, users no longer need to copy values across items manually. Instead, values flow automatically, and any time a field in the “source” item is updated, the “target” items automatically receive the update as well.

In this risk analysis example, values from a standard library of hazards and harms are automatically populated to an individual risk analysis item.

Example #3 – Logical Transformations (Software Development Scenario)

Use this example to update fields automatically when certain conditions are met. In the following software development scenario, we’ve set up a rule stating that when all downstream user stories have a status of Development Done, the upstream software requirement in Jama Connect should also be marked as Done. This workstream simplifies life for the product manager by allowing them to see at a glance when a feature is complete.

Conclusion

Jama Connect Interchange is an integration platform that seamlessly connects Jama Connect with other best-of-breed tools, like Microsoft Excel, and Atlassian Jira.

JCI is built, supported, and continuously enhanced by dedicated teams at Jama Software. This means that JCI is deeply integrated with Jama Connect configurations and workflows, providing you with a smart and seamless sync.

JCI supports both cloud-based and self-hosted instances of Jama Connect. If you’d like to learn more about Jama Connect in general or start a free trial of our #1-rated requirements management platform, please click here. If you’re already a Jama Connect customer and would like to find out whether JCI would be a good fit for your organization, please contact your Customer Success Manager.


FREE DEMO: Click Here to Request a Demo of Jama Connect Interchange™



Live Traceability

This Features in Five video demonstrates how Jama Connect helps maintain Live Traceability across applications.


Jama Connect® Features in Five: Live Traceability™

Learn how you can supercharge your systems development process! In this blog series, we’re pulling back the curtains to give you a look at a few of the powerful features in Jama Connect®… in under five minutes.

In this Features in Five video, Jama Software® subject matter experts Neil Bjorklund, Sales Manager – Medical, and Steven Pink, Senior Solutions Architect, will demonstrate how Jama Connect helps maintain Live Traceability™ across applications.


VIDEO TRANSCRIPT:

Neil Bjorklund: So, what we wanted to do today is give you all a quick snapshot of what it looks like for Jama to be integrated across systems, and showing how Jama helps you all maintain Live Traceability across applications or what we call a connected digital thread.

As part of our demonstration today, we’re going to show you what that looks like across your V-Model here of system engineering, in which case we’re going to actually make a change from a Windchill item, so an item over in Windchill, making a change to a specification or a part over there. We’re going to trace from that Windchill item over to Jama at the subsystem design output level. So, you’ll be able to see those items synchronized across those applications. We’re then going to perform an Impact Analysis within Jama. So, that’s going to allow you to then visualize, if you were to make a change to a Windchill item, what impact does that have across your full system.

So, we’re going to then see that change cascade up to a system requirement level here. We’re going to then make a change to that system requirement, and Jama is going to have the suspect linking mechanism to be able to then identify what all items downstream could be impacted by this change. In which case, we’re going to show an example where a software requirement must be changed. We’re going to make that change, and we’re going to show that change and then cascade over into Jira.


RELATED: How to Use Requirements Management as an Anchor to Establish Live Traceability in Systems Engineering


Bjorklund: So, the idea here is that, by managing Live Traceability within Jama, maintaining Jama as integrated with other applications or ecosystems, you’re going to be able to visualize that connected digital thread and see changes take place from Windchill into Jama, over then into Jira.

Now, one thing to remember, this integration is very flexible. So, we can integrate from Jama over to Windchill PLM parts, problem reports, change requests, requirements, different folder structures, and so forth. Within the software side, obviously, we’re integrating with Jira, that’s very flexible. But, we can also integrate with other applications like Azure DevOps, PFS, things like that. So, again, this is just one example, just to highlight the flexibility here of Jama, and this workflow.

Steven Pink: Okay, so thank you, Neil, for that. Now, we’re taking a look at a spec here in Windchill. This is what we’re going to be making a change to today. I’m going to go ahead and make an edit to this, and this is what’s going to synchronize across into Jama. So, I’m going to update the description, update the specification within Windchill. We’ve now saved this update within Windchill. We’ve updated the description here, and this is going to synchronize across to Jama in real-time. So, I’m going to switch over to this speck from Windchill that has synced into Jama. I’ll refresh it here, and we’ll see the description has now updated in real-time. If we want to understand the impact this change could potentially have, we’ll use Jama’s Impact Analysis feature. This will allow us to look up and downstream from this specification.

So, based on those relationship rules Neil showed earlier in that Live Traceability in Jama, we can look from a spec, one of these subsystem design outputs, all the way upstream through hardware and software to those higher level system requirements to understand what the potential impact could be. So, I’ll go ahead and run this Impact Analysis. We’ll take a look, and it’ll find everything that’s directly and indirectly connected to this specification from Windchill.


RELATED: How to Use Requirements Management as an Anchor to Establish Live Traceability in Systems Engineering


Pink: We can see hardware requirements, the system requirement, a high-level user need, and maybe the system requirement is impacted by our change. We can click into the system requirement. If we need to make an update to this impacted system requirement, we can come in and modify the description here.

When I save this system requirement, Jama is actually going to identify everything downstream that has been impacted through the Suspect Link feature. So now, we’re flagging these downstream hardware and software requirements that could be impacted by the change we made to this higher-level system requirement. If there’s been an impact to this software requirement, for example, I can click into this software requirement. I can then edit the description to reflect the necessary updates based on that impact assessment.

And now, when I save this software requirement, this has been synchronized with Jira, so we’ll be able to see the updated software requirement updated into Jira in real-time. So, I’m going to switch over to Jira here, and this is that software requirement that we’re synchronizing. And now, we can see the update to that description has synced across to Jira in real-time, providing us Live Traceability between specifications in Windchill, through our requirements in Jama, all the way down through the lower level software and development work occurring in Jira.


RELATED: G2 Again Names Jama Connect® the Standout Leader in Requirements Management Software in their Spring 2023 Grid® Report


Bjorklund: Okay, thank you, Steven, for that. So, this is a quick recap. So, we’ve gone from a item in Windchill. We made that change within Windchill. That change was automatically reflected over into Jama. We then performed Impact Analysis within Jama, made changes across our system-level requirements, which then cascaded changes down into our software requirements over in Jira. Now, again, this is just one example where we’ve taken a change, we’ve integrated Jama with different applications, but Jama has the ability to integrate with all the applications across your product development lifecycle, across that V-Model system engineering.

So, if there are groups that are maybe not using Jira, you’d certainly have the ability to then manage change across different applications and, Jama serves as that central system to be able to manage Live Traceability and maintain that connected digital thread. Thank you.


To view more Jama Connect Features in Five topics, visit: Jama Connect Features in Five Video Series



Redux

“What I cannot create, I do not understand.”

Richard Feynman

Redux is pretty simple. You have action creators, actions, reducers, and a store. What’s not so simple is figuring out how to put everything together in the best or most “correct” way. In this blog, we begin by explaining the motivation behind using Redux and highlight its benefits, such as predictable state management and improved application performance. It then delves into the core concepts of Redux, including actions, reducers, and the store, providing a step-by-step guide on how to implement Redux in a JavaScript application. We will emphasize the importance of understanding Redux’s underlying principles and showcases code examples to illustrate its usage.

To rewrite Redux, we used a wonderful article by Lin Clark as a reference point, as well as the Redux codebase itself, and of course, the Redux docs.

You may note we’re using traditional pre-ES6 Javascript throughout this article. It’s because everyone who knows Javascript knows pre-ES6 JS, and we want to make sure we don’t lose anyone because of syntax unfamiliarity.

The Store

Redux, as is the same with any data layer, starts with a place to store information. Redux, by definition of the first principle of Redux, is a singular shared data store, described by its documentation as a “Single source of truth”, so we’ll start by making the store a singleton:

var store;

function getInstance() { 
 if (!store) store = createStore();
 return store;
}

function createStore() { 
 return {}; 
}

module.exports = getInstance();

The dispatcher

The next principle is that the state of the store can only change in one way: through the dispatching of actions. So let’s go ahead and write a dispatcher.

However, in order to update state in this dispatcher, we’re going to have to have state to begin with, so let’s create a simple object that contains our current state.

function createStore() { 
 var currentState = {}; 
}

Also, to dispatch an action, we need a reducer to dispatch it to. Let’s create a default one for now. A reducer receives the current state and an action and then returns a new version of the state based on what the action dictates:

function createStore() { 
 var currentState = {}; 

 var currentReducer = function(state, action) { 
  return state; 
 } 
}

This is just a default function to keep the app from crashing until we formally assign reducers, so we’re going to go ahead and just return the state as is. Essentially a “noop”.

The store is going to need a way to notify interested parties that an update has been dispatched, so let’s create an array to house subscribers:

function createStore() { 
 var currentState = {}; 
 
 var currentReducer = function(state, action) { 
  return state; 
 } 
 
 var subscribers = []; 
}

Cool! OK, now we can finally put that dispatcher together. As we said above, actions are handed to reducers along with state, and we get a new state back from the reducer. If we want to retain the original state before the change for comparison purposes, it probably makes sense to temporarily store it.

Since an action is dispatched, we can safely assume the parameter a dispatcher receives is an action.

function createStore() { 
 var currentState = {}; 

 var currentReducer = function(state, action) { 
  return state; 
 } 

 var subscribers = [];

 function dispatch(action) {
  var prevState = currentState;
 }

 return {
  dispatch: dispatch
 };
}

We also have to expose the dispatch function so it can actually be used when the store is imported. Kind of important.

So, we’ve created a reference to the old state. We now have a choice: we could either leave it to reducers to copy the state and return it, or we can do it for them. Since receiving a changed copy of the current state is part of the philosophical basis of Redux, we’re going to go ahead and just hand the reducers a copy to begin with.

function createStore() { 
 var currentState = {}; 

 var currentReducer = function(state, action) { 
  return state; 
 } 

 var subscribers = [];

 function dispatch(action) {
  var prevState = currentState;
  currentState = currentReducer(cloneDeep(currentState), action);
 }

 return {
  dispatch: dispatch
 };
}

We hand a copy of the current state and the action to the currentReducer, which uses the action to figure out what to do with the state. What is returned is a changed version of the copied state, which we then use to update the state. Also, we’re using a generic cloneDeepimplementation (in this case, we used lodash’s) to handle copying the state completely. Simply using Object.assign wouldn’t be suitable because it retains references to objects contained by the base level object properties.

Now that we have this updated state, we need to alert any part of the app that cares. That’s where the subscribers come in. We simply call to each subscribing function and hand them the current state and also the previous state, in case whoever’s subscribed wants to do delta comparisons:

function createStore() { 
 var currentState = {}; 

 var currentReducer = function(state, action) { 
  return state; 
 } 

 var subscribers = []; 

 function dispatch(action) {
  var prevState = currentState;
  currentState = currentReducer(cloneDeep(currentState), action);
  subscribers.forEach(function(subscriber){
   subscriber(currentState, prevState);
  });
 }

 return {
  dispatch: dispatch
 };
}

Of course, none of this really does any good with just that default noop reducer. What we need is the ability to add reducers, as well.


RELATED: New Research Findings: The Impact of Live Traceability™ on the Digital Thread


Adding Reducers

In order to develop an appropriate reducer-adding API, let’s revisit what a reducer is, and how we might expect reducers to be used.

In the Three Principles section of Redux’s documentation, we can find this philosophy:

“To specify how the state tree is transformed by actions, you write pure reducers.”

So what we want to accommodate is something that looks like a state tree, but where the properties of the state are assigned functions that purely change their state.

{ 
 stateProperty1: function(state, action) { 
  // does something with state and then returns it
 }, 
 stateProperty2: function(state, action) { 
  // same 
 }, ... 
}

Yeah, that looks about right. We want to take this state tree object and run each of its reducer functions every time an action is dispatched.

We have currentReducer defined in the scope, so let’s just create a new function and assign it to that variable. This function will take the pure reducers we passed to it in the state tree object, and run each one, returning the outcome of the function to the key it was assigned.

function createStore() { 
 var currentReducer = function(state, action) { 
  return state; 
 } ...

 function addReducers(reducers) {
  currentReducer = function(state, action) {
   var cumulativeState = {};
   
   for (key in reducers) {
    cumulativeState[key] = reducers[key](state[key], action);
   }
  
   return cumulativeState;
  }
 }
}

Something to note here: we’re only ever handing a subsection of the state to each reducer, keyed from its associated property name. This helps simplify the reducer API and also keeps us from accidentally changing other state areas of the global state. Your reducers should only be concerned with their own particular state, but that doesn’t preclude your reducers from taking advantage of other properties in the store.

As an example, think of a list of data, let’s say with a name “todoItems”. Now consider ways you might sort that data: by completed tasks, by date created, etc. You can store the way you sort that data into separate reducers (byCompleted and byCreated, for example) that contain ordered lists of IDs from the todoItems data, and associate them when you go to show them in the UI. Using this model, you can even reuse the byCreated property for other types of data aside from todoItems! This is definitely a pattern recommended in the Redux docs.

Now, this is fine if we add just one single set of reducers to the store, but in an app of any substantive size, that simply won’t be the case. So we should be able to accommodate different portions of the app adding their own reducers. And we should also try to be performant about it; that is, we shouldn’t run the same reducers twice.

// State tree 1 
{ 
 visible: function(state, action) { 
  // Manage visibility state 
 } ... 
}
// State tree 2
{ 
 visible: function(state, action) { 
  // Manage visibility state (should be the same function as above) 
 } ... 
}

In the above example, you might imagine two separate UI components having, say, a visibility reducer that manages whether something can be seen or not. Why run that same exact reducer twice? The answer is “that would be silly”. We should make sure that we collapse by key name for performance reasons, since all reducers are run each time an action is dispatched.

So keeping in mind these two important factors — ability to ad-hoc add reducers and not adding repetitive reducers — we arrive to the conclusion that we should add another scoped variable that houses all reducers added to date.

... 
function createStore() { 
 ... 
 var currentReducerSet = {};

 function addReducers(reducers) {
  currentReducerSet = Object.assign(currentReducerSet, reducers);

  currentReducer = function(state, action) {
   var cumulativeState = {};

   for (key in currentReducerSet) {
    cumulativeState[key] = currentReducerSet[key](state[key], action);
   }
 
   return cumulativeState;
  }

 }
 ...
}
...

The var currentReducerSet is combined with whatever reducers are passed, and duplicate keys are collapsed. We needn’t worry about “losing” a reducer because two reducers will both be the same if they have the same key name. Why is this?

To reiterate, a state tree is a set of key-associated pure reducer functions. A state tree property and a reducer have a 1:1 relationship. There should never be two different reducer functions associated with the same key.

This should hopefully illuminate for you exactly what is expected of reducers: to be a sort of behavioral definition of a specific property. If we have a “loading” property, what we’re saying with my reducer is that “this loading property should respond to this set specific actions in these particular ways”. We can either directly specify whether something is loading — think action name “START_LOADING — or we can use it to increment the number of things that are loading by having it respond to action names of actions that we know are asynchronous, such as for instance LOAD_REMOTE_ITEMS_BEGIN” and “LOAD_REMOTE_ITEMS_END”.

Let’s fulfill a few more requirements of this API. We need to be able to add and remove subscribers. Easy:

function createStore() { 
 var subscribers = []; 
 ... 

 function subscribe(fn) { 
  subscribers.push(fn); 
 }

 function unsubscribe(fn) {
  subscribers.splice(subscribers.indexOf(fn), 1);
 }

 return {
  ...
  subscribe: subscribe,
  unsubscribe: unsubscribe
 };
}

And we need to be able to provide the state when someone asks for it. And we should provide it in a safe way, so we’re going to only provide a copy of it. As above, we’re using a cloneDeep function to handle this so someone can’t accidentally mutate the original state, because in Javascript, as we know, if someone changes the value of a reference in the state object, it will change the store state.

function createStore() { 
 ... 

 function getState() { 
  return cloneDeep(currentState); 
 }

 return {
  ...
  getState: getState
 };
}

And that’s it for creating Redux! At this point, you should have everything you need to be able to have your app handle actions and mutate state in a stable way, the core fundamental ideas behind Redux.

Let’s take a look at the whole thing (with the lodash library):

var _ = require('lodash'); 
var globalStore;

function getInstance(){ 
 if (!globalStore) globalStore = createStore();
 return globalStore;
}

function createStore() { 
 var currentState = {}; 
 var subscribers = []; 
 var currentReducerSet = {}; 
 currentReducer = function(state, action) { 
  return state; 
 };
 
 function dispatch(action) {
  var prevState = currentState;
  currentState = currentReducer(_.cloneDeep(currentState), action);
  subscribers.forEach(function(subscriber){
   subscriber(currentState, prevState);
  });
 }
 
 function addReducers(reducers) {
  currentReducerSet = _.assign(currentReducerSet, reducers);
  currentReducer = function(state, action) {
   var ret = {};
   _.each(currentReducerSet, function(reducer, key) {
    ret[key] = reducer(state[key], action);
   });
   return ret;
  };
 }
	
 function subscribe(fn) {
  subscribers.push(fn);
 }
	
 function unsubscribe(fn) {
  subscribers.splice(subscribers.indexOf(fn), 1);
 }
	
 function getState() {
  return _.cloneDeep(currentState);
 }
	
 return {
  addReducers,
  dispatch,
  subscribe,
  unsubscribe,
  getState
 };
}
module.exports = getInstance();

So what did we learn by rewriting Redux?

We learned a few valuable things in this experience:

  1. We must protect and stabilize the state of the store. The only way a user should be able to mutate state is through actions.
  2. Reducers are pure functions in a state tree. Your app’s state properties are each represented by a function that provides updates to their state. Each reducer is unique to each state property and vice versa.
  3. The store is singular and contains the entire state of the app. When we use it this way, we can track each and every change to the state of the app.
  4. Reducers can be thought of as behavioral definitions of state tree properties.

RELATED: Leading Quantum Computing Company, IonQ, Selects Jama Connect® to Decrease Review Cycles, Reduce Rework


Bonus section: a React adapter

Having the store is nice, but you’re probably going to want to use it with a framework. React is an obvious choice, as Redux was created to implement Flux, a core principle data architecture of React. So let’s do that too!

You know what would be cool? Making it a higher-order component, or HOC as you’ll sometimes see them called. We pass an HOC a component, and it creates a new component out of it. And it is also able to be infinitely nested, that is, HOCs should be able to be nested within each other and still function appropriately. So let’s start with that basis:

Note: Going to switch to ES6 now, because it provides us with class extension, which we’ll need to be able to extend React.Component.

import React from 'react';
export default function StoreContainer(Component, reducers) { 
	return class extends React.Component { }
}

When we use StoreContainer, we pass in the Component class — either created with React.createClass or React.Component — as the first parameter, and then a reducer state tree like the one we created up above:

// Example of StoreContainer usage 
import StoreContainer from 'StoreContainer'; 
import { myReducer1, myReducer2 } from 'MyReducers';

StoreContainer(MyComponent, { 
 myReducer1, 
 myReducer2
});

Cool. So now we have a class being created and receiving the original component class and an object containing property-mapped reducers.

So, in order to actually make this component work, we’re going to have to do a few bookkeeping tasks:

  1. Get the initial store state
  2. Bind a subscriber to the component’s setState method
  3. Add the reducers to the store

We can bootstrap these tasks in the constructor lifecycle method of the Component. So let’s start with getting the initial state.

... 
export default function StoreContainer(Component, reducers) { 
 return class extends React.Component { 
 
  constructor() { 
   super(props); 
   // We have to call this to create the initial React 
   // component and get a `this` value to work with 
   this.state = store.getState(); 
  } 

 } 
}

Next, we want to subscribe the component’s setState method to the store. This makes the most sense because setting state on the component will then set off the top-down changes the component will broadcast, as we’d want in the Flux model.

We can’t, however, simply send this.setState to the subscribe method of the store — their parameters don’t line up. The store wants to send new and old state, and the setState method only accepts a function as the second parameter.

So to solve this, we’ll just create a marshalling function to handle it:

... 
import store from './Store';

function subscriber(currentState, previousState) { 
 this.setState(currentState); 
}

export default function StoreContainer(Component, reducers) { 
 return class extends React.Component { 

  constructor() { 
   ... 
   this.instSubscriber = subscriber.bind(this); 
   store.subscribe(this.instSubscriber);
  }

  componentWillUnmount() {
   store.unsubscribe(this.instSubscriber);
  }
 }
}
...

Since the store is a singleton, we can just import that in and call on its API directly.

Why do we have to keep the bound subscriber around? Because binding it returns a new function. When unmounting the component, we want to be able to unsubscribe to keep things clean. We know that the store merely looks for the function reference in its internal subscribers array and removes it, so we need to make sure we keep that reference around so we can get it back when we need to identify and remove it.

One last thing to do in the constructor: add the reducers. This is as simple as passing what we received to the HOC into the store.addReducers method:

... 
export default function StoreContainer(Component, reducers) { 
 return class extends React.Component { 
  ... 
  constructor() { 
   ... 
   store.addReducers(reducers); 
  } 
  ... 
 } 
}
...

So now we’re ready to provide the rendering of the component. This is the essence of HOCs. We take the Component we received and render it within the HOC, imbuing it with whatever properties the HOC needs to provide it:

... 
export default function StoreContainer(Component, reducers) { 
 return class extends React.Component { 
  ... 
  render() { 
   return (<Component {...this.props} {...this.state} />); 
  } 
 } 
} 			
...

We are “spreading” the properties and state of the HOC down to the Component it is wrapping. This effectively ensures that whatever properties we pass to the HOC get down to the component it wraps, a vital feature of infinitely nestable HOCs. It may or may not be wise to place the state as properties on the Component, but it worked well in my testing, and it was nice being able to access to the state through the this.props object of the Component that is wrapped, as you might expect to normally do with a React component that receives data from a parent component.

Here’s the whole shabang:

import React from 'react'; import store from './Store';
function subscriber(currentState, previousState) { 
 this.setState(currentState);
}

export default function StoreContainer(Component, reducers) {
 return class extends React.Component { 
  
  constructor(props) { 
   super(props); 
   this.state = store.getState(); 
   this.instSubscriber = subscriber.bind(this); 
   store.subscribe(this.instSubscriber);
   store.addReducers(reducers); 
  }
 
  componentWillUnmount() {
   store.unsubscribe(this.instSubscriber);
  }
  
  render() {
   return (<Component {...this.props} {...this.state} />);
  }
 }
}

Implementation of using StoreContainer:

import StoreContainer from 'StoreContainer'; 
import { myReducer } from 'MyReducers';
let MyComponent extends React.Component { 
 // My component stuff 
}
export default StoreContainer(MyComponent, { myReducer });

Implementation of using the Component that uses StoreContainer (exactly the same as normal):

import MyComponent from 'MyComponent'; 
import ReactDOM from 'react-dom';

ReactDOM.render(<MyComponent myProp=’foo’ />, document.body);

But you don’t have to define the data basis of your MyComponent immediately or in a long-lasting class definition; you could also do it more ephemerally, in implementation, and perhaps this is wiser for more generalized components:

import StoreContainer from 'StoreContainer'; 
import { myReducer } from 'MyReducers'; 
import GeneralizedComponent from 'GeneralizedComponent'; 
import ReactDOM from 'react-dom';
let StoreContainedGeneralizedComponent = StoreContainer(GeneralizedComponent, { myReducer });
ReactDOM.render(<StoreContainedGeneralizedComponent myProp='foo' />, document.body);

This has the benefit of letting parent components control certain child component properties.

Conclusion

By gaining a solid understanding of Redux through this blog, we hope teams can enhance their state management and write efficient, scalable code.

In addition to leveraging Redux, teams can further optimize their product development process by utilizing Jama Connect®‘s powerful features, such as Live Traceability™ and Traceability Score™, to improve engineering quality and speed up time to market.

Jama Connect empowers teams with increased visibility and control by enabling product development to be synchronized between people, tools, and processes across the end-to-end development lifecycle. Learn more here. 



G2

 


G2 Again Names Jama Connect® the Standout Leader in Requirements Management Software in their Spring 2023 Grid® Report

Thank You to Our Customers!

Jama Connect® was again named far above all others as the standout leader in the Spring 2023 G2 Grid Report for Requirements Management Software!

In addition to the honor of being named the standout leader in requirements management software (for both Mid-Market and Enterprise), we are proud to showcase that we were awarded the Users Most Likely to Recommend badge as well as several additional medals for Spring 2023, including:

  • Users Most Likely to Recommend: Earned the highest rating among other solutions in this category.
  • Users Love Us: For products that have collected 20 reviews with an average rating of 4.0 stars.
  • Fastest Implementation: For products that had the shortest go-live time in its category.
  • Easiest Setup: The product that earned the highest Ease of Setup rating in its category.
  • Easiest to Use: The product in the Usability Index earned the highest Ease of Admin rating in its category.
  • Easiest Admin: For products that earn the highest Ease of Admin rating in their category.
  • Momentum Leader: Products in the Leader tier in the Momentum Grid® rank in the top 25% of their category’s products by their users.
  • Enterprise Leader: For products rated highly by G2 users and have substantial Satisfaction and Market Presence scores.

Download the full report to see why customers love using Jama Connect for product, systems, and software development.


Learn More About the Spring 2023 G2 Grid for the top Requirements Management Software products HERE!


We live vicariously through the successes of our customers. The “Users Love Us” category, in particular, is a testament to our commitment to our customers.

At Jama Software®, we’re proud to be recognized as the leader in requirements management software. We’re grateful to our customers for their invaluable feedback on their experiences using Jama Connect for requirements management. We remain committed to providing them with the expert knowledge, attention, and resources they need to help them achieve their goals.

Powerful tool that makes traceability easy. I’ve found Jama Connect to be a great platform for managing my project requirements. It has a simple user interface but also allows for a lot of customization for my own company’s needs. I work in the medical device industry and find this software essential for tracking our internal requirements as well as external regulatory requirements.”

-From review collected and hosted on G2.com, Andrew P, Lead Product Engineer – Systems and Usability – Small Business

Read Jama Connect reviews on G2

We strive to provide our customers with the best level of service possible, and we look forward to supporting them with our expertise.

I’ve been satisfied with Jama for years. Everything just works. The administrative tools are flexible and allow configuration to match our team’s workflow. It has highly configurable reports to allow us to export data for use in our document control system..”

-From review collected and hosted on G2.com, Allan P., Principal Test Engineer – Enterprise

Review Jama Connect on G2

From all of us at Jama Software to all of you, thank you!


G2 scores products and sellers based on reviews, gathered from their user community, as well as data aggregated from online sources and social networks. Together, these scores are mapped on their proprietary G2 Grid®, which can be used to compare products, streamline the buying process, and quickly identify the best products based on the experiences of your peers.