Method and apparatus for producing software
First Claim
1. A digital information product comprising:
- a computer-readable medium; and
stored on the computer-readable medium, computer program instructions defining a software system that produces software code based on a set of functional requirements and design parameters provided by a programmer.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method for producing software code is provided. In particular, a new software design methodology is provided that is based on axiomatic design theory. In one aspect, axiomatic design theory is adapted for use in designing object-oriented software programs. This methodology overcomes the shortcomings of various software design strategies including extensive software development and debugging time and the need for extensive maintenance. Because traditional software design strategies are not heuristic and do not provide basic principles for the development of good software systems, bad design habits produce poor quality software. A design framework using axiomatic design for software overcomes many of the shortcomings of current software design techniques: high maintenance costs, limited reusability, the need for extensive debugging and testing, poor documentation, and limited extensibility of the software, all of which result in high development cost of software.
-
Citations
95 Claims
-
1. A digital information product comprising:
-
a computer-readable medium; and
stored on the computer-readable medium, computer program instructions defining a software system that produces software code based on a set of functional requirements and design parameters provided by a programmer.
-
-
2. The digital information product according to claim 1, wherein the computer program instructions, when executed, allow the programmer to define a design matrix describing a relation between the set of functional requirements and the design parameters.
-
3. The digital information product according to claim 2, wherein the computer program instructions, when executed, allow a programmer to manipulate the design matrix into lower triangular form.
-
4. The digital information product according to claim 2, wherein the computer program instructions, when executed, allow a programmer to determine a decoupled design matrix.
-
5. The digital information product according to claim 2, wherein the computer program instructions, when executed, allow a programmer to determine an uncoupled design matrix.
-
6. A method for producing a software system, the method comprising:
-
defining a design matrix describing a relation between functional requirements of the software system and design parameters; and
generating software code based on the design matrix.
-
-
7. The method according to claim 6, further comprising a step of constructing functions using diagonal elements of the design matrix.
-
8. The method according to claim 6, further comprising a step of defining a flow description that describes a flow of the software system.
-
9. The method according to claim 6, further comprising a step of defining a software module corresponding to at least one functional requirement.
-
10. The method according to claim 9, wherein the software module is defined based upon the flow description.
-
11. The method according to claim 6, further comprising a step of defining a plurality of software modules, each of which corresponds to a respective functional requirement.
-
12. The method according to claim 11, further comprising relating the plurality of software modules by junctions.
-
13. The method according to claim 12, further comprising a step of combining the plurality of software modules according to their junctions.
-
14. The method according to claim 13, wherein at least one of the junctions is selected from a group including:
-
15. A method for producing software comprising:
-
defining a design matrix describing a relation between functional requirements of the software system and design parameters; and
generating software code based on the design matrix.
-
-
16. The method according to claim 15, wherein the step of defining includes determining a design matrix having a lower triangular form.
-
17. The method according to claim 15, wherein the step of defining includes determining an uncoupled design matrix.
-
18. The method according to claim 15, wherein the step of defining includes determining a design matrix having a diagonal form.
-
19. The method according to claim 15, wherein the step of defining includes determining a decoupled design matrix.
-
20. The method according to claim 15, wherein the step of generating comprises:
-
generating a plurality of models; and
outputting the models to a code generator.
-
-
21. The method according to claim 15, wherein the step of generating comprises generating at least one diagram describing an object-oriented object structure.
-
22. The method according to claim 21, wherein the at least one diagram is in a Unified Modeling Language format.
-
23. The method according to claim 21, wherein the at least one diagram includes at least one of a group of diagrams comprising:
-
a use-case diagram; and
an entity-relation diagram.
-
-
24. The method according to claim 15, wherein the code generated includes object-oriented entities.
-
25. The method according to claim 15, further comprising a step of defining an object-oriented class using at least one functional requirement.
-
26. The method according to claim 24, further comprising a step of defining a child of the object-oriented class using at least one functional requirement.
-
27. The method according to claim 25, further comprising a step of defining a grandchild of the object-oriented class using at least one functional requirement.
-
28. The method according to claim 27, wherein the grandchild of the object-oriented class defines behavior of the class.
-
29. The method according to claim 24, wherein at least one functional requirement represents at least one object-oriented software entity.
-
30. The method according to claim 15, wherein the generated software code is Source Code.
-
31. A method for designing software involving object-oriented software objects, the method comprising:
-
defining a design matrix describing a relation between a plurality of functional requirements of the software system and design parameters;
representing at least one object-oriented object by at least one of the functional requirements;
representing data used by the at least one object-oriented software object by at least one of the design parameters; and
representing a method of the at least one object-oriented software object by a product of a portion of the design matrix an the at least one design parameter.
-
-
32. The method according to 31, further comprising defining a plurality of functional requirements and constraints of the software system.
-
33. The method according to 31, comprising a step of decomposing at least one functional requirement into leaf elements.
-
34. The method according to 31, comprising a step of decomposing at least one design parameter into leaf elements.
-
35. The method according to 31, comprising a step of decomposing at least one process variable into leaf elements.
-
36. A method for designing software comprising:
-
defining a software system by defining a design matrix describing a relation between functional requirements of the software system and design parameters implementing the software system;
defining at least one object-oriented object; and
defining at least one method that may be defined on the at least one object, wherein the at least one object-oriented object and the at least one method are related to the design matrix.
-
-
37. The method according to claim 36, further comprising defining an object class of the at least one object-oriented object that represents a first level of functional requirements of the design matrix.
-
38. The method according to claim 37, further comprising defining an instance of the object class represented by a second level of functional requirements of the design matrix.
-
39. The method according to claim 38, further comprising defining behavior of the object class as a third level of functional requirements of the design matrix.
-
40. The method according to claim 39, wherein the first, second, and third levels are successive levels of a functional requirement hierarchy.
-
41. The method according to claim 36, further comprising mapping the functional requirements into a physical implementation domain by defining design parameters.
-
42. The method according to claim 36, further comprising a step of construction functions using diagonal elements of the design matrix.
-
43. The method according to claim 36, wherein the step of defining a software system includes determining whether the design matrix is uncoupled.
-
44. The method according to claim 36, further comprising generating a plurality of models and outputting the models to a code generator.
-
45. The method according to claim 44, wherein the step of generating comprises generating at least one diagram describing an object-oriented system structure.
-
46. The method according to claim 45, wherein the at least one diagram includes at least one of a group of diagrams including:
-
a use-case diagram; and
an entity-relation diagram.
-
-
47. The method according to claim 45, wherein the at least one diagram is in a Unified Modeling Language format.
-
48. A database format for designing a software system comprising:
-
a software design specification, wherein the design specification defines a design matrix describing a relation between a plurality of functional requirements of the software system and design parameters, wherein the design specification represents at least one software object by at least one of the functional requirements, and wherein the design specification represents data used by the at least one software object by at least one of the design parameters; and
software code produced by the design specifications.
-
-
49. The database format according to claim 48, wherein the software design specification further comprises a design identification identifying the software code.
-
50. The database format according to claim 48, wherein the software design specification further comprises a detailed design description including the design matrix, functional requirements and design parameters.
-
51. The database format according to claim 49, wherein the software design specification further comprises a detailed design description including the design matrix, functional requirements and design parameters.
-
52. The database format according to claim 49, wherein the software design specification further comprises a design identification identifying the software code.
-
53. The database format according to claim 48, wherein the design parameters are arranged in a plurality of levels, and wherein each of the plurality of levels can be referenced by another software system.
-
54. The database format according to claim 48, wherein the database format for designing a software system is used in a software production system, and a user operating the software production system is capable of creating software comprising one or more elements of the software system.
-
55. The database format according to claim 54, wherein the software production system further comprises a user interface and a database implementing the database format, and the software production system is capable of searching through the database to obtain one or more elements of the software system to create a new software system.
-
56. The database format according to claim 55, wherein a new element of the new software system interfaces with one or more elements of the software system, and the software production system is operable to verify that the interface is operable.
-
57. The database format according to claim 55, wherein the software production system is configured to verify a consistency of design of the new software system.
-
58. The database format according to claim 55, wherein the software production system is configured to search design parameter information, including at least one of description information, keywords associated with the software system, categories in which the software system is assigned, and comments.
-
59. The database format according to claim 48, wherein the software code is in executable form.
-
60. The database format according to claim 48, wherein the software code is source code.
-
61. The database format according to claim 57, wherein the software production system is configured to verify a consistency of design of the new software system by checking a consistency between a first level of design implementing a design parameter from the database and a second level of design of the new software system.
-
62. The database format according to claim 61, wherein the second level of design is a child of the first level of design.
-
63. The database format according to claim 55, wherein a new element of the new software system interfaces with one or more elements of the software system, and the software production system is operable to verify that the interface is operable.
-
64. A database format for designing a software system comprising:
-
design identification information identifying information describing the software system;
detailed design description information describing the structure and operating qualities of the software system; and
software code information associated with the software system.
-
-
65. The database format according to claim 64, wherein the detailed design description defines a design matrix describing a relation between a plurality of functional requirements of the software system and design parameters, wherein the design specification represents at least one software object by at least one of the functional requirements, and wherein the detailed design description represents data used by the at least one software object by at least one of the design parameters.
-
66. The database format according to claim 64, wherein the software code information comprises source code.
-
67. A method for generating software code associated with a software system, the method comprising:
-
defining a design matrix describing a relation between functional requirements of the software system and design parameters; and
generating software code based on the design matrix.
-
-
68. The method according to claim 67, further comprising defining a plurality of functional requirements and constraints of the software system.
-
69. The method according to claim 67, further comprising a step of decomposing at least one functional requirement into leaf elements.
-
70. The method according to claim 67, further comprising a step of decomposing at least one design parameter into leaf elements.
-
71. The method according to claim 67, further comprising a step of decomposing at least one process variable into leaf elements.
-
72. The method according to claim 67, wherein the software code is written in a modeling code language.
-
73. The method according to claim 67, wherein the software code is executable by a computer system.
-
74. The method according to claim 72, wherein the modeling code language is the Unified Model Language (UML).
-
75. The method according to claim 72, wherein the software code describes at least one diagram of a group comprising:
-
a class diagram;
an interaction diagram;
a collaboration diagram;
a sequence diagram;
a state diagram; and
an activity diagram.
-
-
76. The method according to claim 75, further comprising a step of relating the design matrix to at least one element of the at least one diagram.
-
77. The method according to claim 72, wherein the system creates a use-ease diagram based upon the design matrix.
-
78. The method according to claim 67, further comprising defining a plurality of customer needs, the plurality of needs being arranged in a hierarchical tree having levels, and wherein at least one of the levels relates to a layer of a use-ease diagram.
-
79. The method according to claim 67, wherein the use-case diagram includes a relation layer, a use case layer and an actor layer.
-
80. The method according to claim 79, wherein the actor layer represents one or more actors.
-
81. The method according to claim 79, wherein the use case layer describes customer needs that are attributed to the actor.
-
82. The method according to claim 79, wherein the relation layer describes a relationship between customer needs in customer needs in the use case layer.
-
83. The method according to claim 82, wherein the relationship is a semantic connection among model elements.
-
84. The method according to claim 82, wherein the software code includes a model file which describes the modeling code.
-
85. The method according to claim 84, wherein the model file is suitable for use as an input file for use by a software production system to create a software system.
-
86. A computer-readable medium encoded with a program that, when executed on a computer system, performs a method for rendering an interface through which a user may interact, the method comprising steps of:
displaying a software design interface, wherein the interface displays a set of functional requirements upon which a software design is based, and wherein the interface displays a design matrix describing a relation between the set of functional requirements and design parameters implementing the software design.
-
87. The computer-readable medium according to claim 86, wherein the computer system performs a step of indicating, in association with the displayed design matrix, whether the software design specified by the design matrix is at least one of a group including a decoupled, uncoupled or coupled design.
-
88. The computer-readable medium according to claim 86, wherein the design matrix represents a coupled design, and wherein the computer system performs a step of indicating, in association with the displayed design matrix, whether a design parameter associated with the design matrix is coupled.
-
89. The computer-readable medium according to claim 88, wherein the computer system performs a step of indicating, for the design parameter associated with the design matrix, an alternate rearrangement of the design parameter wherein the design parameter, if rearranged, is uncoupled or decoupled.
-
90. The computer-readable medium according to claim 88, wherein the computer system performs a step of indicating, for the design matrix, an accuracy of the software design with respect to an optimum design.
-
91. The computer-readable medium according to claim 86, wherein the computer system performs a step of indicating, for the design matrix, a range of acceptable inputs over which the design matrix operates.
-
92. The computer-readable medium according to claim 86, wherein the computer system performs a step of arranging and displaying the functional requirements and design parameters to the user in a hierarchical manner.
-
93. The computer-readable medium according to claim 92, wherein the computer system performs a step of displaying the functional requirements and design parameters in a hierarchical tree having a plurality of levels.
-
94. The computer-readable medium according to claim 90, wherein the computer system performs a step of indicating a robustness of the software.
-
95. The computer-readable medium according to claim 92, wherein the computer system performs a further step of creating, based upon an arrangement of the design parameters, a Gantt chart describing production dependencies of the software design.
Specification