Component-based and Service-oriented Software Development in Cloud Computing

Size: px
Start display at page:

Download "Component-based and Service-oriented Software Development in Cloud Computing"

Transcription

1 Component-based and Service-oriented Software Development in Cloud Computing A dissertation submitted to the University of Manchester for the degree of Master of Science in the Faculty of Computer Science 2017 Kai Liu School of Computer Science

2 Abstract Component-based Software Development (CBD) is a kind of efficient software development method which composes software from the pre-existing components and software units. The systems are not built from scratch which saves time of design, coding and testing and improves the software quality. The development method has been widely accepted by many companies and applied in a great deal of software. According to the component lifecycle, Component models can be divided into five categories. X-MAN is the representative of the idealised component lifecycle, which includes design phase, deployment phase and runtime phase. Service-oriented Software Development focuses on using reusable components which are provided by the service providers to design and composite the software. Service-oriented and Componentbased Software Development have some of the same characteristics. What s more, Service-oriented Software Development can dynamically adjust services according to different requirements at runtime. With the development of Component-based and Service-oriented Software Development, their drawbacks are becoming more and more obvious. In order to develop new software, developers need to store lots of program modules and configure different development environments. However, using Cloud Computing can make up for this flaw. The components can be stored in the cloud and users do not need to consider the problems caused by the development environment. At the same time, the entire development process can be carried out in the cloud. Therefore, this project attempts to combine these techniques and deploy the development tool of Componentbased and Service-oriented Software Development in the cloud. 1

3 Declaration No portion of the work referred to in the dissertation has been submitted in support of an application for another degree or qualification of this or any other university or other institute of learning 2

4 Copyright i. The author of this dissertation (including any appendices and/or schedules to this dissertation) owns certain copyright or related rights in it (the Copyright ) and s/he has given The University of Manchester certain rights to use such Copyright, including for administrative purposes. ii. Copies of this dissertation, either in full or in extracts and whether in hard or electronic copy, may be made only in accordance with the Copyright, Designs and Patents Act 1988 (as amended) and regulations issued under it or, where appropriate, in accordance with licensing agreements which the University has entered into. This page must form part of any such copies made. iii. The ownership of certain Copyright, patents, designs, trademarks and other intellectual property (the Intellectual Property ) and any reproductions of copyright works in the dissertation, for example graphs and tables ( Reproductions ), which may be described in this dissertation, may not be owned by the author and may be owned by third parties. Such Intellectual Property and Reproductions cannot and must not be made available for use without the prior written permission of the owner(s) of the relevant Intellectual Property and/or Reproductions. iv. Further information on the conditions under which disclosure, publication and commercialisation of this dissertation, the Copyright and any Intellectual Property and/or Reproductions described in it may take place is available in the University IP Policy, in any relevant Dissertation restriction declarations deposited in the University Library, and The University Library s regulations. 3

5 Acknowledgements I want to express my sincere gratitude to my tutor Dr. Kung Kiu Lau. Thanks for his careful guidance and constructive suggestions. I want to express my sincere gratitude to my tutor s Ph.D student: Simone Di cola and Chen Qian. Thank them for giving me great help. I want to express my love and gratitude to my parents and friends. Thanks for their understanding, care, support, encouragement and selfless help. 4

6 Content Abstract... 1 Declaration... 2 Copyright... 3 Acknowledgements... 4 Chapter Introduction Motivation Aims and Goals Report Outline Chapter Component-based Software Development Component-based Software Development An Idealised Component Lifecycle Current Software Component Models Design without Repository Design with Deposit-only Repository Development with Repository Design with Repository Design and Deployment with Repository Chapter Service-oriented Software Development Service-oriented Software Development Architecture Design and Development Process Planning Phase Analysis Phase Service Design Phase Construction Phase Test Phase Provisioning Phase Deployment Phase Execution Phase Monitoring Phase Chapter X-MAN Components Connectors Repository Chapter Cloud Computing Definition of Cloud Computing Cloud Computing Service Models

7 5.2.1 Infrastructure as a Service Platform as a Service Software as a Service Cloud Computing Deployment Models Private Cloud Public Cloud Community Cloud Hybrid Cloud Chapter Research Methods Selecting Tool Model Selecting Cloud Service Provider Selecting Cloud Services Amazon Elastic Compute Cloud Amazon Elastic Block Store Amazon Relational Database Service Amazon Simple Storage Service Amazon Virtual Private Cloud Software Development Methodology Agile Software Development Test-driven Development Development Tool and Language Chapter Design and Deployment Demand Analysis Structure of Prototype Design of Login Interface Design of Sharing Component Sharing and Acquiring Components Cloud Repository Table Design of Atomic Component Interface Creating Atomic Component Atomic Component and Interface Table Design of Composite Component Interface Define Composite Component mxgraph Create Composite Component Composite Component Table Design of Execution Interface Deployment Configure Amazon EC2 Instance Configure Amazon RDS Configure Amazon S Configure Amazon VPC

8 Chapter Testing Unit Testing Integration Testing System Testing Acceptance Testing Chapter Evaluation and Conclusion Evaluation Conclusion References

9 List of Figures Figure 2. 1: An Idealised Component Lifecycle (Lau, K-K & Di Cola, S, 2017) Figure 2. 2: Design without Repository (Lau, K.K., 2014) Figure 2. 3: Design with Deposit-only Repository (Lau, K.K., 2014) Figure 2. 4: Deployment with Repository (Lau, K.K., 2014) Figure 2. 5: Design with Repository (Lau, K.K., 2014) Figure 2. 6: Design and Deployment with Repository (Lau, K.K., 2014) Figure 3. 1: Service-oriented Architecture Model (Breivold, H.P. and Larsson, M., 2007) Figure 3. 2: The process of Service-oriented Design and Development (Papazoglou, M.P. and Van Den Heuvel, W.J., 2006) Figure 4. 1: Component Model (He, N et al., 2012) Figure 5. 1: Cloud Computing Layers (Aavindraa, 2012) Figure 5. 2: Cloud Layers (Sunil Joshi, 2014) Figure 5. 3: Three Types of Service Models (Marinescu, D.C., 2013) Figure 5. 4: Deployment Models of Cloud (Chandrasekaran, K., 2014) Figure 6. 1: Public Cloud Service Market Shares (Joe Panettieri, 2017) Figure 7. 1: Structure of Software Figure 7. 2: Login Interface Figure 7. 3: Create User Interface Figure 7. 4: Homepage Figure 7. 5: Share Components Figure 7. 6: Acquire Components

10 Figure 7. 7: Retrieve Components Figure 7. 8: Atomic Component Interface Figure 7. 9: Design Atomic Components Figure 7. 10: Compile Computation Unit Figure 7. 11: Composite Component Interface Figure 7. 12: Constructing Composite Component Figure 7. 13: Two Components Figure 7. 14: Generate XML Code Figure 7. 15: ATM Machine Figure 7. 16: Create Composite Component Figure 7. 17: Execution Interface Figure 7. 18: Result of Execution Figure 7. 19: Choose Linux Operating System Figure 7. 20: Amazon EC2 Instance Figure 7. 21: Amazon RDS Instance Figure 7. 22: Amazon S Figure 7. 23: Amazon VPC

11 List of Tables Table 6. 1: Comparison of Different Cloud Vendors Table 7. 1: User Information Table Table 7. 2: Cloud Repository Table Table 7. 3: Interface Table Table 7. 4: Atomic Component Table Table 7. 5: Composite Component Table Table 8. 1: PHP Unit Test Table 8. 2: JavaScript Unit Test Table 8. 3: Integration Testing

12 Chapter 1 Introduction In modern society, software has developed to play a very important role. Software is used to carry out rapid expansion in many fields like industry, business and education. Software is gradually becoming the core in many fields because it is able to integrate various information, knowledge and methods and use these in practical application. A wide variety of software affects all aspects of society. Various industries depend on software, which leads to a growing demand. Traditional methods of software development cannot meet the requirement of efficient and rapid development. An increasing number of software options brings many new problems that software is difficult to maintain, update and transplant. Traditional development method makes it almost impossible to solve these serious problems. In order to improve and solve these problems, it appears that many new software development methods are developing and Component-based Software Development is one of them. Component-based Software Development is a new approach which uses pre-built software components and units to assemble systems (Bachmann, F et al., 2000). Various software systems may include some same components which can be reused to build the new software. The software is composited by pre-built components rather than from scratch, which increases the reuse rate of components and significantly improves development efficiency. It is a bottom- up development method. The developers use the components which have been designed and stored in the repository to build various systems. The design phase, deployment phase and runtime phase form a lifecycle of components (Christiansson et al., 2002). There are many models such as POJOs, JavaBeans, OSGi, Acme, Koala and X-MAN. The benefits of Component-based Software Development include reducing production cost, decreasing time-to-market and increasing reuse rate (Kung-Kiu Lau and Simone di Cola, 2017). The Component-based Software is becoming more and more popular because of these advantages. It is widely used to develop various software. 11

13 Although Component-based Software Development has outstanding performance in the aspects of reuse, modularity and maintainability, it still cannot solve some of the existing problems in the development phase (Breivold, H.P. and Larsson, M., 2007). For example, the software developed by this method only runs in one environment usually. In order to make it run in different environments, developers need to develop different versions for each scenario, which wastes a lot of time and funds. Serviceoriented Software Development is a new method which can be used to deal with these problems. It supports rapid, low-cost and easy composition distributed development in heterogeneous environments (Breivold, H.P. and Larsson, M., 2007). Its features include abstraction, loose coupling, separation of concerns and component interoperability (Baghdadi, Y., Alani, B. and Al-Khanjari, Z., 2012). These features make software agile and flexible. Service-oriented Software Development has three types of actors: service providers, service users and service registries. The service provider defines a series of services and gives a description for each service. The service registry has service description and references from service providers. The function of service users is to retrieve the services in the service register. Cloud Computing is one of the most popular technologies and it promotes the development of Big Data and Artificial Intelligence. Cloud Computing is a new form of Internet-based technology which supports sharing the computing resources and transferring data via a network. The definition of Cloud Computing is that the applications provided by the services and these services are provided by the hardware and system software in the data centre over the Internet (JoSEP, A.D et al., 2010). The developer is able to select whatever configuration he wants and use the cloud computer to deploy any software. The developer just needs to use a local host to set up a virtual private network to connect a remote device. Then, the developer is able to manipulate the remote host. Without the restrictions of computer configuration, storage and space, the developer can use Cloud Computing to finish the work which could not be done before and improve the performance of existing software. Using Cloud Computing can save lots of costs 12

14 because all the hardware is rented and the hardware does not need extra space to put it. Cloud Computing has a great potential for development because of its inexpensive cost, flexible computing capabilities and limitless computing power (Abuelhassan, M. and Abdallah, M). Many companies have launched the corresponding service, such as AWS of Amazon, Azure of Microsoft and Google Cloud Platform. This technology has gained more and more attention from key companies. 1.1 Motivation The traditional development method always builds the software from scratch. With the growth of complexity and size of software, the software built by the traditional method is becoming more and more complicated and difficult to maintain and the whole development process will cost lots of money and time. At the same time, the quality of the software is also difficult to guarantee. Component-based Software Development is one of methods that can be used to create flexible, reusable, modular, low cost and highquality systems. The core concept of this method is to select pre-defined software units or components to compose the system. Therefore, the developer has to store all the components or units which may be used in his local host. These components will occupy a large amount of storage. It is inconvenient for the developers to communicate and share the results because these components are stored in their own local hosts. Meanwhile, the developer will need to spend a lot of time and energy setting up a development environment. These issues have become the bottlenecks which constrain the development of Component-based Software Development. Two of the most important paradigms in the software community and industry are Component-based and Service-oriented Software Development (Breivold, H.P. and Larsson, M., 2007). In order to solve the problem of development that cannot be addressed by Component-based Software Development, this approach is proposed and developed. Although they have some similarities in many senses, they focus on different concerns. The purpose of Service-oriented Software Development is to build 13

15 a system of rapid, low-cost and easy composition of distributed applications which can be deployed in a variety of operating environments (Breivold, H.P. and Larsson, M., 2007). The Web Service is a representative of Service-oriented Software Development. The developer can run the program over the Internet without considering the operating environment. The various services are fundamental elements which are utilised to compose the applications and solutions. This approach also utilises pre-existing services to build a system and meet certain requirements. Just like Component-based Software Development, Service-oriented Software Development needs many repositories to store lots of services which are able to be retrieved and used. This is also a main limitation of Service-oriented Software Development. Cloud Computing has always been considered the hottest technology since it has been put forward. With the development of network technology, the advantages of Cloud Computing have become increasingly obvious. More and more companies and developers are aware of its importance. Some enterprises grabbed this chance and then launched a lot of related products. AWS of Amazon, Azure of Microsoft and Google Cloud Platform have achieved success. This technology brings great changes to the Internet industry. Cloud Computing technology refers to the utilisation of plenty of lowcost computing units to provide various IT services over the Internet (Qian, L., Luo, Z., Du, Y. and Guo, L., 2009). The most important features of Cloud Computing include abundant computing resources, high scalability, dynamic resource allocation, shared resources and low cost. The unlimited storage space and powerful computing power of Cloud Computing make up for deficiencies of Component-based and Service-oriented Software Development. All the components and services are able to be stored in the cloud without capacity limitation. It increases the scalability and portability of Component-based and Service-oriented Software Development. The total development process can be finished in the cloud. The developers can share their components, units and services which are stored in the cloud and over the Internet. What s more, powerful computing power will enhance developing efficiency dramatically. Therefore, with the 14

16 support of Cloud Computing, the bottlenecks of Component-based and Serviceoriented Software Development will be broken and improve their development. 1.2 Aims and Goals The objective of the project is to explore the feasibility of deploying the tool of Component-based and Service-oriented Software Development in the cloud. At the same time, this project will combine with cloud technology to reduce the restrictions of using Component-based and Service-oriented method to develop software. The purpose of this project can be segmented into the following sections: 1. Find out a reasonable and representative model of Component-based and Serviceoriented Software Development that can be deployed in the cloud. 2. Pick out some suitable services and platforms from a large number of Cloud Computing service providers. 3. Finish the deployment of the model in the cloud and design an interactive interface for users. 4. Continuously improve and enhance the whole tool and make it become more userfriendly and interactive. The delivery of the project is to develop a tool which is deployed in the cloud and is used to carry out Component-based and Service-oriented development by users. This tool has a visual interaction interface, unlimited storage and powerful computing ability, which can help users to develop quickly. By using this tool, users can complete the entire development process in any location over the Internet. 1.3 Report Outline This report includes six parts, namely introduction, background knowledge, research methods, deployment process, evaluation and conclusion. In the first part, I will introduce the whole project and some related information briefly. Motivation and project objective have already been given in this part. In the next part, more specific 15

17 background knowledge of Component-based and Service-oriented Software Development will be introduced, like different categories of component models, idealised component lifecycle and development of Service-oriented Software Development in chapters two and three. Besides, I will introduce the model called X- MAN, which is selected to deploy in the cloud, along with the reason why it is chosen. The definition, development and some main cloud models are mentioned in chapter five. Then, chapter six is about the methods which are used in the project. These methods include various software models, cloud services, development methods and evaluation standards. In the part of deployment, I will explain the whole deployment process which includes demand analysis, overall design and cloud deployment. After that, I will test the tool in Chapter eight. Finally, the evaluation, conclusion, deficiency of the project and future work that needs to be done are introduced in the last chapter. 16

18 Chapter 2 Component-based Software Development The purpose of this section is to introduce the information of Component-based Software Development. At the beginning, it will introduce what is Component-based Software Development. Then the idealised component lifecycle and the current software component models, which are based on the idealised component lifecycle, will be described. 2.1 Component-based Software Development Component-based Software Development is a kind of software development method that develops software by assembling the pre-built software units or components (Crnković, I., 2003). Through this way, software is developed by many components which encapsulate data and operation rather than from scratch. A software component is composed of specified interfaces and explicit context dependencies. Three parties can use and deploy these components without barriers (C. Szyperski et al., 2002). The complex logic, structure and data are encapsulated in the components and all the services are supported by the interfaces. According to different types of components, current component models can be divided into three categories, namely models with objects as components, models with architectural units as components and models with encapsulated components. Models with objects as components are composed by objects and transmit messages directly by method call. Architectural units consist of the component models with architectural units as components. Different units communicate with each other via port connection and this way is called indirect message passing. The components of the last model are encapsulated atomic and composite components. Various components connect and communicate by control coordinator. Through assembling the software from pre-existing components, 17

19 Component-based Software Development is able to reduce production cost and shorten time to market (Lau, K-K & Di Cola, S, 2017). The complex structure is encapsulated in the components and all the services can be secured by interfaces. Therefore, developers no longer need to waste time to understand the complex structure and they just need to learn how to use the interfaces, which saves costs and time of development significantly. It also supports software reuse. These components can be reused in different systems by modifying a small part. It is more easy to find bugs and errors because of the modular system. The appearance of Component-based Software Development solves the issues of software development and promotes its development. 2.2 An Idealised Component Lifecycle A lifecycle describes a process of developing, deploying, operating, decomposing and reusing components. It consists of three different parts, namely design phase, deployment phase and runtime phase. In order to meet the requirement of shortening time-to-market, reducing costs and increasing flexibility, component-based development includes many development methods such as distributed development, parallel development and separation of the development process. An idealised component lifecycle has to meet the following requirements. First of all, the components are pre-existing. Component-based Software Development using already existing modules to build systems rather than from scratch, which significantly improves the development efficiency. This is the reason why it has so many advantages. In the whole process, it applies a repository to deposit the components in the design phase. At the same time, these stored components can be retrieved from the repository in the deployment phase. Secondly, components should be deployed by third party without obstacle. That means the development of components is not related to the deployment of components. These two phases are independent of each other and do not interact with each other. This feature ensures the reusability of components. In addition, it should support to copy and instantiate these components, which improves the reusability in the respect of code and deployment. This reusability increases the 18

20 flexibility of components and expands the scope of component use. Finally, the composite components which are composed by components can be stored in the repository. At the same time, they can be retrieved from the repository like those components in the deployment phase (Lau, K.K. and Wang, Z., 2007). In the Graph 2.1, a complete idealised component lifecycle is shown. Figure 2. 1: An Idealised Component Lifecycle (Lau, K-K & Di Cola, S, 2017) In the design phase, components can be deposited in the repository in source code or in binary from after compilation. Through appropriate composition operators, composite components can be composed by pre-existing components. These composites can be deposited and retrieved from the repository for further composition just like other components (Lau, K.K. and Wang, Z., 2007). The builder tool is very useful in the design phase. It can be used to compose the components which are retrieved from the repository or construct new components and then store them in the repository. In this phase, the components are generic templates which provide some abstract services. This method can promote the reuse of components. When applied to a specific system, these components can be altered and customised according to specific requirements. What s more, each component must have an interface to increase reusability. Additionally, the environmental dependencies and required resources should be taken into consideration 19

21 and recorded. The information can make components more readable and help users avoid many errors in the process of using. In the deployment phase, the systems are composed by the components which are retrieved from the repository. The components need to be altered according to a specific operation environment. In this stage, coordination is playing an important role to connect each component logically according to specific requirements. Meanwhile, the assembler tool is widely applied in the deployment phase. The function of this tool is to convert the components retrieved from the repository into binary code and add code to the system. After completing deployment, the whole system will be compiled into executable binary code. The system which is constructed in the deployment phase is instantiated and executed in the runtime phase. 2.3 Current Software Component Models According to different kinds of component models, the software component model can be divided into three different categories, namely objects, architectural units and encapsulated components. However, a more detailed and meaningful categorisation is described in the next chapter. The theory of an idealised component lifecycle leads to the appearance of this taxonomy. Through researching the categorisation, it can help us understand Component-based Software Development better. This chapter will describe and analyse these different kinds of component models Design without Repository In Category 1, it does not have a repository in the design phase. Therefore, there is no pre-existing component and each component has to be developed from scratch. These components cannot be deposited because of being without repository. The system is directly constructed by all components which are designed in the design phase because 20

22 they are without deployment phase. Then, the system is instantiated and executed in the runtime phase. POJOs, Acme, ArchJava and UML2.0 belong to this category. In the diagram 2.2, it shows the structure of Category 1. Figure 2. 2: Design without Repository (Lau, K.K., 2014) Design with Deposit-only Repository The structure of Category 2 is described in the Graph 2.3. In Category 2, it has a repository in the design phase. However, the only function of this repository is to deposit the components that are constructed in the design phase. These components are not able to be retrieved from the repository. It is possible to assemble the components but there is no new composition created after the design stage. As with Category 1, there is no deployment phase in Category 2. Hence, the composition constructed in the design phase will be executed directly in the runtime phase. EJB, OSGi,.NET, COM, CCM and Fractal are all of this category. Figure 2. 3: Design with Deposit-only Repository (Lau, K.K., 2014) 21

23 2.3.3 Development with Repository In Category 3, it has a repository that can be used to store new components in the design phase, but this repository cannot be used to retrieve components. During the design phase, there is no composite constructed because composition is impossible. Hence, there are no composites that can be deposited in the repository. In the deployment stage, components can be retrieved from the repository and they can be compiled into binary code by using the assembler tool (Lau, K.K. and Wang, Z., 2007). Then, components defined in the deployment phase will be instantiated and run in the runtime phase. Category 3 includes JavaBeans and Web Services. The structure of this type is showed in Figure 2.4. Figure 2. 4: Deployment with Repository (Lau, K.K., 2014) Design with Repository In Category 4, it has a repository that can be used to deposit the components during the design phase. Not as before, components are able to be retrieved from the repository. It also supports the composing of composite components which can be stored and retrieved from the repository. However, it does not support further composition and there is no deployment phase. The defined components in the design stage will be instantiated and executed in the runtime phase without changes. The Diagram 2.5 describes its structure clearly. Category 4 includes Koala, SOFA, KobrA, SCA, Palladio and ProCom. 22

24 Figure 2. 5: Design with Repository (Lau, K.K., 2014) Design and Deployment with Repository In the final category, there is a repository in the design phase and deployment phase. In the design, newly-constructed components can be deposited and retrieved from the repository. It allows composition and composite components to be developed and stored in the repository. It has a deployment phase that can be used to carry out further development. The components which are defined in the deployment phase will be instantiated and run in the runtime phase. This category is a representative of the idealised component lifecycle and meets its requirements. The Graph 2.6 introduces the whole structure. X-MAN belongs to this category. Figure 2. 6: Design and Deployment with Repository (Lau, K.K., 2014) 23

25 Chapter 3 Service-oriented Software Development Like Component-based Software Development, Service-oriented Software Development is another most suitable development method which can be utilised for designing and developing large scale and complex systems (Breivold, H.P. and Larsson, M., 2007). Service-oriented Software Development is originally derived from Component-based Software Development and, therefore, there are many similarities between Service-oriented and Component-based Software Development in some approaches and technologies. However, they still have a different emphasis. Component-based Software Development is mainly used in engineering aspects, such as embedded systems domains, desktop and graphical applications via designing and assembling components (Breivold, H.P. and Larsson, M., 2007). Service-oriented Software Development utilises various services to compose software. The purpose of Service-oriented Software Development is to narrow the gap between business and IT, to reduce project risk and improve project performance through the use of accurate and perfect services (Arsanjani, A., 2004). Service-oriented Software Development is usually used to design and implement a Web Service because it is based on open standard, which can provide more optional services for Web Service (Papazoglou, M.P. and Van Den Heuvel, W.J., 2006). This chapter will give a detailed introduction of Service-oriented Software Development including its notion, architecture and development process. 3.1 Service-oriented Software Development In order to meet the market demand and attract more users, the software has become more and more complex. Each update and maintenance will delete or increase some features, which brings a great burden to the developer in capital and manpower. The 24

26 appearance of Service-oriented Software Development is to simplify the creation and maintenance procedure of software (Godwin, M et al., 2012). It supports the development of rapid, low-cost distribution systems which can be deployed in various platforms and devices. This development method has been widely used in distributed systems and applications which are based on web service. Many famous enterprises implement this mean in their Web Services, such as Google and Amazon. Service-oriented Software Development is a method of designing the software which provides services for the end-user applications via various interfaces. It breaks a large scale and complex system down into a set of smaller, readable and manageable components. Then it utilises corresponding services to realise these requirements and construct an integrated system. The core unit of the architecture is service, which not only can be reused by the developers who develop it but also be deployed by the third part. The service is a unit of software which encapsulates business functionality. The functionality can be exposed to any source that uses well-defined interfaces to request it. In general, these services are provided by other individuals and groups (Keith, M., Demirkan, H. and Goul, M., 2009). These services will be deposited in a repository. However, unlike Component-based Software Development, there are a few repositories that exist in the development process of Service-oriented Software Development. As mentioned above, one is used to store services. The remaining repositories will be used to deposit service descriptions, service patterns, service resources and historical patterns. After that, it will generate a mapping engine that is helpful for developers and managers to retrieve services and assign resources accurately and dynamically (Keith, M., Demirkan, H. and Goul, M., 2009). This is one of reasons why the method can reduce risk and improve development efficiency. 25

27 3.2 Architecture Figure 3. 1: Service-oriented Architecture Model (Breivold, H.P. and Larsson, M., 2007) In Figure 3.1, its architecture is composed by three parts, namely Service Registry, Service Requester and Service Provider. The service provider provides specific services and defines the descriptions of different services. The service registry stores specific descriptions of services that come from service providers. They include service capabilities, interface information, behaviour of services during execution and service qualities. These descriptions form mapping relationships with corresponding services deposited in the service provider. The main function of service registry is to match the requests from the service requester with services from the service provider. Besides, it offers mechanisms of service publication and discovery (Breivold, H.P. and Larsson, M., 2007). Unlike the service registry and service provider, the service requester does not provide any services but it requests services. It retrieves appropriate services in the service registry through detailed descriptions of services. When it finds the service that it needs, it will create a dynamic connection with the service provider by HTTP or SOAP. Then it will invoke the corresponding service provided by the service provider and make interaction with that service. As mentioned before, binding between service requester and service provider is 26

28 dynamic. Therefore, this method only permits loose coupling, which can make the service requester and the service provider become more independent so they do not interact with each other. Low coupling means that the system can avoid redundancy and duplication of service more efficiently. The service description is the only way for the service requester to know the services provided by the service provider. Before that, the service requester knows nothing about the underlying logical structure and deployment of service. Meanwhile, the service provider does not know anything about the service requester and hence it does not have restrictions on the design and deployment environment. This is the reason why this development method can be used to do cross-platform development. 3.3 Design and Development Process The design and development of Service-oriented Software Development is an iterative and incremental process which consists of the following phases, namely planning, analysis, design, construction, testing, provisioning, deployment, monitoring and execution. The whole process is shown in Figure 3.2. The following part will give a detailed introduction about these phases. 27

29 Figure 3. 2: The process of Service-oriented Design and Development (Papazoglou, M.P. and Van Den Heuvel, W.J., 2006) Planning Phase The primary mission of this phase is to plan the project and analyse the feasibility of options. First of all, the manager can determine if the service is suitable for this project through analysing the current business environment. Then, it needs to determine whether the service can be realised through reviewing current technology. Besides, costs and benefits of the service should be taken into consideration. Finally, it also needs to refer to the project budget and time schedule Analysis Phase In the analysis phase, it needs to analyse the requirements of new applications and the impact of a new service on the whole project. Firstly, the developer should know to 28

30 identify the function of the service and how the project works and then find the best solution to add the new service to the project. Secondly, the developer needs to define the functionality scope of each service, which makes sure that the functionalities do not overlap each other. It can eliminate functional redundancy and duplication and decrease project complexity efficiently. In addition, the developer needs to analyse the gap between the functionality provided to the service and the requirements of the project. In the end, the developer has to make the analysis about the implementation process including underlying risks, profits and costs Service Design Phase Like Component-based Software Development, there are two ways to design the service in this phase. One is to develop new services and the other one is to use predefining services to assemble new services. The developer needs to design lowcoupling, independent, integrated and reusable services through careful design Construction Phase The service designed in the design phase will be defined and developed in this phase. Besides, the interfaces and descriptions of the service will be defined and provided as well Test Phase Test phase is the most important part of the whole process. The service functionality will be tested as to whether it meets the requirement. The gap between the actual behaviour and expected behaviour will be compared. If the result of testing is good, it means the project runs well and has fulfilled the requirement of the enterprise and customers. If the result of testing is not good enough, it means that developers have to spend extra time detecting defects and improving them. This phase includes various tests such as functional tests, stress tests, dynamic tests and security tests. 29

31 3.3.6 Provisioning Phase As mentioned before, the service can not only be developed by the company itself but also can be obtained from other providers. However, these services are not free and some of them are very expensive. Trading services is a complicated process. The developer should consider service quality, service fee, whether the suitable types of services have been selected and whether it identifies with the requirements for the services. It is a complex phase that combines technical and commercial aspects (Papazoglou, M.P. and Van Den Heuvel, W.J., 2006) Deployment Phase This is a process to realise a variety of services. There are four options that can be utilised for deployment, namely Green-field development, Top-down development, Bottom-up development and Meet-in-the-middle development Execution Phase In this phase, all the services are deployed successfully and executable. Then, the service requester can retrieve the service it needs according to the service descriptions. After that, it will bind the service provider dynamically and invoke corresponding services Monitoring Phase The purpose of this phase is to continue to improve the quality and reusability of the services. It uses many QoS metrics to evaluate the quality of service and determine whether the quality meets the required standard. It will detect and report defects. Then developers can promote the service quality by improving shortcomings. 30

32 Chapter 4 X-MAN With the increasingly more function of the software, the code software becomes more and more complex and difficult to understand. The appearance of object-oriented programming is to solve this problem. The core notion of object-oriented programming is encapsulation. It means controlling the interaction of data by interfaces and hiding internal details. The encapsulation is also called enclosing behaviour in a capsule (Lau, K. K & Di Cola, S 2017). After encapsulation, code will be well-structured and its readability, expandability and maintainability will be increased significantly. X-MAN adopts this encapsulation concept. It is a component model that is composed by encapsulated components and composition connectors (Lau, K. K et al., 2005). The component of X-MAN only provides services and does not require services. The data flow and control flow of X-MAN is separated. The exogenous connectors only encapsulate control information, while the encapsulated components encapsulate computation and data. The communication of different components is made by connectors and different components can invoke each other. 4.1 Components The component is the important part of X-MAN. It is constructed of the computation unit and the connector. Components encapsulate the computation which includes a set of methods. These methods can provide various services. The component of X-MAN only provides services and it does not require services. Therefore, it will not invoke other components. That means the services offered by the component are independent and they can be fulfilled without depending on other components. It ensures the independence and integrity of services and will not be interfered with by other factors. The interface of the component is used to provide services and connect other 31

33 components by connectors. Atomic components and composite components are called components. The atomic component is the most basic unit of the component. It is constructed using an invocation connector and the computation unit. Its structure is showed in Figure 4.7. The U represents the computation unit and the invocation connector is represented by IU. The computation unit includes various methods which can provide a series of independent and integrated services. These services can be accessed through the invocation connector. As can be seen from the Graph 4.7, two atomic components connected by a composition connector consist of a composite component. Apart from atomic components, the composite component can be composed of other composite components. The composite component not only encapsulates computation but also encapsulates control. The computation of the composite component is encapsulated in its sub-components, while the control is encapsulated in the composition connector. The structure of the subcomponent is similar with that of the composite component. The whole composite component is a layered nested hierarchical structure (He, N et al., 2012). The composite component only provides services implemented by methods in computation units, which is the same as the atomic component. Figure 4. 1: Component Model (He, N et al., 2012) 32

34 4.2 Connectors The connector has two different categories, namely invocation connector and composition connector which are shown in the Diagram 4.7. The invocation connector is responsible for connecting computation units and also provides the interface, which can be used to access internal functions of the component. The composition connector is a component that encapsulates control information. The function of the composition connector is to control, coordinate and link different components. The composition connector has two main categories; one is called sequencer connector and the other one is called selector connector. The sequencer let the components connect in sequence and the selector is responsible for choosing suitable components according to specific requirements. Additionally, there are some special connectors which are called adaptors and aggregators such as Loop and Guard. 4.3 Repository Repository is an important part in X-MAN. It exists in the design phase and deployment phase of an idealised component lifecycle. In the design phase, repository is used to deposit the components and it also provides a retrieve function. Components can be retrieved from the repository. Then they can deposit back in the repository after being composed. In the deployment phase, components can be retrieved from the repository as well. 33

35 Chapter 5 Cloud Computing Cloud Computing is not a new concept. This concept was raised many years ago. However, it was not popular because the idea was too advanced with barriers of backward technology and insufficient productivity. Many years ago, the computers and World-Wide-Web were not popular and they had just emerged. Most people knew nothing about these. Therefore, it was much more difficult for them to understand Cloud Computing. The hardware and network conditions at that time were not possible to implement Cloud Computing. The concept of Cloud Computing returned to the public s attention in the 21 st century. With the improvement of production technology and the popularity of network infrastructure, the most important problem of Cloud Computing called Quality of Service has been solved. Nowadays, Cloud Computing is growing rapidly and everyone can enjoy the high-quality service which is provided by Cloud Computing. It has replaced the floppy disk, the CD and the flash memory because of its stable and reliable service and unlimited storage space. The data is always stored in the cloud and people do not need to worry about losing data. Besides, we no longer need to spend time in the custody of USB flash disks. Cloud Computing can let us access data and software at any time and place. Many companies also launch services of Cloud Computing such as Amazon Web Services, Microsoft Azure and Google Cloud Platform. Cloud Computing has played an important role in our daily life. Cloud Computing can also stimulate the development of X-MAN. After a series of improvements, each phase and repository of X-MAN can be deployed in the cloud. It has many advantages. First of all, developers do not need to waste time deploying the development environment. Developers connect and access X-MAN which is deployed in the cloud through web browsers from local computers. The whole development process from design to operation can be completed in the cloud. This method reduces the development time and improves the development efficiency significantly. Besides, 34

36 it is convenient for developers to share components and exchange development experience. The developer can retrieve components from the repository located in the cloud and share these components to other developers. This process can be finished by clicking a few mouse clicks and it will not cost much time. Then, in the design phase, developers can use the components created by other developers. However, sharing components is very difficult if X-MAN is installed on the local host. There are problems that need to be considered, such as different development environments, how to transfer and how to deposit. Thirdly, it improves the reusability of components. The developers can use the components designed by themselves. At the same time, they are able to utilise the components constructed by other developers. The same components can be deployed in many different systems. In addition, developers do not worry about storage space not being enough. The cloud can provide unlimited storage. The developers can deposit as many components as they want in the cloud. Apart from unlimited storage, it can provide a more powerful processor, more rapid network and a variety of available development tools. In this part, I will introduce the Cloud Computer from aspects of the definition, the service model and the deployment model. 5.1 Definition of Cloud Computing Nowadays, Cloud Computing has become a buzzword which is accepted and comprehended. Cloud Computing provides a sharable model with configurable computing resources including networks, servers, storage services and applications and this model can be accessed at any time and place via network (Mell, P. and Grance, T., 2011). In other words, Cloud Computing means that users can utilise web browsers to access and store data and software that is located on the remote host through network (Chandrasekaran, K., 2014). The data and programs stored in the cloud can be accessed by any device at any time and place. There is no need to worry about the loss of data because of losing laptops and hardware damage. With the increasing demands of services provides by Cloud Computing, it has got rapid 35

37 development, especially in the services of Cloud Storage. Cloud Storage is popular because of its convenience, stabilisation and large storage space. It can store almost anything such as files, photographs, audio, programs and videos, etc. The most important feature of Cloud Storage is that it supports users to share data online. The whole sharing process is simple, convenient and efficient. Google Drive, Microsoft OneDrive and Dropbox are all very excellent and popular products of Cloud Storage. Therefore, many people may feel confused and they will consider that Cloud Storage is Cloud Computing. Actually, Cloud Storage is only a part of Cloud Computing. The storage is one of the basic IT and business resources provided by Cloud Computing. Apart from storage, Cloud Computing has some other resources such as servers, network and applications, etc., which can be utilised by the users dynamically (Chandrasekaran, K., 2014). The website is a good example that uses the technology of Cloud Computing. We can browse the website via network because it utilises the network resource provided by Cloud Computing. The website deployed in the cloud can be accessed and can offer services because of the server resource of Cloud Computing. Through the use of storage services of Cloud Computing, the character, picture and video can be posted on the web. In addition, Cloud Computing can be combined with many other technologies because of its very strong scalability. Apart from IT technology, it can be combined with finance, engineering and education. This is another reason why Cloud Computing develops rapidly. 5.2 Cloud Computing Service Models On the basis of different services provided by Cloud Computing, the NIST (National Institute of Standards and Technology) defines three standard models: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS) (Alliance, C., 2011). It is also called the service-platform-infrastructure model of the cloud (Chandrasekaran, K., 2014). Figure 5.1 shows three different service models and in which layers they are located. In addition, it briefly introduces the corresponding services that are provided by different service models. More information about different 36

38 service models will be introduced in the following section. Figure 5. 1: Cloud Computing Layers (Aavindraa, 2012) Infrastructure as a Service Diagram 5.2 shows that Infrastructure as a Service is the foundation of Cloud Computing. The delivery service of IaaS is computer infrastructure (Rimal, B.P., Choi, E. and Lumb, I., 2009). That means it provides various fundamental computing resources such as processing, storage and networks (Mell, P. and Grance, T., 2011). These resources are usually known as raw materials. It means that these resources are initialised and unmodified. How to use them depends on the consumer. The user is able to utilise these resources to deploy arbitrary software including applications and operating systems. This reflects the excellent scalability and flexibility of IaaS. Figure 5.3 shows that IaaS has the most functions. However, the underlying cloud infrastructure and hardware are controlled and managed by IaaS vendors. Most IaaS vendors take two ways of charging: one is charging for using time and the other one is charging for using resources. IaaS is more like a form of hosting. The materials provided to the customer are initialised. If the consumer needs more resources, these 37

39 resources can be bought from the IaaS vendor. The consumer can run any software on this host which is assembled by these materials. However, this host is virtual and managed by the vendor. The consumer can only operate the host through network. Amazon Web Services is a popular Cloud Computing provider that offers IaaS. Figure 5. 2: Cloud Layers (Sunil Joshi, 2014) Platform as a Service Platform as a Service is a cloud-based development platform that is used to do rapid development, run programs and manage applications. The provider of PaaS takes responsibility for the provision and maintenance of raw computing resources to ensure the host runs correctly. This responsibility is the same as that of the IaaS vendor. Apart from this, the PaaS provider needs to provision and manage various software tools that are used to develop and deploy applications. As shown in Figure 5.2, compared with IaaS, PaaS has a higher level of abstraction (Voorsluys, W., Broberg, J. and Buyya, R., 2011). It offers a software platform that can be used to run systems (Vaquero, L. M. et al., 2008). Thus, consumers develop and deploys applications without installing any tools in their own computer and considering the complex underlying hardware (Boniface, M. et al., 2010). Programming languages, libraries, services and tools are 38

40 provided by the vendor. The objective of PaaS is to be the developer s friend (Boniface, M. et al., 2010). The developers only need to focus on development and do not care about the lower infrastructure. Therefore, developers do not need to write extra code and install many development tools, which saves the time and effort of developers and improves the development efficiency. Meanwhile, PaaS has good expandability. It supports the development of multiple platforms such as mobile devices, computers and browsers. Google AppEngine, Microsoft Azure and Heroku, etc., are popular and wellknown PaaS providers Software as a Service Software as a Service is one kind of cloud service which uses software functionality as a service (Lee, J.Y., Lee, J.W. and Kim, S.D., 2009). In Graph 5.2, it shows that SaaS is on the top layer of Cloud Computing. It encapsulates the lower and middle resources such as processing, storage, networks and software authorisation, etc. SaaS eliminate the need to install and run software on the local host because these configurations are deployed in the cloud. The consumer is able to access the applications managed by third-part vendors via web browsers. The majority of these applications can be run in the browser without download and installing extra software. Besides, these applications can be accessed through any network equipment including laptops, desktops, smartphones and tablet PCs, etc., at any time and in any place. It supports multiple user access to the same service at the same time. In addition, it is user-friendly and users are able to enjoy the services directly once they subscribe. There is no need to consider the computing resources, configuration and software authentication. Figure 5.3 shows that consumers are enabled the use of applications supplied by the service providers but platform and infrastructure are controlled and managed by the vendors. SaaS has become the most popular cloud service because of these benefits. 39

41 Figure 5. 3: Three Types of Service Models (Marinescu, D.C., 2013) 5.3 Cloud Computing Deployment Models With the rapid development of Cloud Computing, the models of cloud have begun to diversity. According to different methods of deployed cloud, deployment models of Cloud Computing can be grouped into four categories, namely private cloud, public cloud, community cloud and hybrid cloud. Figure 5.4 shows these deployment models and the relationship between them. They have differences on several aspects such as the size of the cloud, location and security, etc., (Chandrasekaran, K., 2014). The following section will introduce these models in detail. 40

42 Figure 5. 4: Deployment Models of Cloud (Chandrasekaran, K., 2014) Private Cloud Private cloud is created for a single consumer. This consumer can be an individual, a company or an organisation. The private cloud is fully controlled, managed and organised by the consumer. Compared with other deployment models, the size of the private cloud is usually the smallest. However, it is the easiest to maintain. It has a high level of security because it is an internal cloud. The cost of a private cloud is the highest among these models Public Cloud Public cloud refers to the cloud that provides open use for the public (Mell, P. and Grance, T., 2011). The public cloud is owned, controlled and managed by a public organisation such as an enterprise and government organisation. The consumers of public cloud can be anyone from any place. Public cloud supports multi-users and does not have limits for the number of users (Chandrasekaran, K., 2014). In addition, the fee of public cloud is also the least. However, it is not secure enough because it has no restrictions and anyone can use it. 41

43 5.3.3 Community Cloud Community cloud is a type of cloud hosting that is shared by a particular community of users from different organisations. These community members share the mission, security requirements and policy. The community cloud is owned, controlled and managed by one or more members in the community or a third party. It can be regarded as the further extension of the private cloud (Chandrasekaran, K., 2014). The objective of community cloud is to allow data exchange between members in a relatively secure space. Therefore, it has a higher level of security than a public cloud but lower than a private cloud. Its fee is between the private cloud and public cloud as well Hybrid Cloud Hybrid Cloud is a complex deployment model composed of two or three other deployment models. It is also regarded as a combination of the public and private cloud (Chandrasekaran, K., 2014). Through utilising specific technology, private cloud, public cloud and community cloud are bound together and they can exchange data crossing the boundaries. Hybrid cloud has the advantages of private and public clouds. Therefore, it has higher security and better scalability. However, it is hard to manage and maintain because of its complex structure. X-MAN will be deployed in the hybrid cloud. In order to ensure security of data, it needs to separate private data from public data. Consequently, repository of users will be stored in the private cloud and a public repository will be deployed in the public cloud. Users can share their components with other users through the public cloud. 42

44 Chapter 6 Research Methods In this section, I will introduce the research methods used in my project. These methods include selecting a suitable model, choosing an appropriate cloud vendor, adopting good development methods and development tools. 6.1 Selecting Tool Model Service-oriented Software Development comes from Component-based Software Development. Service-oriented Software Development is a method of design software system by using provided services and Component-based Software Development and a way of assembling software by using pre-existing components. Components and services are closely related. Services can be regarded as a kind of simple component. Services and components are their building blocks. Therefore, they have many similarities. These two kinds of software development methods both emphasise the flexibility, reusability and independence of components. These methods separate design phase and deployment phase. That means component or service developers and users cannot be the same person. In the development phase, developers can utilise the components or services designed by a third party. There are five representative software component models which are mentioned in Chapter 2. Category 5: Design and Deployment with Repository is the only one that meets all the requirements of the idealised component lifecycle. This category has just one member that is X-MAN for now. The atomic and composite components of X- MAN are independent encapsulated components. It is convenient and simple for developers to store and transplant. The composite component and system designed by X-MAN allow for the use of pre-existing components and the components provided by 43

45 third parties. This enhances the reusability and flexibility of components significantly. At the same time, it meets the requirements of Service-oriented Software Development. The developers can share their components via network more quickly if X-MAN is deployed in the cloud. Deploying X-MAN in the cloud can strengthen its advantages, shorten time-to-market and improve software quality. 6.2 Selecting Cloud Service Provider Nowadays, the technology of Cloud Computing has become more and more mature. Its unlimited storage space, efficient computing, no additional maintenance and many other advantages attract increasing a number of companies to migrate their business to the cloud. At the same time, many enterprises realise the potential value of Cloud Computing. They have explored out a mature business model and launched corresponding cloud services. A lot of companies provide various cloud services now. Most services they provide are similar but they have their own features in certain aspects. Therefore, it is not easy to find a suitable cloud vendor. The purpose of the project is to provide a development platform of Component-based and Service-oriented Software Development and the cloud is a platform which is utilised to deploy X-MAN and save data. Thus, the stability of cloud service is most important. This requirement can filter out many companies with poor quality of cloud service. There is an analysis report about the market share of cloud services made by Synergy Research. It listed the cloud vendors which acquire high market shares because of providing high quality service. 44

46 Figure 6. 1: Public Cloud Service Market Shares (Joe Panettieri, 2017) Figure 6.1 shows that Amazon Web Service dominate the Cloud Market, followed by Microsoft Azure, Google Cloud Platform and IBM Cloud. According to the result of the report, I decide to choose these four cloud vendors as candidates and study them from the aspects of the host running environment, programming language supported, storage, network services and price. 45

47 Table 6. 1: Comparison of Different Cloud Vendors Table 6.1 has listed the detailed information about host running environment, programming language supported, storage, network services and price. All the 46

48 platforms support Linux and Windows but the versions they supported may be different. For example, AWS supports Amazon Linux, SUSE, Red Hat and Ubuntu, while Google Cloud Platform supports Debian, CentOS and CoreOS, etc. I am familiar with Ubuntu and therefore I prefer to choose the cloud that supports Ubuntu. These cloud all support many mainstream development languages. In order to finish the development of X- MAN, I need to use Java, PHP and JavaScript. Only AWS allows for the use of JavaScript to develop the system in the four cloud platforms. These platforms launch various storage services. Some storage service functions of different cloud platforms are similar. They all provide vast storage space and excellent search function which can help users retrieve components deposited in the cloud rapidly. A good networking service is also important. It can improve transmission efficiency and network stability. Azure offer more network services and IBM Cloud pays more attention to the network security. Price is also a very important factor that needs to be considered. This project may use many services and last for at least three months. It will cost a lot if I choose to use Azure or Google Cloud Platform. However, only AWS and IBM Cloud provide a free version but 30 days is not enough for me to complete the project. Therefore, considering the above factors, AWS is the most suitable cloud platform to develop and deploy X-MAN. 6.3 Selecting Cloud Services Amazon Web Services was a cloud computing service launched by Amazon in It provides various on-demand cloud computing services including compute, storage, database and networking, etc. Apart from these, it also offers users a lot of auxiliary tools like developer tools, management tools and application services, etc. Every function can be used via web browsers and users will not be asked to install extra software. Besides, the operation interface is very user-friendly and every part has many auxiliary documents and user guides which are easy for the user to utilise. In this project, I choose Amazon Elastic Compute Cloud (EC2), Amazon Elastic Block Store (EBS), Amazon Relational Database Service (RDS), Amazon Virtual Private Cloud (VPC), 47

49 Amazon Simple Storage Service (S3) and Amazon Identity and Access Management (IAM). In the following part, I will give a brief introduce about these services Amazon Elastic Compute Cloud Amazon EC2 is a terminal providing scalable computing capacity in the Amazon Web Services (Amazon, 2017a). EC2 is a kind of virtual machine which has been deployed in the cloud. In this virtual environment, users can utilize many instances with running different operation systems. It supports many versions of Linux and Windows. Leveraging EC2, users are able to complete the same operations just like when they use their personal computers. With EC2, users do not have to spend much money on hardware and therefore they can save more time, energy and capital. What s more, EC2 can connect to other cloud services provided by AWS like EBS and RDS. They can transmit data rapidly and conveniently. Besides, it has many security measures to protect the information and data of the user. In this project, an example of EC2 is used as a server to deploy X-MAN and provide services Amazon Elastic Block Store Amazon EBS is the same as a physical hard drive which provides large volume storage space. The main use of EBS is to provide durable block-level storage for Amazon EC2 (Amazon, 2015). One Amazon EC2 instance can attach many Amazon EBS volumes, but one Amazon EBS volume can only be used by one Amazon EC2 instance (Amazon, 2015). Besides, Amazon EBS provides storage services. The user can use Amazon EBS to save files and data via its I/O interfaces. In addition, in order to guarantee the data safety, it provides function of point-in-time snapshots of volumes and the records are stored in Amazon S3. These records can be as the backups of existing volumes. In this project, I leverage Amazon EBS to boot the instance of Amazon EC Amazon Relational Database Service The purpose of Amazon RDS is to provide the full features and capabilities of a 48

50 relational database for developers or businesses (Amazon, 2014). It has the stable, reliable, secure and inexpensive services of an industry-standard relational database, which can be used to create a relational database in the cloud or manage the database migrated from the local server. The DB instance is the primary building block of Amazon RDS (Amazon, 2014). A running DB instance needs a DB engine. MySQL, MariaDB, PostgreSQL, Oracle, SQL Server and Amazon Aurora can be as the DB engine to run the DB instance. In this project, I deploy MySQL database in the DB instance. In addition, databases of multi users can be deposited in the same DB instance. Therefore, the user who logs into the tool will have an independent database. It is convenient to manage the user s database and protect the data of the user. For protecting the data, Amazon RDS supports two methods of backup and recovery. One is Automated Backups and the other one is DB Snapshots Amazon Simple Storage Service Amazon S3 is an object storage that is used to store and retrieve data at any time and from anywhere of web and applications, etc., via its interface (Amazon, 2006). S3 can store any format of data such as photos, videos and documents, etc. (Amazon, 2017b). It is convenient for use to store and take out the data without considering the data format. The bucket is the primary container in the Amazon S3 and, therefore, the user can store the same type of data in one bucket (Amazon, 2006). It is easy to manage the data in this way. In this project, I leverage three buckets of S3 to store the backup of the tool of X-MAN, point-in-time snapshots of Amazon RDS and point-in-time snapshots of Amazon EBS respectively Amazon Virtual Private Cloud Amazon VPC is a virtual network which can be customised by the user. It is like a local area network that is deployed in the local server and routers. Amazon VPC provides IPv4 and IPv6 network address for use. Although IPv6 provides a better quality of services and higher transmission efficiency, it has not been widely used. Thus, for the 49

51 convenience of users, I choose to use IPv4 to build Amazon VPC. Amazon VPC can be used to control which Amazon Web Services can be accessed in the user s group network. In addition, users can decide which services can be visited by the public and which services are private via adjusting inbound and outbound rules (Amazon, 2017c). I have made two Amazon VPC groups. The private group includes the services of Amazon EC2, Amazon S3 and only I can access the private group to modify settings, upload data and restore the backup. The public can use the server deployed in the EC2 instance to access the tool via the public group. Leveraging Amazon VPC is an efficient way to keep data and network secure. 6.4 Software Development Methodology In the software development process, there are many risks, challenges and uncertain factors. These may cause longer development time, more budget and bugs, even the failure of the project. Thus, it is necessary to select a suitable software development methodology. The framework which is utilised to structure, plan and control the process of developing an information system is called a software development methodology (Selecting a development approach, 2008). A good software development methodology can provide accurate estimates, set clear tasks and predict possible pitfalls. These are helpful to improve development efficiency, shorten the development cycle and raise software quality. After developing over many years, software development methodology became mature and diverse. Many popular development technologies emerge, such as waterfall, prototyping, spiral development and agile, etc. Therefore, it is crucial to select a suitable software development methodology. After considering the scale of the project, development cycle and characteristics of each method, I finally decide to adopt agile software development and test-driven development. The following sections will introduce these two kinds of development methodology respectively and how they are utilised in my project. 50

52 6.4.1 Agile Software Development In the conventional software development, developers need to spend lots of time discussing the specific requirements, designing scheme and final result with clients. The information will be collected and written into the document. After that, developers can design software structure, build models, realise function, test and inspect. In addition, during the development process, the developers have to do a lot of documentation to record each development step. The whole process is very complicated and waste a huge amount of time and energy. This development method has many problems. Firstly, most of the clients do not know what they want or what functions they want the software to have at the beginning of the project. In many cases, clients cannot express their requirements exactly because they have no idea what the software looks like. It is a serious problem which will cause developers to be unable to comprehend the meaning of clients. Besides, it is hardly to make changes during the development process. If clients want to change or add new requirements, developers cannot make any adjustments immediately (Cohen, D., Lindvall, M. and Costa, P., 2003). Nowadays, it is difficult to define all the requirements before the beginning of projects because of rapid changes of market conditions (Beck, K et al., 2001). In order to improve this situation, some developers propose a new method called agile software development. Agile software development is derived from the famous Manifesto for Agile Software Development. It is a new software development method that supports adaptive planning, development, early delivery, continuous improvement and rapid response to changes (Agile Alliance, 2013). It is an incremental and iterative development process and each stage has delivery. Its ultimate goal is to design and develop excellent software which can satisfy the customer after continuous improvement. It is a client-driven software development methodology (Beck, K et al., 2001). The clients are able to put forward new demands at any stage and the developers will do rapid and flexible response and changes to these requirements. 51

53 In addition, the users can participate in the entire development process, which is useful to enhance communication between clients and developers. Moreover, it simplifies the development process that developers do not need to write so many useless documents. Only important documents will be created and kept. Therefore, developers spend more time and energy on developing software to improve the quality and shorten time-tomarket. They are able to use excellent technology and good design to enhance agility continuously (Beck, K et al., 2001). I divide my project into different stages. They are login phase, homepage phase, atom phase, component phase, execution phase and integration phase. Every phase involves planning, analysis, design, coding and testing. Each stage will have delivery as well. For example, in the login phase, I need to analyse what elements a login interface needs. Then I design a login interface according to analysis and write code to implement this interface. After that, I can test the function and integrity of my program. In addition, my supervisor acts as a client who works with me together, proposes new requirements at any time and points out the insufficiency of my software. I must deal with these problems, improve my software and add new functions rapidly before going to the next stage. It is an incremental and iterative process Test-driven Development Test-driven development is a new software development methodology that is gaining increasing attention from developers. It is different from the conventional way. The traditional development process follows this sequence of steps, namely, requirements specification, software design, implementation, integration system test and deployment. However, the development steps of test-driven development are totally different. It moves tests from the end of coding to the beginning (Janzen, D. and Saiedian, H., 2005). After analysing the requirements, the developer must write an automated unit test case first (Bhat, T. and Nagappan, N., 2006). Then, this test is run to make sure that they cannot pass because there is no executable code to run yet. Next, the developer needs 52

54 to write the code to make the code pass the test. After that, the quality of code needs to be improved by refactor and eliminating any duplication. Then running the test again to guarantee the modified code can pass the test. After finishing this part, the developer can design the next test and follow the above steps to complete development. Besides, the developer should ensure the new code does not break the previous tests. Finally, system test and integrity test will be conducted. Test-driven development is an iterative and incremental development process. These tests are derived from requirements. They set clear goals for the developer and guide the developer to write code and make the development. This development methodology is helpful to improve product quality. The developer can gain continuous feedbacks for the development cycle of test-then-code (Williams, L., Maximilien, E.M. and Vouk, M., 2003). The defects and bugs can be detected and solved in the early stages. In addition, it can provide rapid responses which help enhance development efficiency. Test-driven development reduces the time between the code writing and test writing that can offer the developer a lot of useful feedbacks early (Aniche, M. and Gerosa, M.A., 2015). These feedbacks can motivate the developer to create code efficiently. In my project, I combine agile and test-driven development methodology. I do the requirements specification firstly. Then, according to the demand analysis, I design a series of unit tests at the beginning of each iteration. After that, I add new code to pass the test and refactor the existing code. Finally, I run the system test and integrity test. 6.5 Development Tool and Language Selecting suitable development tool and language is very important. A suitable development tool and language can enhance the development efficiency and quality of project. The tool of component-based and service-oriented software development is a kind of web application which is accessed by the web browser. Therefore, I decide to adopt the architecture of LAMP. LAMP is an acronym of the names of the Linux 53

55 operating system, the Apache HTTP Server, the MySQL relational database management system and the PHP programming language. LAMP is an archetypal model of web service stack which is very suitable to build web applications and dynamic websites. It has many advantages. Firstly, this platform is very economical because all the software is open source and free to use and modify. Although the software is free, the services it provided are high-quality, stable and reliable. Secondly, it supports cross-platform development. It can be deployed on the Windows or Linux. Besides, it has a high performance. It can handle plenty of data and supports multi-user access to the website at the same time. Nowadays, LAMP is the most popular web development platform and a majority of enterprises utilise it to design their websites because of its benefits. In addition, Java is another programming language used in my project. As one of the most famous objected-oriented programming language, Java is very suitable to design the components. It can enhance the reusability and independence of components. The components in the repository are designed and executed by Java code. I choose Atom as the main compiler because the whole development process is conducted in Linux. It has outstanding scalability because it is compatible with multiple programming language. Besides, it provides a lot of expansion packages of programming language for use to install. That means I can use it to complete most of the development. The most important is that it supports the interaction of different languages and hybrid web technology. In addition, it is an open source development tool and supports multi-platform development. Apart from Atom, Eclipse is also used in the project. AWS provides the technical support for Eclipse. AWS Toolkit can be installed and deployed in the Eclipse directly. The program in the Eclipse can be uploaded to the instance of EC2 straightaway. This function is very helpful, which helps me to simplify the process of deployment and shorten development time. 54

56 Chapter 7 Design and Deployment The purpose of this project is to explore the feasibility of designing and deploying a tool that can be used by users to make Component-based and Service-oriented Software Development in the cloud. X-MAN is a software development model that meets the requirements of Component-based and Service-oriented Software Development. Therefore, this section mainly discusses the process of designing and deploying X- MAN in the cloud and how to use this tool to develop software. 7.1 Demand Analysis The demand analysis is the first step of developing any system. Meanwhile, it is the most important part of the whole development process. Requirement analysis is the foundation of any development. Specific and distinct requirements are very helpful to develop a system. I choose Agile as the development method in this project. Therefore, I use the user story to direct me to finish the design and development. The user stories are the simple and short descriptions about the features that software needs and the function that the end-user wants to use. Creating using stories is an effective way to analyse the requirements of users. Writing user stories should follow the regulations of INVEST. INVEST is the acronym of Independent, Negotiable, Valuable, Estimate, Small and Testable. The independent user stories are better because independent user stories will not influence each other and make software modularised. In one sprint, the developer can focus on solving one user story. Negotiable means that the user story is short and briefly and will not include too much detail. The user stories are not written into the contract but are recorded in the cards. It guarantees the flexibility of the user story because the developer can negotiate with the user to adjust the user story. The user stories should be valuable to the users and meet the requirements of customers. 55

57 Estimable means that the developer can estimate the size of the user story and how long it takes. The small user story refer to the size of the user story, which should not be too large and one user story cannot contain too many requirements. The large and complex user story is difficult for developers to estimate and make a plan. However, the size of user stories should not be too small. The appropriate size of user stories depends on the capability of the developer or team and technology user stories needed. In addition, the user story must be testable and the result of completing the user story can be tested by the customer. In this project, the user stories are created according to INVERST regulations. A part of user stories is derived from the requirements of X-MAN, Component-based and Service-oriented Software Development and other user stories are proposed by my supervisor and his Ph.D students that act as my users in my project. Some user stories are created in the beginning of design and some user stories are added during the development process. I will list all user stories that are used in my project in the following section. 1. As a new user, I can create my own account so that I am able to start developing the system. 2. As a user, I need the system to save my account information so that I do not need to register an account every time. 3. As an old user, I can login to the system with my existing account so that I can continue to do my development. 4. As a user, I am able to log out of the system so that my account can be protected. 5. As a user, I need different function operations so that I can choose the corresponding function. 6. As a user, I want all the operations to be completed in the cloud and I do not want to install any extra tool. 7. As a user, I need a table that can list the essential information of all atomic components I already have. 8. As a user, I can design and create the atomic components. 9. As a user, I can save the atomic components that I create in the cloud. 56

58 10. As a user, I can modify the atomic components that I already have. 11. As a user, I can delete the atomic components that I do not need. 12. As a user, I can decide which atomic components can be shared and which cannot be shared. 13. As a user, I can view all the composite components that I already have. 14. As a user, I can use the atomic components and composite components that have already existed in my account to build new composite components. 15. As a user, I can use the composite components I build to create new composite components. 16. As a user, I can delete the composite components that I do not need. 17. As a user, I decide which composite components can be shared and which I do not want to share. 18. As a user, I am able to execute the components which exist in my account. 19. As a user, I need a cloud repository to share the components with other users. 20. As a user, I need a cloud repository that can be used to share components with other users. 21. As a user, I can see all the components, including atomic components and composite components shared by other users. 22. As a user, I need a table to display some necessary information of the components shared by other users. 23. As a user, I can acquire the components shared by other users via the cloud repository. These are the user stories used in my project. A user story is only used to set the goal that needs to be fulfilled in each sprint. It does not include many details. Therefore, apart from Agile, I also adopt Test-Driven Development. Every user story can be decomposed into smaller tasks. For each task, I write the test first and then add necessary code to let the test pass. For example, the first user story can be broken into many tasks. Task one, it is necessary to design a user-friendly interface of creating new accounts. Task two, the system should automatically validate the user name of the new 57

59 user in case it and existing user names are repeated. Task three, the system can validate whether the two passwords users enter are matched and they cannot be empty at the same time. Task four, the account information must be stored in the database which is located in the cloud. For each task, I write the corresponding test first. In most cases, one task may need more than one test. For example, I write four tasks for task four. The first test is used to test whether the database can be opened successfully. I leverage the second test to test whether the data can be written into the database. Test four is utilised to test whether the database can be closed successfully. The purpose of the last test is to test whether data can be read from the database successfully when the database is open again. With these tests, I can finish the development efficiently. Meanwhile, it helps me simplify my system through avoiding writing too much repetitive and redundant code. In the development process, I finish one user story in each iteration. Besides, many new user stories are proposed after every iteration. I add these new user stories in the sequence. Then I will change the order of the user stories in the sequence according to their importance and emergency degree. 7.2 Structure of Prototype In this project, I choose the cloud services provided by Amazon Web Services. The reasons why I use Amazon Web Services have been explained in Chapter 5. The whole system is deployed in the VM of Amazon EC2 instance which is installed in the Amazon EBS. Figure 6.1 describes the structure of the whole system. The tool is a web-based system so users can access the system directly through public address declared by the server. The private address of Amazon EC2 instance is invisible to the user. For new users, they need to register new accounts and then they can login to the system. All the users can login to the system without other additional verification. Amazon EC2 is used as a server to publish websites, provide web services, complete data interaction and compile the code. A majority of the features of the system front-end are realised by the Amazon EC2 and 58

60 back-end features such as data access and transfer, which are deployed in the Amazon RDS. All user data and information of components are stored or extracted from the Amazon RDS. Once a new account is created, a new database and a series of corresponding tables will be built in the Amazon RDS. In order to enhance security, users databases are separated and independent. The users are only allowed to access their own database. What s more, these databases also act as the private repository of the user. Besides, there is a cloud repository located in the public database that can be accessed by every user. The users can leverage it to share their components with other users. The function of automate snapshot has been turned on to back up data. The backups will be saved in the Amazon S3. Besides, the Amazon S3 also stores the backups of Amazon EC2. Once Amazon EC2 instance crashes or some problems occur in the Amazon RDS, it will be very easy and rapid to use backups to recover data. All the services are connected by the Amazon VPC. Using Amazon VPC can improve the transmission rate and network security efficiently because it can filter any irrelevant flow. Figure 7. 1: Structure of Software 59

61 7.3 Design of Login Interface When the user inputs the IP address into the web browser, it will skip to the login interface which has been shown in Figure 7.2. The user who already has an account can input username and password directly. If the username is existing and the password is correct, the user will login to the system and do development. However, if the username is not existing or password is wrong, the user will not enter the system and it will give a corresponding alert according to different errors. Figure 7. 2: Login Interface For new users, they can click the button called Create A New Account and then the page will jump to Create User Interface. Figure 7.3 shows the interface of Creating New User. The new user can leverage this page to register an account. Meanwhile, the user should ensure the username input is unique and will not repeat with existing usernames. Besides, the password that the user inputs in the first time is exactly the same as the second time. At the same time, both of them cannot be null. The system will detect automatically whether the content user input fulfils the requirements. If it meets all the requirements, the new account will be created successfully. If it does not fulfil all the requirements, the new account will not be created and the system will offer corresponding error messages. The user needs to modify the information according to 60

62 the error messages. Figure 7. 3: Create User Interface For the convenience of user login, a table is designed to store user information. Table 7.1 shows what information will be stored in the server. Once a new account is registered successfully, the information will be written in the table. The primary key of the table is ID. ID is a unique value which is generated by the system. The value of ID is increased from zero and it cannot be null. The value of the new user s ID depends on the number of existing users in the server. The auto-increment function of ID is disabled in all the tables. This is because I find this function causes sequence problems in practical application. Therefore, the values of ID are calculated after traversing the table. Using this method can ensure the ID of each user is exclusive and is convenient to traverse the table and retrieve user information. Besides, Username must be unique as well. All values are meaningful so none of them can be null. Table 7. 1: User Information Table 61

63 7.4 Design of Sharing Component There is a list of buttons on the left of the homepage, namely, Atomic, Composite and Execution (Figure 7.4). Through clicking these different buttons, the user can enter different modules. In the middle of the homepage, this is a table called Cloud Repository. Figure 7. 4: Homepage Sharing and Acquiring Components In order to enhance the security of user data, the repository of each user is separate, independent and stored in their private cloud. Users are not allowed to exchange data directly. This means users repositories are private and one user cannot access other users repositories. However, one of the main objectives of the project is to establish a sharing mechanism that can allow the customer to share components with other users. Therefore, the Cloud Repository is applied in this tool. Cloud Repository is a public repository that can be access by all the registered users. It is like a bridge connecting different users repositories. Users can choose the components, including atomic components and composite components, that they want to share (Figure 7.5). Then the shared components will be uploaded to Cloud Repository first. 62

64 Figure 7. 5: Share Components The table of Cloud Repository lists all the components, including atomic components and composite components shared by all users. This table appears automatically in the homepage of every user. If users want to acquire components listed in the table, they just click the button of Acquire as shown in Figure 7.6 and then this component will be added in users private repositories. In the table, it also lists some other information like Description, Name, Author and Time, which is helpful for users to pick out the components they want. The method of combining private repository and public repository is effective to protect user data. The user has the right to decide which components can be shared and which cannot. However, it will not affect components sharing. All the components are stored in the cloud and the whole sharing process will not cost any time. 63

65 Figure 7. 6: Acquire Components Besides, it provides a retrieval function. The users can leverage a search box locating on the top of the homepage to retrieve the component they need by component name. Figure 7.7 shows the result of searching. The retrieval function can reduce the search time efficiently and identify what the component user wants accurately. Figure 7. 7: Retrieve Components Cloud Repository Table Table 7.2 describes the basic information of the components deposited in the Cloud Repository. The primary key of the table is ID. The value of ID is unique and it starts from zero. An ID can uniquely identify one component in the Cloud Repository. The 64

66 Cloud Repository deposits atomic components and composite components at the same time so ComponentType is used to record the type of components. ComponentName is used to save the names of components and the descriptions of these components are stored in ComponentDescription. SharingTime refers to the time that the component is shared. ComponentAuthor records which user shares this component. The names of component are defined by different users so they are different to avoid duplication. However, the components with the same name can be distinguished according to ComponentDescription, ComponentAuthor and SharingTime. In addition, the computation units and interface information are deposited in ComponentCode and ComponentInterface. Only the value of ID is unique but none of them can be null. Table 7. 2: Cloud Repository Table 7.5 Design of Atomic Component Interface When the user clicks on the button called Atomic of homepage, the webpage will skip to atomic component page, as shown in Figure 7.8. In the middle of the page, there is a table called Atomic Component Table. This table lists all the components the user has including; the atomic components created by the user and acquired from the Cloud 65

67 Repository. ID represents the orders of atomic components that are added. The names of atomic components are shown in the column of AtomName and Description is used to record the main usage of atomic components. Apart from ID, AtomName and Description, this table offers two operations: Delete and Share. Through using the Delete button, the user can delete the atomic components from private repository. Button Share can share the atomic components in the Cloud Repository. In addition, it provides a retrieval function. The user can use the search box to search the atomic components by name. Figure 7. 8: Atomic Component Interface Creating Atomic Component Allowing users to design components is one of the most important functions of this prototype. By clicking the button Add, the webpage will jump to the creating page. Before creating a new atomic component, some essential information needs to be filled (Figure 7.9). Component Name means the component name defined by the designer. The content of Description can be a brief introduction about this component. There is only one output of each atomic component because every component just contains one computation unit. However, the amount of input can be controlled by the user. The user can add as many inputs as he wants. The type of data of the input and output has many kinds, such as Integer, Float, Char, Boolean and String. Besides, the name of output and 66

68 input are customised by the user. Figure 7. 9: Design Atomic Components After filling out the information, the system will complete the definition of the component and initialisation in the back-end. An atomic component with invocation connector has been created. Then, the user only needs to input the code of the computation unit. If the compilation is successful, the whole component will be deposited in the private repository, as shown in Figure Although Componentbased Software Development supports the encapsulation of black box, grey box and white box, Service-oriented Software Development only supports black box encapsulation. Thus, the components in this prototype are encapsulated in black box. If the user wants to modify the existing components, they have to delete the old component and create a new one. 67

69 Figure 7. 10: Compile Computation Unit Atomic Component and Interface Table The details of the interface are stored in the interface table, as shown in Table 7.3. The InterfaceID is the primary key of the table and it represents the sequence number of the interface. Therefore, InterfaceID is unique and cannot be reduplicative. The values of Name record the different interface names that defined the users. ComponentID represents which interface belongs to which component. The value of ComponentID equals the ID of different components, including atomic components and composite components. Thus, ComponentID must be unique. InterfaceType indicates that the interface is an output or an input. The datatype of the interface is stored in DataType. In addition, this table not only stores the interfaces of atomic components but also stores the interfaces of composite components. 68

70 Table 7. 3: Interface Table The atomic component table is used to save the rest of the information (Table 7.4). ID is the serial number of the atomic component so it must be unique. It is also the primary key of the table. The atomic component name defined by user is saved in the Name. The Name has to be unique, which is convenient for the user to retrieve the component via the component name. The Computation Unit saves the code of computation unit edited by the customer. The description information of different components is stored in the column of Description. Table 7. 4: Atomic Component Table 7.6 Design of Composite Component Interface When the user clicks on the button called Composite on the home page, the webpage will skip to the composite component module (Figure 7.11). There is a table called 69

71 Composite Component Table which appears in the middle of the page. This table is similar to that in the atomic component page. It also shows the ID, Name and Description of composite components. In addition, users can delete the composite components they do not need and share the composite components they want. Retrieval function is available and users can find the composite components they want by the names of composite components. Figure 7. 11: Composite Component Interface Define Composite Component Apart from creating atomic components, another important function of this prototype is that it allows customers to use pre-existing components to construct new composite components. When the user clicked on the Add button, the page will jump to the construct page. Figure 7.12 describes an example of constructing a composite component. First of all, some necessary information includes the name of component and a brief description about the component needs to be written. Then, the customer should determine the input and output of the composite component. A composite component only has one output but it can have more than one input, just like the atomic component. In addition, the data type and name of input and output are customised by the user. In the next step, the user needs to choose the components he wants to use. If the customer wants to select a component, they just need to click the status button in the column of Operation. At the same time, the user needs to set the number of 70

72 components. If the number of the component is more than one, the system will generate two instances with different names automatically, as shown in Figure Besides, this table will list all the components in the user s repository, including the components the user created and acquired from the Cloud Repository. Apart from atomic components, it also supports the use of pre-existing composite components to build a new composite component. Figure 7. 12: Constructing Composite Component 71

73 Figure 7. 13: Two Components Defining the composite component and selecting needed components is the first step of constructing the composite component. The next step is to connect these components with connectors. However, it is impossible for customers to finish component connection and build control and data flow through text interface. Using graphical interface to finish these tasks is a better choice. Graphical interface is more intuitive and easier to understand for the user. It can simplify the operation and enhance interactivity. After searching a lot of materials from the internet, I find that mxgraph is a suitable tool which can be used to construct the composite component mxgraph mxgraph is a diagramming library which is created by JavaScript. It is used to create interactive graph and charting applications which can be run in most browsers. These interactive diagrams and graphs can be embedded in the html page. Apart from JavaScript, it also supports PHP,.NET and Java. I choose JavaScript to deploy mxgraph in the web page. It is because JavaScript is a kind of network scripting language with good interactivity. mxgraph, written by JavaScript, can be deployed in the webpage directly and embedded in the html code. It also has high responding time because it 72

74 does not need to load any third-party plug-ins. In addition, mxgraph can generate XML code according to the graph displaying on the page. Figure 7.14 shows the XML code generated by mxgraph. In this case, I connect Selector and Cardreader_0 with a directed line. This code lists all the objects used including component, interface and edge and each object has a unique ID. This code records each cell s name, size, shape, location, etc., in detail. If this cell is an edge, its source and target are recorded as well. This XML code with tree-structured hierarchy is suitable to record and save graph structure. Besides, compared with graphs, it is more convenient to analysis XML code transformed by the graph. Figure 7. 14: Generate XML Code In my project, I use back-end to receive the component details defined by users. Then I leverage JavaScript to translate the information into JavaScript code and input the code into mxgraph. mxgraph will parse the code, generate corresponding graphs and display these graphs in the canvas of front-end. The connector can be dragged into the canvas from left Toolbar directly. The diamond represents Selector, while the triangle represents Sequencer. Then the customer can connect these components and connectors with directed lines to finish setting data flow and control flow. Finally, the XML code of the graph will be transferred to the back-end. After analysing the XML code, it is convenient to find the relationships between the components and then map to the 73

75 corresponding components. Figure 7.15 is an example of leveraging the tool to construct a composite component simulating an ATM Machine. 74

76 75 Figure 7. 15: ATM Machine

77 7.6.3 Create Composite Component After constructing the composite component successfully, the ports of input and output will be defined and initialised automatically. According to the result of analysing XML code, it will get the relationships between the components and map to the corresponding components. Then, it generates the source code of the composite component (Figure 7.16). In the end, all the information will be stored in the producer s repository. Figure 7. 16: Create Composite Component Composite Component Table The composite component table, as shown in Table 7.5, is used to store composite component related information. ID is the serial number of the composite component and the primary key of the table. Therefore, it must be unique. The name of component is recorded in the column of Name and a brief description is saved in the column of Description. The column of Code is used to store the source code of component. In 76

78 addition, the port information is stored in the Interface Table (Table 7.3) that has been mentioned before. Table 7. 5: Composite Component Table 7.7 Design of Execution Interface In the Execution page, the table lists all the components the customer has as shown in Figure The table also provides some basic information of the components. The user can choose these components to test and execute. However, the user can only execute one component each time. Figure 7. 17: Execution Interface In Figure 7.17, the composite component called ATM_Machine is chosen to execute. The structure of this component is shown in Figure 6.14 and its source code and interface information has been found in Figure It has two input ports and one 77

79 output port. Therefore, this component needs the user to input two values, namely, AccountID and Operation as shown in Figure The default balance of account 1111 is 1,000 pounds. The ATM_Machine provides three operations, namely, Balance, Withdraw and Deposit. These three different operations are represented by three corresponding atomic components. When Operation equal 1, means Balance is chosen by Selector, ATM_Machine will display current account balance. When Operation equal 2, means Withdraw is chosen by Selector, 100 pounds are withdrawn from the account automatically and ATM_Machine will display the remaining balance of account. When Operation equal 2, means Deposit is chosen by Selector, 100 pounds are deposited into the account and ATM_Machine will display the current balance of account. In Figure 7.18 Operation equal 2 and thus the balance is 900 pounds. Figure 7. 18: Result of Execution 7.8 Deployment This section introduces how to deploy this prototype in the Amazon Web Services. Amazon EC2 instance is acting as a server, while Amazon RDS is used to store user data and a series of components data. The snapshot of Amazon RDS and Amazon EBS are saving in Amazon S3. The virtual network environment is controlled by Amazon VPC. 78

80 7.8.1 Configure Amazon EC2 Instance There are many operation systems, including Linux and Windows, that can be implemented in Amazon EC2. I choose Linux operating system because my prototype adopts LAMP structure. However, for Linux operating system, there are still many options, as shown in Figure I choose Ubuntu Server because I am familiar with the Linux operation system of Ubuntu. Besides, it is suitable to run a server. After the instance is launched, I need to use the private key generated by the EC2 via using PuTTY to connect the EC2 instance. Figure 7.20 shows the status of EC2 instance. After the connection, Linux EC2 instance can be operated just as usual. Linux operating system in EC2 instance is the same as that in the local host. Then, I install Apache HTTP Server which is used to publish the webpage and analyse PHP language. In order to compile PHP language, the module of PHP 7 is also necessary to be installed. In addition, I also configure JDK 1.8 in the EC2 instance because the components in the prototype are created and executed by Java. Figure 7. 19: Choose Linux Operating System 79

81 Figure 7. 20: Amazon EC2 Instance Configure Amazon RDS Like Amazon EC2, before using Amazon RDS, it also needs to initialise a database instance. Amazon RDS offers many options of DB Engine, such as Amazon Aurora, MySQL, MariaDB, ORACLE, PostgreSQL and SQL Server. I choose MySQL as the DB Engine. The DB instance status is shown in Figure The user information and component data are stored in DB instance. Through setting the endpoint of DB instance and Amazon VPC, EC2 instance can establish a connection with DB instance directly. DB instance and EC2 instance can exchange data via this connection. Figure 7. 21: Amazon RDS Instance 80

82 7.8.3 Configure Amazon S3 The configuration of Amazon S3 is relatively simple. It just needs to build buckets to save data. However, the name of the bucket must be unique across all existing bucket names in Amazon S3. In Figure 7.22, I build two new buckets to store the snapshot of Amazon RBS and Amazon EBS. Figure 7. 22: Amazon S Configure Amazon VPC Amazon VPC is a good tool to control the flow in the cloud. Through Amazon VPC, I design a private group to control access permissions (Figure 7.23). Only Amazon EC2 instance can access Amazon RDS and users have no right to access Amazon RDS directly. In order to protect Amazon EC2 instance, only I can use SSH to access EC2 instance. However, the user can still use the prototype deployed in EC2 instance via public address. It is effective to protect the data security and enhance the system stability. 81

83 Figure 7. 23: Amazon VPC 82

Configuration Management for Component-based Systems

Configuration Management for Component-based Systems Configuration Management for Component-based Systems Magnus Larsson Ivica Crnkovic Development and Research Department of Computer Science ABB Automation Products AB Mälardalen University 721 59 Västerås,

More information

Top 4 considerations for choosing a converged infrastructure for private clouds

Top 4 considerations for choosing a converged infrastructure for private clouds Top 4 considerations for choosing a converged infrastructure for private clouds Organizations are increasingly turning to private clouds to improve efficiencies, lower costs, enhance agility and address

More information

A SOFTWARE COMPONENT MODEL THAT IS BOTH CONTROL-DRIVEN AND DATA-DRIVEN

A SOFTWARE COMPONENT MODEL THAT IS BOTH CONTROL-DRIVEN AND DATA-DRIVEN A SOFTWARE COMPONENT MODEL THAT IS BOTH CONTROL-DRIVEN AND DATA-DRIVEN A thesis submitted to The University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical

More information

INTERACTION PATTERNS AS COMPOSITE CONNECTORS IN COMPONENT-BASED SOFTWARE DEVELOPMENT

INTERACTION PATTERNS AS COMPOSITE CONNECTORS IN COMPONENT-BASED SOFTWARE DEVELOPMENT INTERACTION PATTERNS AS COMPOSITE CONNECTORS IN COMPONENT-BASED SOFTWARE DEVELOPMENT A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering

More information

Introduction to Cloud Computing

Introduction to Cloud Computing Introduction to Cloud Computing 1 Outline 1. A brief history 2. Definition 3. Motivation, Benefit, Risk 4. Concepts 2 Outline 1. A brief history 2. Definition 3. Motivation, Benefit, Risk 4. Concepts 3

More information

Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles

Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles Hongyu Pei Breivold, Magnus Larsson ABB AB, Corporate Research, 721 78 Västerås, Sweden {hongyu.pei-breivold, magnus.larsson}@se.abb.com

More information

SOFTWARE ARCHITECTURES ARCHITECTURAL STYLES SCALING UP PERFORMANCE

SOFTWARE ARCHITECTURES ARCHITECTURAL STYLES SCALING UP PERFORMANCE SOFTWARE ARCHITECTURES ARCHITECTURAL STYLES SCALING UP PERFORMANCE Tomas Cerny, Software Engineering, FEE, CTU in Prague, 2014 1 ARCHITECTURES SW Architectures usually complex Often we reduce the abstraction

More information

IN software engineering, component-based development

IN software engineering, component-based development IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007 709 Software Component Models Kung-Kiu Lau and Zheng Wang Abstract Component-based development (CBD) is an important emerging topic

More information

Towards The Adoption of Modern Software Development Approach: Component Based Software Engineering

Towards The Adoption of Modern Software Development Approach: Component Based Software Engineering Indian Journal of Science and Technology, Vol 9(32), DOI: 10.17485/ijst/2016/v9i32/100187, August 2016 ISSN (Print) : 0974-6846 ISSN (Online) : 0974-5645 Towards The Adoption of Modern Software Development

More information

The 7 Habits of Highly Effective API and Service Management

The 7 Habits of Highly Effective API and Service Management 7 Habits of Highly Effective API and Service Management: Introduction The 7 Habits of Highly Effective API and Service Management... A New Enterprise challenge has emerged. With the number of APIs growing

More information

Reflective Java and A Reflective Component-Based Transaction Architecture

Reflective Java and A Reflective Component-Based Transaction Architecture Reflective Java and A Reflective Component-Based Transaction Architecture Zhixue Wu APM Ltd., Poseidon House, Castle Park, Cambridge CB3 0RD UK +44 1223 568930 zhixue.wu@citrix.com ABSTRACT In this paper,

More information

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications By, Janakiram MSV Executive Summary Application development has gone through a fundamental shift in the recent past.

More information

Small Cells as a Service rethinking the mobile operator business

Small Cells as a Service rethinking the mobile operator business Small Cells as a Service rethinking the mobile operator business Mats Eriksson, CEO Arctos Labs Scandinavia AB -02-18 1 Executive summary Mobile operators (MNOs) face a huge challenge in meeting the data

More information

Accelerate Your Enterprise Private Cloud Initiative

Accelerate Your Enterprise Private Cloud Initiative Cisco Cloud Comprehensive, enterprise cloud enablement services help you realize a secure, agile, and highly automated infrastructure-as-a-service (IaaS) environment for cost-effective, rapid IT service

More information

INFS 214: Introduction to Computing

INFS 214: Introduction to Computing INFS 214: Introduction to Computing Session 13 Cloud Computing Lecturer: Dr. Ebenezer Ankrah, Dept. of Information Studies Contact Information: eankrah@ug.edu.gh College of Education School of Continuing

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Cloud Storage Submitted in partial fulfillment of the requirement for the award of degree of Bachelor of Technology in Computer Science

Cloud Storage Submitted in partial fulfillment of the requirement for the award of degree of Bachelor of Technology in Computer Science A Seminar report On Cloud Storage Submitted in partial fulfillment of the requirement for the award of degree of Bachelor of Technology in Computer Science SUBMITTED TO: SUBMITTED BY: Acknowledgement I

More information

xiii A. Hayden Lindsey IBM Distinguished Engineer and Director, Studio Tools Foreword

xiii A. Hayden Lindsey IBM Distinguished Engineer and Director, Studio Tools Foreword Foreword Business applications are increasingly leveraging Web technologies. Naturally this is true for Internet applications, but it is also true for intranet and extranet applications applications that

More information

Introduction To Cloud Computing

Introduction To Cloud Computing Introduction To Cloud Computing What is Cloud Computing? Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g.,

More information

(9A05803) WEB SERVICES (ELECTIVE - III)

(9A05803) WEB SERVICES (ELECTIVE - III) 1 UNIT III (9A05803) WEB SERVICES (ELECTIVE - III) Web services Architecture: web services architecture and its characteristics, core building blocks of web services, standards and technologies available

More information

Cloud Computing: Making the Right Choice for Your Organization

Cloud Computing: Making the Right Choice for Your Organization Cloud Computing: Making the Right Choice for Your Organization A decade ago, cloud computing was on the leading edge. Now, 95 percent of businesses use cloud technology, and Gartner says that by 2020,

More information

Abstract. main advantage with cloud computing is that, the risk of infrastructure maintenance reduces a

Abstract. main advantage with cloud computing is that, the risk of infrastructure maintenance reduces a Abstract Cloud computing is the key technology widely used across most of the organizations. The main advantage with cloud computing is that, the risk of infrastructure maintenance reduces a lot. Most

More information

Easily Managing Hybrid IT with Transformation Technology

Easily Managing Hybrid IT with Transformation Technology White Paper White Paper Managing Public Cloud Computing in the Enterprise Easily Managing Hybrid IT with Transformation Technology A Quick Start Guide 1 Table of Contents Abstract... 3 Traditional Approaches

More information

Oracle Tuxedo. CORBA Technical Articles 11g Release 1 ( ) March 2010

Oracle Tuxedo. CORBA Technical Articles 11g Release 1 ( ) March 2010 Oracle Tuxedo CORBA Technical Articles 11g Release 1 (11.1.1.1.0) March 2010 Oracle Tuxedo CORBA Technical Articles, 11g Release 1 (11.1.1.1.0) Copyright 1996, 2010, Oracle and/or its affiliates. All rights

More information

iserver Free Archimate ArchiMate 1.0 Template Stencil: Getting from Started Orbus Guide Software Thanks for Downloading the Free ArchiMate Template! Orbus Software have created a set of Visio ArchiMate

More information

Using JBI for Service-Oriented Integration (SOI)

Using JBI for Service-Oriented Integration (SOI) Using JBI for -Oriented Integration (SOI) Ron Ten-Hove, Sun Microsystems January 27, 2006 2006, Sun Microsystems Inc. Introduction How do you use a service-oriented architecture (SOA)? This is an important

More information

FACETs. Technical Report 05/19/2010

FACETs. Technical Report 05/19/2010 F3 FACETs Technical Report 05/19/2010 PROJECT OVERVIEW... 4 BASIC REQUIREMENTS... 4 CONSTRAINTS... 5 DEVELOPMENT PROCESS... 5 PLANNED/ACTUAL SCHEDULE... 6 SYSTEM DESIGN... 6 PRODUCT AND PROCESS METRICS...

More information

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis UNIT I INTRODUCTION OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis Design Implementation Testing Maintenance

More information

Software Architecture

Software Architecture Software Architecture Does software architecture global design?, architect designer? Overview What is it, why bother? Architecture Design Viewpoints and view models Architectural styles Architecture asssessment

More information

The Design and Implementation of Disaster Recovery in Dual-active Cloud Center

The Design and Implementation of Disaster Recovery in Dual-active Cloud Center International Conference on Information Sciences, Machinery, Materials and Energy (ICISMME 2015) The Design and Implementation of Disaster Recovery in Dual-active Cloud Center Xiao Chen 1, a, Longjun Zhang

More information

Hierarchical vs. Flat Component Models

Hierarchical vs. Flat Component Models Hierarchical vs. Flat Component Models František Plášil, Petr Hnětynka DISTRIBUTED SYSTEMS RESEARCH GROUP http://nenya.ms.mff.cuni.cz Outline Component models (CM) Desired Features Flat vers. hierarchical

More information

Hybrid Cloud 1. ebookiness created by the HPE Europe Division of Ingram Micro

Hybrid Cloud 1. ebookiness created by the HPE Europe Division of Ingram Micro Hybrid Cloud 1 contents 3 Hybrid IT: the path to the Cloud HPE & Microsoft: the strongest commitment to the Hybrid cloud 4 5 Accelerate your business with the hybrid cloud offered by HPE and Azure Why

More information

Component models. Page 1

Component models. Page 1 Component Models and Technology Component-based Software Engineering Ivica Crnkovic ivica.crnkovic@mdh.se Page 1 Overview Introduction ACME Architectural Description Language Java Bean Component Model

More information

Master of Science Thesis. Modeling deployment and allocation in the Progress IDE

Master of Science Thesis. Modeling deployment and allocation in the Progress IDE Master of Science Thesis (D-level) Akademin för innovation, design och teknik David Šenkeřík Modeling deployment and allocation in the Progress IDE Mälardalen Research and Technology Centre Thesis supervisors:

More information

Large Scale Computing Infrastructures

Large Scale Computing Infrastructures GC3: Grid Computing Competence Center Large Scale Computing Infrastructures Lecture 2: Cloud technologies Sergio Maffioletti GC3: Grid Computing Competence Center, University

More information

Component-Based Platform for a Virtual University Information System

Component-Based Platform for a Virtual University Information System Component-Based Platform for a Virtual University Information System Dr. IVAN GANCHEV, Dr. MAIRTIN O DROMA, FERGAL McDONNELL Department of Electronics and Computer Engineering University of Limerick National

More information

CA ERwin Data Modeler s Role in the Relational Cloud. Nuccio Piscopo.

CA ERwin Data Modeler s Role in the Relational Cloud. Nuccio Piscopo. CA ERwin Data Modeler s Role in the Relational Cloud Nuccio Piscopo Table of Contents Abstract.....3 Introduction........3 Daas requirements through CA ERwin Data Modeler..3 CA ERwin in the Relational

More information

Introduction to Cloud Computing. [thoughtsoncloud.com] 1

Introduction to Cloud Computing. [thoughtsoncloud.com] 1 Introduction to Cloud Computing [thoughtsoncloud.com] 1 Outline What is Cloud Computing? Characteristics of the Cloud Computing model Evolution of Cloud Computing Cloud Computing Architecture Cloud Services:

More information

An Enumerative Variability Modelling Tool for Constructing. Whole Software Product Families

An Enumerative Variability Modelling Tool for Constructing. Whole Software Product Families An Enumerative Variability Modelling Tool for Constructing Whole Software Product Families Chen Qian and Kung-Kiu Lau School of Computer Science The University of Manchester Kilburn Building, Oxford Road,

More information

Lesson 14: Cloud Computing

Lesson 14: Cloud Computing Yang, Chaowei et al. (2011) 'Spatial cloud computing: how can the geospatial sciences use and help shape cloud computing?', International Journal of Digital Earth, 4: 4, 305 329 GEOG 482/582 : GIS Data

More information

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko Containers, Serverless and Functions in a nutshell Eugene Fedorenko About me Eugene Fedorenko Senior Architect Flexagon adfpractice-fedor.blogspot.com @fisbudo Agenda Containers Microservices Docker Kubernetes

More information

Data safety for digital business. Veritas Backup Exec WHITE PAPER. One solution for hybrid, physical, and virtual environments.

Data safety for digital business. Veritas Backup Exec WHITE PAPER. One solution for hybrid, physical, and virtual environments. WHITE PAPER Data safety for digital business. One solution for hybrid, physical, and virtual environments. It s common knowledge that the cloud plays a critical role in helping organizations accomplish

More information

CHARLES UNIVERSITY, PRAGUE FACULTY OF MATHEMATICS AND PHYSICS. Master Thesis. Michael Cífka Visual Development of Software Components

CHARLES UNIVERSITY, PRAGUE FACULTY OF MATHEMATICS AND PHYSICS. Master Thesis. Michael Cífka Visual Development of Software Components CHARLES UNIVERSITY, PRAGUE FACULTY OF MATHEMATICS AND PHYSICS Master Thesis Michael Cífka Visual Development of Software Components Supervisor: Ing. Petr Tůma, Dr. I would like to thank my supervisor,

More information

IBM Rational Application Developer for WebSphere Software, Version 7.0

IBM Rational Application Developer for WebSphere Software, Version 7.0 Visual application development for J2EE, Web, Web services and portal applications IBM Rational Application Developer for WebSphere Software, Version 7.0 Enables installation of only the features you need

More information

SOA: Service-Oriented Architecture

SOA: Service-Oriented Architecture SOA: Service-Oriented Architecture Dr. Kanda Runapongsa (krunapon@kku.ac.th) Department of Computer Engineering Khon Kaen University 1 Gartner Prediction The industry analyst firm Gartner recently reported

More information

Transform Your Business To An Open Hybrid Cloud Architecture. Presenter Name Title Date

Transform Your Business To An Open Hybrid Cloud Architecture. Presenter Name Title Date Transform Your Business To An Open Hybrid Cloud Architecture Presenter Name Title Date Why You Need To Transform Your Business Public cloud performance setting new expectations for: IT speed, flexibility

More information

IEC Implementation of Service Oriented Architecture: Case Study

IEC Implementation of Service Oriented Architecture: Case Study IEEE Conference on Robotics and Automation (ICRA 14), Hong Kong, May, 2014, submitted IEC 61499 Implementation of Service Oriented Architecture: Case Study Valeriy Vyatkin, Luleå University of Technology,

More information

STATE OF MODERN APPLICATIONS IN THE CLOUD

STATE OF MODERN APPLICATIONS IN THE CLOUD STATE OF MODERN APPLICATIONS IN THE CLOUD 2017 Introduction The Rise of Modern Applications What is the Modern Application? Today s leading enterprises are striving to deliver high performance, highly

More information

NEXOF-RA NESSI Open Framework Reference Architecture IST- FP

NEXOF-RA NESSI Open Framework Reference Architecture IST- FP NEXOF-RA NESSI Open Framework Reference Architecture IST- FP7-216446 Deliverable D7.4 RA Specification Sample Siemens AG HP Engineering Thales Due date of deliverable: 01/03/2009 Actual submission date:

More information

Backtesting in the Cloud

Backtesting in the Cloud Backtesting in the Cloud A Scalable Market Data Optimization Model for Amazon s AWS Environment A Tick Data Custom Data Solutions Group Case Study Bob Fenster, Software Engineer and AWS Certified Solutions

More information

Migration to Service Oriented Architecture Using Web Services Whitepaper

Migration to Service Oriented Architecture Using Web Services Whitepaper WHITE PAPER Migration to Service Oriented Architecture Using Web Services Whitepaper Copyright 2004-2006, HCL Technologies Limited All Rights Reserved. cross platform GUI for web services Table of Contents

More information

ALI-ABA Topical Courses ESI Retention vs. Preservation, Privacy and the Cloud May 2, 2012 Video Webcast

ALI-ABA Topical Courses ESI Retention vs. Preservation, Privacy and the Cloud May 2, 2012 Video Webcast 21 ALI-ABA Topical Courses ESI Retention vs. Preservation, Privacy and the Cloud May 2, 2012 Video Webcast The NIST Definition of Cloud Computing: Recommendations of the National Institute of Standards

More information

Construction of SSI Framework Based on MVC Software Design Model Yongchang Rena, Yongzhe Mab

Construction of SSI Framework Based on MVC Software Design Model Yongchang Rena, Yongzhe Mab 4th International Conference on Mechatronics, Materials, Chemistry and Computer Engineering (ICMMCCE 2015) Construction of SSI Framework Based on MVC Software Design Model Yongchang Rena, Yongzhe Mab School

More information

Getting Started with Amazon Web Services

Getting Started with Amazon Web Services Getting Started with Amazon Web Services Version 3.3 September 24, 2013 Contacting Leostream Leostream Corporation 411 Waverley Oaks Rd. Suite 316 Waltham, MA 02452 USA http://www.leostream.com Telephone:

More information

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Ninat Wanapan and Somnuk Keretho Department of Computer Engineering, Kasetsart

More information

How Security Policy Orchestration Extends to Hybrid Cloud Platforms

How Security Policy Orchestration Extends to Hybrid Cloud Platforms How Security Policy Orchestration Extends to Hybrid Cloud Platforms Reducing complexity also improves visibility when managing multi vendor, multi technology heterogeneous IT environments www.tufin.com

More information

XBS Application Development Platform

XBS Application Development Platform Introduction to XBS Application Development Platform By: Liu, Xiao Kang (Ken) Xiaokang Liu Page 1/10 Oct 2011 Overview The XBS is an application development platform. It provides both application development

More information

CHEM-E Process Automation and Information Systems: Applications

CHEM-E Process Automation and Information Systems: Applications CHEM-E7205 - Process Automation and Information Systems: Applications Cloud computing Jukka Kortela Contents What is Cloud Computing? Overview of Cloud Computing Comparison of Cloud Deployment Models Comparison

More information

Software Reuse and Component-Based Software Engineering

Software Reuse and Component-Based Software Engineering Software Reuse and Component-Based Software Engineering Minsoo Ryu Hanyang University msryu@hanyang.ac.kr Contents Software Reuse Components CBSE (Component-Based Software Engineering) Domain Engineering

More information

Choosing the Right Cloud Computing Model for Data Center Management

Choosing the Right Cloud Computing Model for Data Center Management Choosing the Right Cloud Computing Model for Data Center Management www.nsi1.com NETWORK SOLUTIONS INCOPORATED NS1.COM UPDATING YOUR NETWORK SOLUTION WITH CISCO DNA CENTER 1 Section One Cloud Computing

More information

Cloud Computing: Concepts, Architecture and Applied Research Yingjie Wang1-2,a

Cloud Computing: Concepts, Architecture and Applied Research Yingjie Wang1-2,a 4th International Conference on Mechatronics, Materials, Chemistry and Computer Engineering (ICMMCCE 2015) Cloud Computing: Concepts, Architecture and Applied Research Yingjie Wang1-2,a 1 College of Information

More information

CAS 703 Software Design

CAS 703 Software Design Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on Software by Tao et al. (Chapters 9 and 10) (SOA) 1 Interaction

More information

AT&T Flow Designer. Current Environment

AT&T Flow Designer. Current Environment AT&T Flow Designer A Visual IoT Application Development environment that includes reusable components, drag & drop design capabilities, team collaboration, and cloud deployment that allows M2M/IoT developers

More information

COMPTIA CLO-001 EXAM QUESTIONS & ANSWERS

COMPTIA CLO-001 EXAM QUESTIONS & ANSWERS COMPTIA CLO-001 EXAM QUESTIONS & ANSWERS Number: CLO-001 Passing Score: 800 Time Limit: 120 min File Version: 39.7 http://www.gratisexam.com/ COMPTIA CLO-001 EXAM QUESTIONS & ANSWERS Exam Name: CompTIA

More information

Minsoo Ryu. College of Information and Communications Hanyang University.

Minsoo Ryu. College of Information and Communications Hanyang University. Software Reuse and Component-Based Software Engineering Minsoo Ryu College of Information and Communications Hanyang University msryu@hanyang.ac.kr Software Reuse Contents Components CBSE (Component-Based

More information

The Design of The Integration System for OTOP Products Data Using Web Services Technology, Thailand

The Design of The Integration System for OTOP Products Data Using Web Services Technology, Thailand MACROCONFERENCE The MacroConference Proceedings The Design of The Integration System for OTOP Products Data Using Web Services Technology, Thailand Sasitorn Phimansakulwat Faculty of Business Administration,

More information

SOFTWARE ENGINEERING. To discuss several different ways to implement software reuse. To describe the development of software product lines.

SOFTWARE ENGINEERING. To discuss several different ways to implement software reuse. To describe the development of software product lines. SOFTWARE ENGINEERING DESIGN WITH COMPONENTS Design with reuse designs and develops a system from reusable software. Reusing software allows achieving better products at low cost and time. LEARNING OBJECTIVES

More information

Introduction to Cloud Computing

Introduction to Cloud Computing Introduction to Cloud Computing Nabil Abdennadher nabil.abdennadher@hesge.ch 2017/2018 1 Plan Context Definition Market Cloud service models Cloud deployments models Key drivers to adopting the Cloud Barriers

More information

Australian Journal of Basic and Applied Sciences

Australian Journal of Basic and Applied Sciences ISSN:1991-8178 Australian Journal of Basic and Applied Sciences Journal home page: www.ajbasweb.com Service Computing 1 Dr. M. Thiyagarajan, 2 Chaitanya Krishnakumar, 3 Dr. V. Thiagarasu 1 Professor Emeritus

More information

The Analysis and Design of the Object-oriented System Li Xin 1, a

The Analysis and Design of the Object-oriented System Li Xin 1, a International Conference on Materials Engineering and Information Technology Applications (MEITA 2015) The Analysis and Design of the Object-oriented System Li Xin 1, a 1 Shijiazhuang Vocational Technology

More information

Sri Vidya College of Engineering & Technology

Sri Vidya College of Engineering & Technology UNIT I INTRODUCTION TO OOP AND FUNDAMENTALS OF JAVA 1. Define OOP. Part A Object-Oriented Programming (OOP) is a methodology or paradigm to design a program using classes and objects. It simplifies the

More information

Securing Amazon Web Services (AWS) EC2 Instances with Dome9. A Whitepaper by Dome9 Security, Ltd.

Securing Amazon Web Services (AWS) EC2 Instances with Dome9. A Whitepaper by Dome9 Security, Ltd. Securing Amazon Web Services (AWS) EC2 Instances with Dome9 A Whitepaper by Dome9 Security, Ltd. Amazon Web Services (AWS) provides business flexibility for your company as you move to the cloud, but new

More information

Lecture 1: January 23

Lecture 1: January 23 CMPSCI 677 Distributed and Operating Systems Spring 2019 Lecture 1: January 23 Lecturer: Prashant Shenoy Scribe: Jonathan Westin (2019), Bin Wang (2018) 1.1 Introduction to the course The lecture started

More information

Network Edge Innovation With Virtual Routing

Network Edge Innovation With Virtual Routing Independent market research and competitive analysis of next-generation business and technology solutions for service providers and vendors Network Edge Innovation With Virtual Routing A Heavy Reading

More information

AN OPEN WEB SERVICE-BASED DSS

AN OPEN WEB SERVICE-BASED DSS AN OPEN WEB SERVICE-BASED DSS Si Yaqing\ Chen Yonggang^ and Zhang Shaofeng-^ 1 Economics and Management School of Beijing University of Posts and Telecommunications, No. 10, Xi Tu Cheng Road, Haidian District,

More information

Component-based Development Process and Component Lifecycle

Component-based Development Process and Component Lifecycle Journal of Computing and Information Technology - CIT 13, 2005, 4, 321-327 321 Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2 and Michel Chaudron 3 1 Mälardalen

More information

OASIS BPEL Webinar: Frank Leymann Input

OASIS BPEL Webinar: Frank Leymann Input OASIS BPEL Webinar: Frank Leymann Input (OASIS Webinar, March 12th, 2007) Prof. Dr. Frank Leymann Director, Institute of Architecture of Application Systems Former IBM Distinguished Engineer BPEL s Role

More information

Moving From Reactive to Proactive Storage Management with an On-demand Cloud Solution

Moving From Reactive to Proactive Storage Management with an On-demand Cloud Solution Moving From Reactive to Proactive Storage Management with an On-demand Cloud Solution The Ever-Present Storage Management Conundrum In the modern IT landscape, the storage management conundrum is as familiar

More information

BioTechnology. An Indian Journal FULL PAPER. Trade Science Inc. Study on secure data storage based on cloud computing ABSTRACT KEYWORDS

BioTechnology. An Indian Journal FULL PAPER. Trade Science Inc. Study on secure data storage based on cloud computing ABSTRACT KEYWORDS [Type text] [Type text] [Type text] ISSN : 0974-7435 Volume 10 Issue 22 BioTechnology 2014 An Indian Journal FULL PAPER BTAIJ, 10(22), 2014 [13778-13783] Study on secure data storage based on cloud computing

More information

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction WHITE PAPER RedHat OpenShift Container Platform Abstract Benefits: Applications are designed around smaller independent components called microservices. Elastic resources: Scale up or down quickly and

More information

White Paper. Platform9 ROI for Hybrid Clouds

White Paper. Platform9 ROI for Hybrid Clouds White Paper Platform9 ROI for Hybrid Clouds Quantifying the cost savings and benefits of moving from the Amazon Web Services (AWS) public cloud to the Platform9 hybrid cloud. Abstract Deciding whether

More information

An Approach to Software Component Specification

An Approach to Software Component Specification Page 1 of 5 An Approach to Software Component Specification Jun Han Peninsula School of Computing and Information Technology Monash University, Melbourne, Australia Abstract. Current models for software

More information

IBM Best Practices Working With Multiple CCM Applications Draft

IBM Best Practices Working With Multiple CCM Applications Draft Best Practices Working With Multiple CCM Applications. This document collects best practices to work with Multiple CCM applications in large size enterprise deployment topologies. Please see Best Practices

More information

Application Servers in E-Commerce Applications

Application Servers in E-Commerce Applications Application Servers in E-Commerce Applications Péter Mileff 1, Károly Nehéz 2 1 PhD student, 2 PhD, Department of Information Engineering, University of Miskolc Abstract Nowadays there is a growing demand

More information

National Open Source Strategy

National Open Source Strategy National Open Source Strategy Ministry of Communications & Information Technology - Egypt June 2014 Outline Background Vision & Mission Preliminary Targets Strategic Objectives Enablers Ministry of Communications

More information

Cloud Computing 4/17/2016. Outline. Cloud Computing. Centralized versus Distributed Computing Some people argue that Cloud Computing. Cloud Computing.

Cloud Computing 4/17/2016. Outline. Cloud Computing. Centralized versus Distributed Computing Some people argue that Cloud Computing. Cloud Computing. Cloud Computing By: Muhammad Naseem Assistant Professor Department of Computer Engineering, Sir Syed University of Engineering & Technology, Web: http://sites.google.com/site/muhammadnaseem105 Email: mnaseem105@yahoo.com

More information

An Efficient Image Processing Method Based on Web Services for Mobile Devices

An Efficient Image Processing Method Based on Web Services for Mobile Devices An Efficient Image Processing Method Based on Web Services for Mobile Devices Yi Liang a,b a Tianjin Key Lab of Intelligent Computing & Novel Software Technology, Tianjin University of Technology Tianjin,

More information

a white paper from Corel Corporation

a white paper from Corel Corporation a white paper from Corel Corporation This document is for discussion purposes only. The products and processes are still under development. The information presented is therefore subject to change without

More information

ECE Enterprise Storage Architecture. Fall ~* CLOUD *~. Tyler Bletsch Duke University

ECE Enterprise Storage Architecture. Fall ~* CLOUD *~. Tyler Bletsch Duke University ECE590-03 Enterprise Storage Architecture Fall 2017.~* CLOUD *~. Tyler Bletsch Duke University Includes material adapted from the course Information Storage and Management v2 (module 13), published by

More information

Jade Technologies JADE 2016 Roadmap

Jade Technologies JADE 2016 Roadmap Jade Technologies 2016 Roadmap jadeworld.com Jade Software Corporation Limited cannot accept any financial or other responsibilities that may be the result of your use of this information or software material,

More information

Lupin: from Web Services to Web-based Problem Solving Environments

Lupin: from Web Services to Web-based Problem Solving Environments Lupin: from Web Services to Web-based Problem Solving Environments K. Li, M. Sakai, Y. Morizane, M. Kono, and M.-T.Noda Dept. of Computer Science, Ehime University Abstract The research of powerful Problem

More information

Test-driven development

Test-driven development Test-driven development And how we do it at WIX Mantas Indrašius Software Engineer WIX.COM Agenda Tests overview Test-driven development (TDD) The Bowling Game demo Kickstarting a project using TDD How

More information

SOA Architect. Certification

SOA Architect. Certification SOA Architect Certification SOA Architect The new generation SOACP program from Arcitura is dedicated to excellence in the fields of contemporary service-oriented architecture, microservices, service APIs

More information

HOW TO SOLVE COMMON PROBLEMS WITH LEGACY ORACLE JAVA VERSIONS IN WINDOWS 10

HOW TO SOLVE COMMON PROBLEMS WITH LEGACY ORACLE JAVA VERSIONS IN WINDOWS 10 TECHNOLOGY TOPIC HOW TO SOLVE COMMON PROBLEMS WITH LEGACY ORACLE JAVA VERSIONS IN WINDOWS 10 Legacy applications programmed in Java are having trouble when introduced to a Windows 10 environment. While

More information

Software Design COSC 4353/6353 DR. RAJ SINGH

Software Design COSC 4353/6353 DR. RAJ SINGH Software Design COSC 4353/6353 DR. RAJ SINGH Outline What is SOA? Why SOA? SOA and Java Different layers of SOA REST Microservices What is SOA? SOA is an architectural style of building software applications

More information

Udaipur, Rajasthan, India. University, Udaipur, Rajasthan, India

Udaipur, Rajasthan, India. University, Udaipur, Rajasthan, India ROLE OF NETWORK VIRTUALIZATION IN CLOUD COMPUTING AND NETWORK CONVERGENCE 1 SHAIKH ABDUL AZEEM, 2 SATYENDRA KUMAR SHARMA 1 Research Scholar, Department of Computer Science, Pacific Academy of Higher Education

More information

Top five Docker performance tips

Top five Docker performance tips Top five Docker performance tips Top five Docker performance tips Table of Contents Introduction... 3 Tip 1: Design design applications as microservices... 5 Tip 2: Deployment deploy Docker components

More information

A Novel Data Mining Platform Design with Dynamic Algorithm Base

A Novel Data Mining Platform Design with Dynamic Algorithm Base A Novel Data Mining Platform Design with Dynamic Algorithm Base HebiaoYang, Yukun Chen & Rengang Hou School of Computer Science and Telecommunications Engineering, Jiangsu University Zhenjiang, 212013,

More information

Software Components and Distributed Systems

Software Components and Distributed Systems Software Components and Distributed Systems INF5040/9040 Autumn 2017 Lecturer: Eli Gjørven (ifi/uio) September 12, 2017 Outline Recap distributed objects and RMI Introduction to Components Basic Design

More information

Qlik Sense Enterprise architecture and scalability

Qlik Sense Enterprise architecture and scalability White Paper Qlik Sense Enterprise architecture and scalability June, 2017 qlik.com Platform Qlik Sense is an analytics platform powered by an associative, in-memory analytics engine. Based on users selections,

More information