Mobile and Cloud computing and SE
This week normal. Next week is the final week of the course Wed 12-14 Essay presentation and final feedback Kylmämaa Kerkelä Barthas Gratzl Reijonen??? Thu 08-10 Group Exercise presentations and feedback What are the current findings What is the road ahead to finalize the group work Instructions. See essay instructions of essay presentation. Fri 08-11 Final Exercises This is your last chance to work in group and get help from Päivi.
Deadlines Next week the normal essay DL on 13.10. (Tuesday) at noon (12:00) Group exercise 25.10.2015 (Sunday) 23:59 If late. If <12h then -1 If <24h then -2 If <36h then -3 If <48h then -4 For each additional 12h late another -1 Bonus essay 1.11.2015 (Sunday) 23:59 If late. If <12h then -1 If <24h then -2 If <36h then -3 If <48h then -4 For each additional 12h late another -1
Topic selection for this course Text mining 72 787 software / software engineering papers
Most probable words of each topic Given topic name Web services (n=915) Mobile and Cloud computing (n=862) Industrial studies (n=1376) Source code (n=988) 1 "web" "mobile" "study" "code" "test" Test generation (n=923) 2 "service" "computing" "case" "source" "generation" 3 "services" "cloud" "empirical" "open" "automatic" 4 "applications" "environments" "industrial" "projects" "coverage" 5 "composition" "agent" "studies" "changes" "automated" 6 "semantic" "middleware" "comparative" "usage" "selection" 7 "discovery" "grid" "use" "documentation" "generating" 8 "composite" "devices" "exploratory" "API" "cases" 9 "QoS" "smart" "pilot" "detecting" "suite" 10 "BPEL" "trust" "importance" "clones" "tests"
Essay Discuss one or more of the following topics What possibilities Cloud offers for Software Engineering How could CloudSim toolkit be valuable? How does the Cloud computing topic link to the Web-services topic that was already covered in the course? Can one success without the other? Are they a same thing? Platform heterogeneity of mobile systems. In many cases developers need to create native apps for several platforms. What software engineering techniques could be used to reduce code duplication when deploying for several platforms? How should testing be organized? How could testing be automated? What other problems might appear when supporting several heterogeneous platforms?
Cloud computing What it is? Cloud computing is a recent advancement wherein IT infrastructure and applications are provided as services to end-users under a usage-based payment model. [1] Cloud computing is a model for enabling ubiquitous, convenient, on-demand access to a shared pool of configurable computing resources. (Wikipedia) [1] Calheiros, Rodrigo N., et al. "CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms." Software: Practice and Experience 41.1 (2011): 23-50.
Everything as a service
SE in the Cloud Why To save from the effort of setting up and maintaining it yourself To use the effort saved for something more valuable Motivation is similar for SE services in the cloud as for other services Salesforces video to elaborate https://www.youtube.com/watch?v=ae_dknwk_ms
THE OBVIOUS
SE in the Cloud Version Control Version Control or Software Configuration Management Has always been used for sharing and distributing source code with a group of developers There is no shortage of such tools in the cloud 45 of the Top Source Code Repository Hosts https://blog.profitbricks.com/top-source-code-repositoryhosts/ Many of them of them are Based on GiT BitBucket (Git), GitHub, (Git), ProjectLocker (Git/ SVN)
SE in the Cloud Management: Defect tracking, Project management, and communication, etc Defect tracking and Project management have nearly always been in a centralized storage Example tools Jira https://www.youtube.com/watch?v=xrcjv0ftyr8 Trello https://www.youtube.com/watch?v=xwiuniolf4s VersionOne https://www.youtube.com/watch?v=ywxiuxsums4 Agilefant https://www.youtube.com/watch?v=y6ui-35htpg
SE in the Cloud Test environments Virtualized environment (hardware + software) on demand Nokia has 100 000 cores to support software engineers in software development, testing, and simulation See http://www.enterprisetech.com/2013/11/11/nokiadev-cloud-will-swell-100k-cores/ For example Run all regression tests in all environments (HW+OS+DB) automatically in few minutes after which the environment is released to other tasks Experiment with tens of machines on which configuration setting results in shortest build time in CI servers After that use the best configuration in teams CI server
THE EMERGING
SE in the Cloud - CI servers Continuous Integration server: Combines compiling, building, automated testing and sometimes also deployment Using a centralized CI server has recently gained popularity Note: Microsoft was using such system already in 1990 s [1] Buying CI as a service is also possible Cloudbees https://www.youtube.com/watch?v=qyxgc5uwwao Codeship https://www.youtube.com/watch?v=7oe47ib-jay Travis https://www.youtube.com/watch?v=uf0vzyvzpve Semaphore https://www.youtube.com/watch?v=3z1rvcsmx00 [1] Cusumano, Michael A., and Richard W. Selby. "Microsoft secrets." (1997).
SE in the Cloud - IDEs Less intuitive than the previous example Natural development considering CI, version controla and management tools are in the cloud Document editing is as well (Goodle Docs, Spreadsheets) Tools Cloud9 https://www.youtube.com/watch?v=hqzowm8axdi https://www.youtube.com/watch?v=xsdnwifwr5g Nitrous Cored - A recent PhD Thesis from TUT http://www.tut.fi/fi/tietoa-yliopistosta/uutiset-jatapahtumat/vaitostiedotteet/uusi-kehitysymparisto-mahdollistaareaaliaikaisen-yhteistyon-ohjelmoinnissa-x110797c2
SE in the Cloud Humans / Crowdsourcing Crowdsourcing process of obtaining needed services, ideas, or content by soliciting contributions from a large group of people, and especially from an online community, rather than from traditional employees or suppliers Technically speaking no longer a Cloud Computing resource Similarities: shared resources (multitenancy), scalability, pay-asyou-go, Crowdsourcing platform enables distribution and management of tasks, Amazon Mechanical Turk Offers often simple, low paid, opinion based (to a degree) and hard to automate tasks, e.g. evaluate quality of scanned images http://kernelmag.dailydot.com/features/report/4732/mygruelling-day-as-an-amazon-mechanical-turk/ Others offer more intelligent work, e.g. design a logo design
utest Crowsourcing of testing
SE in the Cloud Version controls Defect trackers Test environments CI servers IDEs Human resources (testers)
Discuss the possibilities Cloud offers for Software Engineering What do you see as the biggest hit service What service could be used for what purpose E.g. Cloud IDEs could be good for certain cases Summary of previous slides Version controls Defect trackers Test environments CI servers IDEs Human resources (testers)
CLOUDSIM
Motivation: CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms Cloud computing infrastructure, platform, and software as services in a pay-as-you-go model to consumers. Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS) Clouds frees the companies from the trivial task of setting up basic hardware and software infrastructures Amazon EC2, Microsoft Azure, Google App Engine
Motivation: CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms Provisioning (configuring, scheduling and allocation) policies is extremely challenging because: Clouds exhibit varying demands, supply patterns, system sizes, and resources (hardware, software, network); Users have heterogeneous, dynamic, and competing QoS requirements; Applications have varying performance, workload, and dynamic application scaling requirements.
Motivation: CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms Real infrastructures are difficult to modify -> time consuming to create all configurations Modifications in real environment always pose a risk of degenerating quality Cloud-based environments are not in the control of developers of application services. It is not possible to perform benchmarking experiments in repeatable, dependable, and scalable environments using real-world Cloud environments. Simulation tools are the solution!
Motivation: CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms Simulation tools are the solution! CloudSim that allows seamless modeling, simulation, and experimentation of emerging Cloud computing infrastructures and application services. By using CloudSim, Test the performance of a newly developed application service in a controlled and easy to set-up environment. The main advantages of using CloudSim for initial performance testing include: time effectiveness: less effort to implement Cloud-based application provisioning test environment flexibility and applicability: developers can model and test the performance of their application services in heterogeneous Cloud environments (Amazon EC2, Microsoft Azure) with little programming and deployment effort.
Motivation: CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms Simuation tools are the solution! Cloudsim that allows seamless modeling, simulation, and experimentation of emerging Cloud computing infrastructures and application services. By using CloudSim, Test the performance of a newly developed application service in a controlled and easy to set-up environment. The main advantages of using CloudSim for initial performance testing include: time effectiveness: less effort to implement Cloud-based Vested interest! application provisioning test environment flexibility and applicability: developers can model and test the performance of their application services in heterogeneous Cloud environments (Amazon EC2, Microsoft Azure) with little programming and deployment effort.
Uses of CloudSim Modeling the cloud From Iaas to SaaS Modeling the VM allocation Sharing of host computing resources (HW) to virtual machines (VM) Sharing of virtual machine computing resources to application
Uses of CloudSim Modelling the cloud market with two layer design IaaS model cost per unit of memory, cost per unit of storage, and cost per unit of used bandwidth. Cloud customers (SaaS providers) have to pay for the costs of memory and storage when they create and instantiate VMs, the costs for network usage are only incurred in the event of data transfer. SaaS model. Costs at this layer are directly applicable to the task units (application service requests) that are served by the application services. If a Cloud customer provisions a VM without an application service (task unit), then they would only be charged for layer 1 resources (i.e. the costs of memory and storage).
Uses of CloudSim Modelling network behavior Network latency affects the overall service satisfaction experience. Network latency that a message can experience on its path from one host to another or to Cloud Broker is simulated m n size matrix for all CloudSim entities (hosts) currently active in the simulation context. An entry e(ij) in the matrix represents the delay that a message will undergo when it is being transferred from entity i to entity j over the network.
Uses of CloudSim Modeling a federation of clouds to federate or inter-network multiple clouds, Cloud coordinator monitors and initiates
Uses of CloudSim Modelling of Dynamic workloads Cloud applications deploy dynamic workloads Some systems are used only during working hours Deadline driven behavior or people Call for tenders, funding applications, recruiting software Are all SLAs kept in when running various cloud applications? Power consumption of data centers is another cost factor Dynamic entities User can join or leave Data centers can go down and new ones can be built
Experiments: Evaluating federated clouds vs. non-federated (each as separate)
Experiments: Hybrid public (Amazon EC2) and private cloud
Experiments: Energy consumptions algorithms and SLA s
Summary CloudSim Model Cloud from IaaS to SaaS Cloud market VM allocation Network utilization Power usage SLAs Federation Dynamic workloads Dynamic entities (new/removal of data centers, customers etc) Then simulate different scenarios.
Discuss How could CloudSim toolkit be valuable? Summary: CloudSim Model Cloud from IaaS to SaaS Cloud market VM allocation Network utilization Power usage SLAs Federation Dynamic workloads Dynamic entities (new/removal of data centers, customers etc) Then simulate different scenarios.
Essay Discuss one or more of the following topics What possibilities Cloud offers for Software Engineering How could CloudSim toolkit be valuable? How does the Cloud computing topic link to the Web-services topic that was already covered in the course? Can one success without the other? Are they a same thing? Platform heterogeneity of mobile systems. In many cases developers need to create native apps for several platforms. What software engineering techniques could be used to reduce code duplication when deploying for several platforms? How should testing be organized? How could testing be automated? What other problems might appear when supporting several heterogeneous platforms?
What it is? Mobile computing
Mobile computing Extending terms Not just mobile (phones) but computers on: cars, eyes glasses, fridges, watches Ubiquitous computing, pervasive computing, Internet of Things, ambient intelligence,
Motivation: Mobile application platform heterogeneity: Android vs Windows Phone vs ios vs Firefox OS Android, Windows Phone, ios, were identified as market leaders for the smartphone market by Gartner Group. Firefox OS, 4, were recognized as the chiefly representative for a new category of mobile operating systems. Create a game of TIC-TAC-TOE
Platform heterogeneity Although cross platform support exists Java (1.0 desktop 1995, Java ME 2000) has a vision of supporting multiple platforms, write once, run everywhere. The idea was that the same byte code created from the source code should be able to run on all sorts of mobile device models. In practice: write once, debug everywhere Developers often need to create multiple clients for different platforms Applications running HTML 5 (the new Java) Facebook dumbed HTML5 in favor of native apps Still past work suggests: native apps if there was going to be interaction between the app and the hardware on the specific device (such as the GPS unit or the camera); otherwise, the app developed using the cross platform tool was just as good as the native one. Grønli, Tor-Morten, et al. "Mobile application platform heterogeneity: Android vs Windows Phone vs ios vs Firefox OS." Advanced Information Networking and Applications (AINA), 2014 IEEE 28th International Conference on. IEEE, 2014.
Android / Windows / IOS / Firefox
Comparison
Essay Discuss one or more of the following topics What possibilities Cloud offers for Software Engineering How could CloudSim toolkit be valuable? How does the Cloud computing topic link to the Web-services topic that was already covered in the course? Can one success without the other? Are they a same thing? Platform heterogeneity of mobile systems. In many cases developers need to create native apps for several platforms. What software engineering techniques could be used to reduce code duplication when deploying for several platforms? How should testing be organized? How could testing be automated? What other problems might appear when supporting several heterogeneous platforms?