Typemock, Ltd. v. Telerik Inc.

CourtDistrict Court, D. Massachusetts
DecidedAugust 31, 2018
Docket1:17-cv-10274
StatusUnknown

This text of Typemock, Ltd. v. Telerik Inc. (Typemock, Ltd. v. Telerik Inc.) is published on Counsel Stack Legal Research, covering District Court, D. Massachusetts primary law. Counsel Stack provides free access to over 12 million legal documents including statutes, case law, regulations, and constitutions.

Bluebook
Typemock, Ltd. v. Telerik Inc., (D. Mass. 2018).

Opinion

UNITED STATES DISTRICT COURT DISTRICT OF MASSACHUSETTS

CIVIL ACTION NO. 17-10274-RGS

TYPEMOCK, LTD.

v.

TELERIK, INC.

MEMORANDUM AND ORDER ON CLAIM CONSTRUCTION

August 31, 2018

STEARNS, D.J. Plaintiff Typemock, Ltd., accuses defendant Telerik, Inc., of infringing United States Patents Nos. 8,352,923 (the ’923 patent), and 9,251,041 (the ’041 patent). Before the court are the parties’ briefs on claim construction. The court received technical tutorials and heard argument, pursuant to Markman v. Westview Instruments, Inc., 517 U.S. 370 (1996), on August 30, 2018. THE ASSERTED PATENTS Both the ’923 and the ’041 patents are entitled “method and system for isolating software components,” and list Eli Lopian as the sole inventor.1 The

1 Mr. Lopian gave a technical tutorial at the August 30, 2018 Markman hearing. ’923 patent was issued on January 8, 2013. The ’041 patent, issued on February 2, 2016, is a continuation of the ’923 patent, and shares the same

specification. The asserted patents are directed to improvements in the field of software validation. Validating software is a complex problem that grows exponentially as the complexity of the software grows. Even a small mistake in the software can cause a large financial cost. In order to cut down on these costs, software companies test each software component as they are developed or during interim stages of development.

’923 patent, col. 1, ll. 32-37. At the time of the invention of the asserted patents, methods existed to validate software by isolating and testing individual software components. In order to isolate the components, there is a need to design the program that utilizes the software components in such a way that the components can be changed. This is part of a pattern called Inversion of Control or Dependency Injection. For example when validating that software behaves correctly on the 29th of February, there is a need to change the computer system’s date before running the test. This is not always possible (due to security means) or wanted (it may disturb other applications). The method used today to verify this is by wrapping the system call to get the current date with a new class. This class may have the ability to return a fake date when required. This may allow injecting the fake date into the code being tested for, and enable validating the code under the required conditions. There are many cases where isolating the code base and injecting fake data are required.

Id. col. 1, ll. 52-63. In more complex cases, validation may require “faking a complete set of API’s [(application programming interface)] (for example: faking sending

an email).” Id. col. 2, l. 6. To do so, there is a need to build a framework that enables isolating the complete API set. This means that the code may now have to support creating and calling two different components. One way to do this is to use the Abstract Factory Pattern. Using this pattern, the production code should never create the object (that needs to be faked for tests). Instead of creating the object, the Factory is asked to create the object, and the code calls the methods of the object that the factory created. The factory can then choose what object to create: a real one or a fake one. This requires using an interface that both clients (real and fake) need to implement. It also requires creating a complex mechanism that may allow the factory to choose what object to create and how to do so. This is done mainly through configuration files although it can be done in code too.

Id. col. 2, ll. 7-21.

To utilize these methods for validation, code must be designed to be testable. Legacy code may not be designed to permit the insertion of fake objects, and rewriting legacy code may be too costly or time-consuming. Designing code to be testable may also add constraints to the code that are not compatible with production code. “For example, the code may be required to implement hooks that enable changing the actual object to a fake one. This hook can lead to misuse and hard-to-debug code, as it is intended for testing but it is in the production code.” Id. col. 2, ll. 46-49. The asserted patents disclose systems and methods of software validation that, through the use of a mock framework, do not require the

design for testability. A mock framework 110 may dynamically create a fake object that implements the same interface of the real object (the same interface that is created using the Abstract Factory), and has the ability to define the behavior of the object and to validate the arguments passed to the object.

Id. col. 2, ll. 30-35. [C]ertain embodiments of the invention add code that is inserted or weaved 107 into the production code base 106 (FIG. 1) that is being tested. The added code may enable hooking fake or mock objects into the production code by calling the [m]ock framework 110. This framework can decide to return a fake object. The framework may also be able to validate and change the arguments passed into the method.

Id. col. 2, ll. 58-64. Claim 1 of the ’923 patent is a representative system claim. 1. A software testing system operative to test a software application comprising a plurality of software components, at least some of which are coupled in a utilizing-utilized relationship the system comprising:

a processor and memory;

computational apparatus for at least partially isolating, from within the software application, at least one coupled software component which performs a given function by introducing, prior to execution, code elements for runtime access of application points associated with the at least one coupled software component, wherein at least one code element associated with the at least one coupled software component provides access control between utilizing- utilized software components;

computational apparatus for testing the software application by imposing a fake behavior on the at least one coupled software component, wherein imposing includes removing or replacing an expected behavior of the at least one coupled software component during runtime; and

wherein the at least one code element is operative to query said computational apparatus for testing.

Claim 9 of the ’041 patent is a representative method claim. 9. A software testing method for testing a software application comprising a plurality of software components, at least some of which are coupled, said method comprising:

at least partially isolating from within the software application, by use of a computational apparatus running a testing application, during runtime, at least one coupled software component which performs a given function by introducing into the software application, prior to execution of the software application, code elements for runtime access of application points associated with the at least one coupled software component, such that at least one of the introduced code elements provides the testing application access between utilizing-utilized software components during runtime; and

testing, by use of the computational apparatus running the testing application, the software application by imposing a fake behavior on the at least one coupled software component, wherein imposing behavior includes removing or replacing an expected behavior of the at least one coupled software component, during runtime, by use of the access provided by the at least one of the introduced code elements.

Typemock alleges infringement of claims 4, 9, 11, 14, 24-26, 28, 34, 39, 41, 44, and 48 of the ’923 patent, and claims 4 and 16 of the ’041 patent.

Free access — add to your briefcase to read the full text and ask questions with AI

Related

TriMed, Inc. v. Stryker Corp.
514 F.3d 1256 (Federal Circuit, 2008)
Typhoon Touch Technologies, Inc. v. Dell, Inc.
659 F.3d 1376 (Federal Circuit, 2011)
Wms Gaming Inc. v. International Game Technology
184 F.3d 1339 (Federal Circuit, 1999)
Halliburton Energy Services, Inc. v. M-I LLC
514 F.3d 1244 (Federal Circuit, 2008)
Affymetrix, Inc. v. Hyseq, Inc.
132 F. Supp. 2d 1212 (N.D. California, 2001)
Nautilus, Inc. v. Biosig Instruments, Inc.
134 S. Ct. 2120 (Supreme Court, 2014)
Interval Licensing LLC v. Aol, Inc.
766 F.3d 1364 (Federal Circuit, 2014)
Biosig Instruments, Inc. v. Nautilus, Inc.
783 F.3d 1374 (Federal Circuit, 2015)
Richard Williamson v. Citrix Online, LLC
792 F.3d 1339 (Federal Circuit, 2015)
Zeroclick, LLC v. Apple Inc.
891 F.3d 1003 (Federal Circuit, 2018)
Blue Calypso, Inc. v. Groupon, Inc.
93 F. Supp. 3d 575 (E.D. Texas, 2015)

Cite This Page — Counsel Stack

Bluebook (online)
Typemock, Ltd. v. Telerik Inc., Counsel Stack Legal Research, https://law.counselstack.com/opinion/typemock-ltd-v-telerik-inc-mad-2018.