Abstract:
Retrieving a question regarding requirements of an application from a data object node of an architecture design solution repository with architecture design solutions comprising a plurality of data object trees each with a plurality of data object nodes. Displaying a question regarding the requirements of the application to an application user through an interface and receiving an indication of an answer chosen by the application user. Indicating within the data object node which answer was chosen by the application user and determining which data object node to retrieve a next question from based on answer indicated by the user. Determining which architecture design solution within the architecture design solution repository matches the requirements of the application indicated by the application user and generating an architecture design work product based on matching the data object nodes to architecture design solutions within the architecture design solution repository.

Description:
BACKGROUND 
     The present invention relates to application architecture design, and more specifically to generating application architecture design work products. 
     Currently projects usually engage many architects to perform or generate the architecture design work or architecture design solutions. An architecture design solution is an approach that captures architecture design knowledge and experience and lends a solution to the project. Commonly, architecture design solutions are introduced to other architects via articles, papers and books. 
     During a project, an architect relies on their personal knowledge and experience to design architecture design solutions, and document architecture designs as work products for delivery to their team or to a client. It is often challenging to create successful architecture design work products, since the architecture design includes and covers many different aspects of an application, such as infrastructure architecture, application architecture, security architecture, etc. . . . and an understanding of each to find the best solution to build an application. 
     This approach relies heavily on individual knowledge and experience and does not guarantee that an architect provides the best architecture design solution to an application. Also, even though computer tools are available to help to create architecture design diagrams, the computer tools cannot generate those diagrams automatically according to application requirements. Furthermore, it is especially time consuming for an architect to document and format the architecture design solution documents as work products for delivery to the project. 
     SUMMARY 
     According to one embodiment of the present invention a method of customizing architecture design work products to requirements of an application, using an architecture design solution repository including architecture design solutions comprising a plurality of data object trees each with a plurality of data object nodes. The method comprising the steps of: a computer retrieving a question regarding the requirements of the application from the data object node of the architecture design solution repository; the computer displaying the question regarding the requirements of the application to an application user through an interface; the computer receiving an indication of answers chosen by the application user to the question displayed; the computer indicating within the data object node which answers were chosen by the application user; the computer determining from which data object node to retrieve another question based on the answers indicated by the application user, and repeating from the computer displaying questions regarding the requirements of the application to the application user through the interface until all questions are answered; the computer determining which architecture design solution within the architecture design solution repository matches the requirements of the application indicated by the application user; the computer generating an architecture design work product based on matching the data object nodes to architecture design solutions within the architecture design solution repository. 
     According to another embodiment of the present invention, a computer program product for customizing architecture design work products to requirements of an application, using an architecture design solution repository including architecture design solutions comprising a plurality of data object trees each with a plurality of data object nodes. The computer program product comprising: one or more computer-readable, tangible storage devices; program instructions, stored on at least one of the one or more storage devices, to retrieve a question regarding the requirements of the application from the data object node of the architecture design solution repository; program instructions, stored on at least one of the one or more storage devices, to display the question regarding the requirements of the application to an application user through an interface; program instructions, stored on at least one of the one or more storage devices, to receive an indication of answers chosen by the application user to the question displayed; program instructions, stored on at least one of the one or more storage devices, to indicate which answers were chosen by the application user; program instructions, stored on at least one of the one or more storage devices, to determine from data object node to retrieve another question based on the answers indicated by the application user, repeating program instructions, stored on at least one of the one or more storage devices, to display questions regarding the requirements of the application to the application user through the interface until all questions are answered; program instructions, stored on at least one of the one or more storage devices, to determine which architecture design solution within the architecture design solution repository matches the requirements of the application indicated by the application user; and program instructions, stored on at least one of the one or more storage devices, to generate an architecture design work product based on matching the data object nodes to architecture design solutions within the architecture design solution repository. 
     According to another embodiment of the present invention, a computer system for customizing architecture design work products to requirements of an application. The computer system comprises one or more processors, one or more computer-readable memories and one or more computer-readable, tangible storage devices; an architecture design solution repository comprising architecture design solutions comprising a plurality of data object trees each with a plurality of data object nodes; a work product generator linked to the architecture design solution repository for generating customizable architecture design work products for the application; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to retrieve a question regarding the requirements of the application from the data object node of the architecture design solution repository; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to display the question regarding the requirements of the application to an application user through an interface linked to the architecture design solution repository; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to receive an indication of answers chosen by the application user to the question displayed through the interface; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to indicate which answers were chosen by the application user within the data object node; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to determine which data object node to retrieve a next question from based on answers indicated by the application user, repeating program instructions, stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to display the question regarding the requirements of the application the application user through an interface until all questions are answered; program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to determine which architecture design solution within the architecture design solution repository matches the requirements of the application indicated by the application user; and program instructions, stored one at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to generate an architecture design work product through the work product generator based on matching the data object nodes to architecture design solutions within the architecture design solution repository. 
    
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         FIG. 1  depicts a pictorial representation of a network of computers in which illustrative embodiments may be implemented. 
         FIG. 2  shows an example of components of the framework for a system of an embodiment of the present invention. 
         FIGS. 3   a - 3   c  show a flowchart for a method of determining application requirements for a project. 
         FIGS. 4   a  and  4   b  show examples of interfaces for carrying out the flowchart of  FIGS. 3   a - 3   c.    
         FIG. 5  shows an example of a data object tree. 
         FIG. 6  shows a flowchart of a method of using a data tree to acquire application requirements for a project. 
         FIG. 7  shows an example of components of the framework for a system including design solution modules within the architecture design solution repository. 
         FIG. 8  shows an example of portal reference architecture. 
         FIG. 9  shows a data object tree showing paths of traversing the tree. 
         FIG. 10  shows an example of an operational model diagram from data objects of a data object tree if the type of website is Intranet only. 
         FIG. 11  shows an example of an operational model diagram from data objects of a data object tree if the type of website is Internet only and access is limited to a web browser. 
         FIG. 12  shows an example of an operational model diagram from data objects of a data object tree if the type of website is Internet only and access is by a web browser and mobile devices. 
         FIG. 13  shows an example of an operational model diagram from data objects of a data object tree if the type of website is Internet and Intranet and access is by a web browser and mobile devices. 
         FIG. 14  illustrates internal and external components of a client computer and a server computer in which illustrative embodiments may be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     Currently many enterprises are using computer applications to do their business processing. Although those applications are working in different business areas, they are built using the same architecture solution, technology and products. Therefore, the architecture solutions, technology and products can be collected from implemented applications and re-applied to new applications. 
     In an embodiment of the present invention, a computer system transforms the workload of designing an architecture solution from depending on individual knowledge and experience to a computer system. This computer system can be widely used by architects to obtain architecture design based on the knowledge and experience collected from many subject matter experts and from many approved applications as well, improving the quality of the architecture design work products. 
     The computer system of an embodiment of the present invention obtains and stores the knowledge from subject matter experts in many areas of application architecture. After understanding the application requirements, an application architect can provide the system with application requirements to a specific project through specific questions and according to those answers, the computer system constructs the best architecture design solution for the application requirements as well as generate architecture design work products. The architecture design work products are generated in the standard, required document format, saving the architects a lot of time, and at the same time improving the quality of those work products. 
     Therefore, it is not necessary for an architect to “re-invent the wheel” in a new project and do the architect design work from scratch. By collecting solutions, technology and products into a computer system, it is much easier for an architect to access the architecture design solutions and apply them to new applications, helping the architect complete their work easily, quickly and with high quality. 
     Furthermore, by collecting and storing architecture design solutions that have been successfully implemented, it helps share the knowledge and experience of application architectural design among architects and among enterprise applications and therefore, the application architect is not solely relying on their specific knowledge and experience, where they may be lacking. 
       FIG. 1  is an exemplary diagram of a possible data processing environment in which illustrative embodiments may be implemented. It should be appreciated that  FIG. 1  is only exemplary and is not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made. 
     Referring to  FIG. 1 , network data processing system  51  is a network of computers in which illustrative embodiments may be implemented. Network data processing system  51  contains network  50 , which is the medium used to provide communication links between various devices and computers connected together within network data processing system  51 . Network  50  may include connections, such as wire, wireless communication links, or fiber optic cables. 
     In the depicted example, client computer  52 , tangible storage device  53 , and server computer  54  connect to network  50 . In other exemplary embodiments, network data processing system  51  may include additional client computers, storage devices, server computers, and other devices not shown. Client computer  52  includes a set of internal components  800   a  and a set of external components  900   a , further illustrated in  FIG. 14 . Client computer  52  may be, for example, a mobile device, a cell phone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any other type of computing device. Client computer  52  may contain an interface  60 . Through interface  60 , searches of architecture solutions may be performed and results of the searches may be displayed. Interface  60  may accept commands and data entry from a user. Interface  60  can be, for example, a command line interface, a graphical user interface (GUI), or a web user interface (WUI) through which a user can access a work product generator program  66 , an application characteristic program  68 , or a solution collector program  67  on either client computer  52  or server computer  54 . Server computer  54  includes a set of internal components  800   b  and a set of external components  900   b  illustrated in  FIG. 14 . 
     In the depicted example, server computer  54  provides information, such as boot files, operating system images, and applications to a client computer  52 . Server computer  54  can compute the information locally or extract the information from other computers on network  50 . 
     Program code and programs such as a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  may also be located in network data processing system  51  and may be stored on at least one of one or more computer-readable tangible storage devices  830  shown in  FIG. 14 , on at least one of one or more portable computer-readable tangible storage devices  936  as shown in  FIG. 14 , on tangible storage device  53  connected to network  50 , or downloaded to a data processing system or other device for use. For example, program code and programs such as a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  may be stored on at least one of one or more tangible storage devices  830  on server computer  54  and downloaded to client computer  52  over network  50  for use on client computer  52 . Alternatively, server computer  54  can be a web server, and the program code and programs such as a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  may be stored on at least one of the one or more tangible storage devices  830  on server computer  54  and accessed on client computer  52 . A work product generator program  66 , an application characteristic program  68 , and a solution collector program  67  can be accessed on client computer  52  through interface  60 . In other exemplary embodiments, the program code and programs such as a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  may be stored on at least one of one or more computer-readable tangible storage devices  830  on client computer  52  or distributed between two or more servers. 
     In the depicted example, network data processing system  51  is the Internet with network  50  representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, governmental, educational and other computer systems that route data and messages. Of course, network data processing system  51  also may be implemented as a number of different types of networks, such as, for example, an intranet, local area network (LAN), or a wide area network (WAN).  FIG. 1  is intended as an example, and not as an architectural limitation, for the different illustrative embodiments. 
       FIG. 2  refers to an example of an architecture system for generating and collecting application architecture design work products. Architecture system  100  may be part of the network data processing system  51  shown in  FIG. 1 . 
     The architecture system  100  includes a question and answer user interface  116 , which may use an application characteristic program  68  through interface  60  as shown in  FIG. 1 , accessed by an application architect or other user  101 . The question and answer user interface  116  is linked to an architecture design solution repository  102 . The architecture design solution repository  102  may be the tangible storage device  53  as shown in  FIG. 1  or another storage device. The architecture design solution repository  102  is linked to a solution collector and updater  108  which may use a solution collector program  66  to update the architecture design solution repository  102  with architecture design solutions  110 . A subject matter expert  112  may also contribute architecture design solutions  110  to the solution collector and updater  108 . The architecture design solution repository  102  is linked to a work product generator  106  which may use a work product generator program  66  to generate an architecture design work product  114  from the architecture design solution repository  102 . The work product generator  106  and the architecture design work product  114  itself may be customized  104  by the application architect  101 . 
     The question and answer user interface  116  provides the application architect  101  with questions regarding the architecture design based on application architecture requirements. 
     For example, a WebSphere® Portal provided by IBM Corporation is an operational environment that is divided into four tiers, a Web tier, a Demilitarized Zone tier, a Product tier, and a Back-end Application tier from left to right in a WebSphere® Portal operation environment diagram as shown in  FIG. 10 . 
     As an example, for the Web tier, the application architect  101  needs to know what type of users will be using the application, Internet users or Intranet users, or determine type of website (step  120 ) as shown in  FIGS. 3   a - 3   c . The application architect  101  indicates that the type of website is to be Internet only (step  125 ), Intranet only (step  126 ) or both, through an interface  60 ,  116  for example as shown in  FIG. 4   a.    
     After the type of website is determined, return to determine what type of devices will access the website (step  122 ). The application architect  101  indicates that the devices used to access the website are a web browser (step  127 ), a mobile phone (step  128 ) or both through an interface  60 ,  116  for example as shown in  FIG. 4   b , and returns to determine the type of web browser (step  124 ). This process continues to determine what types of access is needed for the application (step  129 ). While only a few questions are shown, other questions in this example regarding the Web tier, Demilitarized Zone (DMZ) tier, Product tier, and Back-end Application tier would also be answered by the application architect  101 . It should be noted that other tiers and questions may be present based on the application being created. 
     Once the application architect  101  has answered all questions, the selections made by the application architect  101  are submitted to the architecture design solution repository  102 . The architecture design solution repository  102  contains architecture design solution modules which are each constructed within the repository  102  as data object trees  130 , each of which are connected together to be an even larger tree as shown for example in  FIG. 5 . Each data object tree is independent from other data object trees with a data object tree for each aspect of the application architecture. 
     For example, continuing with the example of  FIG. 10 , a Web tier data object tree, a DMZ tier data object tree, a Product tier data object tree, and a Back-end tier data object tree all of which are connected into an even larger data object tree. Each node  132  of the tree is a data object. A data object includes at least the following attributes: Question, Answer, Description, Graphical Representation, Configuration, Customization, Implementation, Sample Codes, and Tips as shown in Table 1 below, although other attributes may also be used. 
     
       
         
               
             
               
               
               
             
           
               
                 TABLE 1 
               
             
             
               
                   
               
               
                 Example of a Data Object 
               
             
          
           
               
                   
                 Attribute 
                 Value 
               
               
                   
                   
               
               
                   
                 Question 
                 Type of web site? 
               
               
                   
                 Answer 
                 Internet/Intranet/Both 
               
               
                   
                 Description 
                 If Internet: Internet website, users 
               
               
                   
                   
                 from external world 
               
               
                   
                   
                 If Intranet: Intranet website; users 
               
               
                   
                   
                 from internal network 
               
               
                   
                 Graphical 
                 If Internet: internet.jpg 
               
               
                   
                 Representation 
                 If Intranet: intranet.jpg 
               
               
                   
                 Configuration 
                 If Internet: Users use web browser to 
               
               
                   
                   
                 access portal website 
               
               
                   
                   
                 If Intranet: Users use web browsers to 
               
               
                   
                   
                 access portal website 
               
               
                   
                 Customization 
                 The web browser is configured to be 
               
               
                   
                   
                 SSL enabled. 
               
               
                   
                 Implementation 
                 N/A 
               
               
                   
                 Sample Codes 
                 N/A 
               
               
                   
                 Tips 
                 N/A 
               
               
                   
                   
               
             
          
         
       
     
     A data object tree  130  may also be implemented for other aspects of application architecture besides the aspects shown in  FIG. 5 , for example for a security aspect of the application architecture. 
     Referring back to  FIG. 5 , the question and answer user interface  116 , travels from node  132  to node  132  on the data object tree  130  by the method shown in  FIG. 6  and exemplified in  FIG. 9  and is discussed in further detail below. 
     An interface, for example through an application characteristic program  68 , retrieves a question from the data object node  132  (step  140 ). The question is displayed to the application architect  101  through an interface, such as interface  60  as shown in  FIG. 1  or interface  116  in  FIGS. 4   a - 4   b  (step  142 ). The question and answer user interface  116  receives question answers from the application architect  101  (step  144 ). The question and answer interface  116  indicates which answer was chosen by the application architect  101  within the data object node (step  146 ). The question and answer interface  116  determines which data object node to retrieve the next question from based on the answers received from the application architect  101  (step  148 ). If there are more data nodes to explore (step  150 ), return to step  140  of the question and answer user interface  116  retrieving a question from the data object node. 
     If there are no more data nodes to explore (step  150 ), an application characteristic program  68  through the question and answer interface determines which architecture design solution  110  present within the architecture design solution repository  102  matches the application characteristics required by the application architect (step  152 ). Once the architecture design solution is determined in step  152 , a work product generator program  66  generates an architecture design work product  114  for the application architect (step  154 ) and the method ends. It should be noted that different parts of different architecture design solutions  110  may be used to satisfy the application requirements as set forth by the application architect. 
     The architecture design solutions for an application has many aspects and may include architecture, infrastructure architecture, security architecture, etc. . . . The solution in each aspect or area is a module in the architecture design solution repository  102 . Each module is design and implemented as a data object tree  130  as shown in  FIG. 5 . 
     A subject matter expert  112  updates and imports known architecture design solutions to the system  100  through a solution collector program  67  through the solution and collector updater  108 . The solution collector program  67  deconstructs an implemented, known architecture design solution  110  provided by the subject matter expert  112  into points and sub-points which become known solution data object nodes, and organizes those nodes into a tree structure, starting from the root of that tree based on logic relationships. 
     Each node of the tree is created as a data object using the format as shown in  FIG. 5 . Once the solution collector program  67  has abstracted or deconstructed the known architecture design solution  110  into known solution data object nodes based on points and sub-points and organizes the nodes into a tree structure, the architecture design solution is stored a module in the architecture design solution repository  102 . Maintenance of the architecture design solution within the architecture design solution repository  102  by the subject matter expert  112  may include, but is not limited to adding, updating and deleting a data object node from a data object tree. 
     For example, as shown in  FIG. 7  the architecture design solution repository  102  may contain a portal architecture design solution module  118 , and a service-oriented architecture (SOA) architecture design solution module  117 . Each module  117 ,  118  is a plug-in into the system. The modules  117 ,  118  can be selected to be loaded onto the client computer  52  so that the application architect  101  can work on the many different aspects of an application architecture work. 
     The portal architecture design solution module  118  includes architecture framework for an application architect to design a portal application, for example using WebSphere® provided by IBM Corp. A graphical representation of the portal reference architecture  160  is shown in  FIG. 8 . The portal reference architecture  160  is a layered structure. The topmost layer of the portal reference architecture  160  is the user interface layer  162  which includes web devices to display contents, processes, and applications to users. The layer under the user interface layer  162  is the service layer  164 . The service layer  164  includes services to supply data, contents, processes, and applications to the user interface layer  162  to display. The layer under the service layer  164  is the enterprise bus layer  166 . The enterprise bus layer  166  provides connects to various back-end data repositories, information resources and legacy applications. The layer at the bottom of the portal reference architecture  160  is the data resource layer  168  which provides data, contents and legacy applications. 
     Referring back to  FIG. 6 , a subject matter expert  112 , for example a portal architecture expert designs the portal architecture design solution module and imports it into the architecture design solution repository  102  of the system using the solution collector and updater  108 . The portal architecture expert can use the solution collector and updater  108  to keep updating this module ensuring that the contents are up to date. 
     The work product generator  106  generates architecture design work products for example through a work product generator program  66 . The work product generator  106  retrieves stored answers from the application architect  101  and matches the answers to the data objects in the architecture design solution repository  102 . From the matched data objects, the system retrieves the contents to generate an architecture design work product  114 . 
     An architecture design work product  114  preferably contains a textual part (see below) and a graphical part (see  FIGS. 10-13 ). The textual part is generated by retrieving the descriptions from data objects. The graphical part is generated by retrieving the graphical representation from data objects. The work product generator  106  traverses the data object tree  130  and retrieves the description from each data object to compose a work product, as shown in  FIG. 9 . 
     For example and referring to  FIG. 9 , starting with operational model node of section 1, the work product generator program  66  travels as indicated by dashed line 0 to the operational model. From the operational model node in Section 1, a work product generator program  66  travels to the web node, Section 11.0 as indicated by dashed line 1 to determine which answer was chosen by the application architect  101  within the data object node. From the web tier node, a work product generator program  66  travels as indicated by dashed line 2 to Section 11.1 to the web type node to determine which answer was chosen by the application architect  101  within the data object node. From the web type node, a work product generator program  66  travels as indicated by dashed line 3 to Section 11.11 to the Internet node to determine which answer was chosen by the application architect  101  within the data object node. From the Internet node, a work product generator program  66  travels as indicated by dashed line 4 to Section 1.111 to the Internet Browser node to determine which answer was chosen by the application architect  101  within the data object node. From the Internet Browser node, a work product generator program  66  travels to the web tier node Section 11.0 through dashed lines 5, 6, 7. 
     From the web tier node, a work product generator program  66  travels to Section 11.N as indicated by dashed line 8 to node XXX. Once the work product generator program  66  has traveled through all of the nodes xxx, the work product generator program  66  travels back to the web tier node as indicated by dashed line 9 and moves to the operational model node as indicated by dashed line 10. From the operational model node, a work product generator program  66  travels to the DMZ tier web node as indicated by dashed line 11 to Section 2.0 and travels through all the nodes (not shown) and back to the operational model node as indicated by dashed line 12. From the operational model node, a work product generator program  66  travels to the Product tier web node as indicated by dashed line 13 to Section 3.0 and travels through all the nodes (not shown) and back to the operational model node as indicated by dashed line 14. From the operational model node, a work product generator program  66  travels to the Back-end tier web node as indicated by dashed line 15 to Section 4.0 and travels through all the nodes (not shown) and back to the operational model node as indicated by dashed line 16. From the operational mode node, a work product generation program  66  ends the travel of the data object tree as indicated by dashed line 17. 
     Assuming that the data objects are structured as shown in  FIG. 9 , the text portion of the architecture design work product  114  may be structured as follows: 
     Section 1.0 Operational Model 
     Section 1.1 Web Tier
         Section 1.11 Internet
           Section 1.111 Internet Browser
 
. . .
   
               

     Section 1.N XXX 
     . . . 
     Section 2.0 DMZ Tier 
     . . . 
     Section 3.0 Product Tier 
     . . . 
     Section 4.0 Back-end Tier 
     . . . 
     The work product generator  106  can also generate a graphical operational model diagram from the data objects. For example, if the website was to be Intranet type only, the web tier of the operational model diagram would be as shown in  FIG. 10 . In another example, if the website was to be Internet type only and the access was to be by a web browser only, the web tier of the graphical operational model would be displayed as shown in  FIG. 11 . In another example, if the website was to be Internet type only and the access was to be by a web browser and mobile device, the web tier of the graphical operational model would be displayed as shown in  FIG. 12 . In yet another example, if the website was to be both Internet and Intranet and the access was to be by a web browser, the web tier of the graphical operational model would be displayed as shown in  FIG. 13 . 
     The work product generator  106  can also generate other common architecture design work products for an application such as Architectural Decisions; Architecture Overview Diagram; Component Model; Deployment Unit; Operational Model; Non-functional Requirements; and Security Architecture. 
     The work products generated by the system are preferably specific to an application and some of the descriptions of data object nodes use meta-data. 
     The work products generated by the system are preferably specific to an application and since specific information may not be available at the time of creation of the work products, meta-data is used as a place holder. The meta-data may be words and/or phrases such as application name, customer name, computer node ID, computer names, etc. . . . The customization component  104  allows a user to enter the exact words and phrases to replace and manage the meta-data at a later time when the specific information is available regarding the application. 
     When the application architect requests to generate work products, the work product generator  106  retrieves those values from the customization component  104 , and replaces those meta-data in the description of data object nodes with those words and phrases. In this way, the work product generator  106  can generate the work products specific to an application. 
     For example, if the description within the work product is “display this computer name [computer name] in the footer of a portal page” and the application architect does not have the specific computer name at the time of work product generation, the phrase “computer name” acts as place holder and is the meta-data. Through the customization component  104 , an application architect can replace the meta-data, in this case “computer name” with “cloudlexbz3039.lexington.ibm.com” for example, so that the work product generated would then read “display this computer name cloudlexbz3039.lexington.ibm.com in the footer of a portal page” within the work product generated. 
       FIG. 14  illustrates internal and external components of client computer  52  and server computer  54  in which illustrative embodiments may be implemented. In  FIG. 14 , client computer  52  and server computer  54  include respective sets of internal components  800   a ,  800   b , and external components  900   a ,  900   b . Each of the sets of internal components  800   a ,  800   b  includes one or more processors  820 , one or more computer-readable RAMs  822  and one or more computer-readable ROMs  824  on one or more buses  826 , and one or more operating systems  828  and one or more computer-readable tangible storage devices  830 . The one or more operating systems  828 , a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  are stored on one or more of the computer-readable tangible storage devices  830  for execution by one or more of the processors  820  via one or more of the RAMs  822  (which typically include cache memory). In the embodiment illustrated in  FIG. 14 , each of the computer-readable tangible storage devices  830  is a magnetic disk storage device of an internal hard drive. Alternatively, each of the computer-readable tangible storage devices  830  is a semiconductor storage device such as ROM  824 , EPROM, flash memory or any other computer-readable tangible storage device that can store a computer program and digital information. 
     Each set of internal components  800   a ,  800   b  also includes a R/W drive or interface  832  to read from and write to one or more portable computer-readable tangible storage devices  936  such as a CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk or semiconductor storage device. Work product generator program  66 , an application characteristic program  68  and solution collector program  67  can be stored on one or more of the portable computer-readable tangible storage devices  936 , read via R/W drive or interface  832  and loaded into hard drive  830 . 
     Each set of internal components  800   a ,  800   b  also includes a network adapter or interface  836  such as a TCP/IP adapter card. Work product generator program  66 , an application characteristic program  68  and solution collector program  67  can be downloaded to computer  52  and server computer  54  from an external computer via a network (for example, the Internet, a local area network or other, wide area network) and network adapter or interface  836 . From the network adapter or interface  836 , work product generator program  66 , an application characteristic program  68  and solution collector program  67  are loaded into hard drive  830 . The network may comprise copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. 
     Each of the sets of external components  900   a ,  900   b  includes a computer display monitor  920 , a keyboard  930 , and a computer mouse  940 . Each of the sets of internal components  800   a ,  800   b  also includes device drivers  840  to interface to computer display monitor  920 , keyboard  930  and computer mouse  940 . The device drivers  840 , R/W drive or interface  832  and network adapter or interface  836  comprise hardware and software (stored in storage device  830  and/or ROM  824 ). 
     A work product generator program  66 , an application characteristic program  68  and a solution collector program  67  can be written in various programming languages including low-level, high-level, object-oriented or non object-oriented languages. Alternatively, the functions of a work product generator program  66 , an application characteristic program  68  and a solution collector program  67  can be implemented in whole or in part by computer circuits and other hardware (not shown). 
     Based on the foregoing, a computer system, a method and a program product have been disclosed for customizing architecture solutions and work product generation to requirements of an application. However, numerous modifications and substitutions can be made without deviating from the scope of the present invention. Therefore, the present invention has been disclosed by way of example and not limitation. 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
     Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
     Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.