Tag Archives: Software Engineering

cloud computing

An Overview of Cloud Computing

Introduction
Cloud computing is a term used to describe anything that is involved in hosting services over the internet. It uses the internet and central remote servers to maintain data and applications. Cloud computing allow users and businesses to use applications without need for installation and access to personal files at a computer with internet access. Cloud computing allows for much more efficient computing by centralizing storage, processing, bandwidth, and memory. The term ‘cloud’ originates from the network diagrams that represented the internet. Cloud computing traces its history back to a time when computer systems remotely share resources and application. Currently though, it is more about many different services and applications being delivered in the internet cloud, and the fact that the devices used to access these services and applications do not require any special application or installation.

According to “What Cloud Computing Really Means” (Galen Gruman and Eric Knorr, InfoWorld, April 07, 2008), cloud computing can include everything from SaaS (Software as a Service providers) through development environment services (building applications on the service provider’s infrastructure which can then be delivered to users over the Internet.)

“Clusters of distributed computers (largely vast data centers and server farms) which provide on-demand resources and services over a networked medium (usually the Internet)” – Dr Nabil Sultan

But, in simple words,” Cloud Computing is more than the few internet based services which we access through our web browsers, it is the fundamental shift from the traditional client/server or n-tier architecture and it primarily focuses on the effective utilization of the IT INFRASTRUCTURE “ (Mahajan, 2011).

The analogy is, ‘If you only need milk, would you buy a cow?‘ All the users or consumers need is to get the benefits of using the software or hardware of the computer like sending emails etc. Just to get this benefit (milk) why should a consumer buy a (cow) software /hardware? (wikivest.com, 2011)

As a result, cloud computing has the potential to upend the software industry entirely, as applications are purchased, licensed and run over the network instead of a user’s desktop. This shift will put data centres and their administrators at the centre of the distributed network, as processing power, electricity, bandwidth and storage are all managed remotely. It affects not only business models, but the underlying architecture of how we develop, deploy and deliver applications.

Cloud computing is different from Grid computing, utility computing, or autonomic computing. It is a very independent platform in terms of computing. Example of cloud computing is Gmail, Yahoo mail, Hotmail etc. You don’t need a software ort a server to make use of the services. All needed is an internet connection and you start sending email. The email and server are all on the cloud and are managed by service providers such as Yahoo, Google, and Microsoft etc.

Cloud computing is broken in to three segments; Applications, Platforms, and infrastructure. With each segment serving different functions, and offers different products for business and individuals.

The main Idea behind cloud computing is to outsource information technology services usually hosted in local data centres to third party service providers called cloud providers, while using internet as the medium for service delivery. The consumers of the cloud services are known as cloud users. The cloud providers run large data centres across multiple geo-locations to meet the needs of the cloud users on their platform.

A major driver of cloud computing is the cost saving factor. The upfront expenditure on setting up infrastructure is totally eliminated as these are provided by the cloud provider. Also, the on-going operational cost of system maintenance is further reduced by the pay per use model adopted by most cloud providers. Using dis paradigm, small business are able start up with minimum capital and are able to deploy their application on the cloud within a very short period of time. The ability to access data and applications from anywhere via the internet and its scalability are also key driving factors of the cloud computing paradigm.

The cloud services consist of three levels; software as a service, which are basically end user applications on the cloud. Platform as a service, which is the platform for deploying cloud applications and data storage which is provided in the cloud infrastructure. Infrastructure as a service, which is basically an environment of virtual machines on the cloud. In all instances, the cloud user is distant from the underlying cloud hardware architecture and its maintenance.

Cloud computing is still not widely adopted despite the benefits and potential in poses in the near feature. This is attributed to some concerns raised by mostly security issues which are loss of data, privacy, loss of control, hacking, etc. The main focus of this paper is to give a detailed description of cloud computing, what it involves and what it is not.

KEY CHARACTERISTICS

  1. On Demand self-service – A user basically requires no help to be able to access resources. The best breed of self service is to provide users the ability to upload, deploy, schedule, manage, and report on their business services.
    The benefit of self service from users’ point of view is a level of authorization and freedom that yields significant business agility. Also a benefit from providers’ point of view is that less administrative involvement is necessary when self service is delegated to users. This characteristic saves time, money, and resources. It allows service providers to focus more on strategic responsibility and improvements.
    An Example is the Google Docs, which allows users to create and maintain their documents online. There is no need for any software installation. This is accessible from anywhere on the internet at any required time. Files can be shared with anyone from any location at a desired time. This self service allows users to be independent and Google staff to concentrate more on improving the application instead of providing support for the users.
  2. Measured/Metered Service (pay par use) – The typical billing of the cloud is pay per use. The users’ only need to pay for resources they use. Cloud computing platforms provide mechanisms to capture usage information that will enable reporting for billing purpose. The value of this to the consumers is that they only get to bay based on resources they consume. This includes power, storage, and/or bandwidth.
    Examples of this are the advertising models, etc. A scenario is the Official FIFA world cup site which gets extremely high traffic during the one month of the world cup. The site requires very high server usage during this period. For the rest of the year the site remains with minimal traffic and only needs to pay for the reduced usage.
  3. Rapid Elasticity – The computing cloud is elastic, meaning resources could increase and decrease on demand of its users. Elasticity enables scalability, which means that the cloud can scale upward for peak demand and downward for lighter demand. Scalability also means that an application can scale when adding users and when application requirements change (Hurwitz et al, 2010).
  4. Resource Pooling – Could resources are dynamically pooled and allocated to user base on demand. The users to not have the knowledge of the physical location of the server or hardware resources used, these resources are dynamically assigned to users in a multi-tenant model. Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.
  5. Broad Network Access – Resources are available via a broad network which are accessible through standard mechanisms or devices which can access to the network platform (basically internet). Examples of such devices include mobile phone, PDA, laptops, and Computers.

SERVICE MODELS
Once the cloud is established, computing services are deployed and differ depending on requirements. The primary service models known are as follows:

  • Software as a service (SaaS)
    This refers to applications provided to the end users by the cloud providers. These kind of applications run on the cloud infrastructure. They are made accessible to the user from any convenient location through a thin client application such as a web browser (e.g. Web-based email). This eliminates the cycle of packaging distributing and installing software on user’s machine. The user does not manage or control the underlying cloud infrastructure but can subscribe to use the applications (e.g. Google Docs).
  • Platform as a service (PaaS)
    A capability provided to users to deploy created applications or store data unto the cloud infrastructure using programming languages and tools supported by the cloud provider. Users could get their applications running in a very short time. Examples of PaaS are Google App Engine, and Force.com.
  • Infrastructure as a service (IaaS)
    This is the delivery of cloud infrastructure as a service (typically a platform virtual environment) to users. This leverages significant technology, services and data centre investment to deliver IT as a service to users. The users are provided with provision, storage, networks, and other fundamental computing resources where the can deploy and run arbitrary software, which may include operating systems and applications. E.g. Host firewalls, and Eucalyptus etc.

DEPLOYMENT MODELS
Deployment models here refer to the scope of the systems. It defines the user base and model of accessibility for cloud services.

  • Private cloud
    This is basically a cloud system owned by an organization or members of its group. It may be managed by the organization or a third party and may on premises or off premises of the organization. The resource are only accessible my members of the organization. The security risk here is reduced to minimal because it is within controlled boundaries of the owners.
  • Community cloud
    This is an extension of the private cloud where organisations with common interests come together to share cloud infrastructures. It may be managed by the organisations or a third party. Cloud infrastructure may exist on or off premises and are tightly monitored.
  • Public cloud
    This is the common notion of cloud computing as it is known today. This refers to the cloud infrastructure that is available via the internet. It is accessibly by a very large user group. The services provided are of wide range and there is much security concern dues to the large user base and limited control.
  • Hybrid cloud
    The hybrid is the combination two or more of the deployment models mentioned above. They remain unique entities but are bound together by standardised or proprietary technology that enables data and application portability.

CLOUD COMPUTING PROVIDERS
Gartner predicts that cloud computing will surge to 150 billion dollars by 2013. Below is a partial list of companies that provide cloud computing services:
Amazon, Google, Microsoft, Salesforce.com, Citrix, IBM, Mozyhome, Sun, cohensiveFT, Icloud, Nivanix, VMware, Flexscale, Joyent, Rackspace, and 3tera etc. (Global Knowledge, 2010)

OTHER FORMS OF COMPUTING

  • Grid computing
  • Utility computing
  • Green computing
  • Distributed computing

ADVANTAGES OF CLOUD COMPUTING
According to International Data Corporation (IDC), “The proliferation of devices, compliance, improved systems performance, online commerce and increased replication to secondary or backup sites is contributing to an annual doubling of the amount of information transmitted over the Internet.” The cost of dealing with this amount of data is something that companies must address. In today’s economy, companies are looking at any cost saving measures, and the bottom line is that cloud computing provides much greater flexibility than previous computing models.

  1. Storage – The cloud holds up more storage than the personal computer. It takes away the need to upgrade the memory of the personal computer, this helps to keep the bring don cost for users and companies alike.
  2. Mobility – it Allows users to connect even without their own personal computers, which means that users can connect from anywhere around the world as long as u have access to internet and computer.
  3. Reduced cost – This a major factor for the wide cloud computing adoption. It keeps the costs down for both users and business owners. The cloud eliminates the upfront capital expenditure on servers, cooling, administration, and energy supplies to deploy an application. Operational cost is also reduced to amount of resources consumed. I.e. pay per use model which make cloud computing more desirable because of the cost savings.
  4. Flexibility – It has more flexibility than other network computing systems. For large enterprises, the ease of deploying a full service set without having to set up base infrastructure to support it can be even more attractive than cost savings
  5. Shared Resources – A key component of cloud computing is that resources are shared. With cloud computing, companies and individuals could have access to resources via the cloud, this saves business time and money by placing their resources all in one location that is easy for them to access.
  6. Scalability – With cloud providers constantly increasing the data centers and dynamically scalable services, it has been a key motivator for organizations and individuals to move data and applications to the cloud.
  7. Reduced maintenance – The cloud users do not take responsibility for the system maintenance. The burden of maintaining the cloud is in the hands of the cloud provider.
  8. Ease of Integration – An increasing number of enterprise applications require integration with third-party applications that are often hosted outside the enterprise firewall. The cloud, with its configuration flexibility, integrated security and choice of access mechanisms, has a natural advantage for serving as a core platform and integration fabric for these emerging applications (Hemachandran, 2010).

CONCERNS IN THE CLOUD
Cloud computing frees both individuals and organizations from the cost and hassle of installing, maintaining and constantly upgrading software applications on their desktops and in their data centres. It also allows companies to focus on their core competencies, rather than investing in centralized computing facilities that have to be maintained and upgraded and that may not be utilized at an optimum capacity. This said the many critics of cloud computing point to the fact that users become totally reliant on a high quality Internet connection. Cloud computing also creates a reliance on external suppliers which may also raise potential business continuity, data protection and security risks (explainingcomputers.com, 2010).

  • Availability – One of the risk of outsourcing data and applications to a cloud provider is not is non-availability of service. This could be due to attack, theft, disaster, or unplanned outage on the provider’s infrastructure.
  • Privacy – There is a growing concern of both the academia and computing industry about how to specify policies for usage of data stored on the cloud providers’ servers. The cloud user should be able to specify policies on how their data are stored, used and disseminated by the cloud provider. Most of the cloud providers do not provide a transparent means for the users to control how their data is being managed.
  • Vendor Lock-in – This is the lack of standard formats for exchanging data between different cloud applications and services. This makes it specific to a particular vendor. A cloud user is likely to be locked by the provisions of a cloud provider or not be able to use multiple platforms.
  • Auditing information finding – It is often difficult to verify the auditing compliance with requirement of services provided in the cloud. Th is because cloud providers provide many services to the cloud users making it difficult to track ech services requested by a user.
  • Maintenance and management change – The users are responsible for maintaining applications deployed on the cloud providers’ servers. Cloud providers normally make upgrades and install patches sometimes affect user’s applications. In such cases, users will have to make sure that applications are well maintained and are compatible with cloud provider’s upgrades.
  • Security – Cloud users are sceptical about the data security because of third party vendor and multi tenancy. Choice of cryptographic and hash algorithms used, how it works at transport layer and how data protected from other tenants being the centre issue. Multi-tenancy is the obvious choice for the cloud vendors for scalability but large enterprises see it as a weapon to exploit their huge database (Mahajan, 2011).

COMMUNICATION IN THE CLOUD
Designing applications for the cloud depends on the type of service and the devices being used to access it. This may be as simple as clicking on the required webpage or it involves an application using an API accessing other services in the cloud.

Communication service extent the capabilities to provide new interactivity to the current service. Cloud- based communications services enable businesses to embed communications capabilities into business applications, such as ERP or CRM systems. These applications can be accessed through a smartphone or PDAs supporting productivity. “These services are over and above the support of service deployments of VoIP systems, collaboration systems, and conferencing systems for both voice and video. They can be accessed from any location and linked into current services to extend their capabilities, as well as standalone as service offerings” (dialogic, 2010).

To have access to communication capabilities, this is achieved through APIs. Applications developed outside the cloud i.e. deployed on user devices could take advantage of the communication infrastructure with the cloud. These APIs open a range of communication possibilities.

To deliver on the scalability requirements for cloud-based deployments, the communications software should be capable of running in virtual environments. This allows for easily increasing and decreasing session densities based on the needs at the time, while keeping the physical resource requirements to a minimum (dialogic, 2010).

CONCLUSION
Cloud computing provide a significant competitive advantage to the initiative. It allows organizations to deliver highly scalable and reliable applications faster and cost effectively. This produces a terrific advantage for the industry that depends on or benefits from large scale applications.

With cloud based applications in place, these cloud providers are freed to deliver new services to the cloud users more rapidly. Because they are not constraint by scale, they are also able to make better business decisions by intelligently analysing the bulk of data which they can access. Also enjoying the less complicity of the IT environment and ability to scale resources in response to changing market conditions creates a more agile organization.

No matter what your organizational requirements are, you might find that cloud services make sense. If not a complete switch to a cloud service, possibly a partial hybrid switch might work. This is what Microsoft sees as the way forward, and thus, they have built their cloud solutions based on hybrid type offerings.

While cost and ease of use are the two major drivers of cloud computing, there are significant security concerns that need to be addressed when considering moving critical applications and sensitive data to public servers and shared environments. To address these concerns, the cloud provider must come up with sufficient controls to provide a certain level of security that the cloud user will have if the cloud were not used.

In the future, more cloud adoption is certain by more organization. The recent move to the cloud by organizations has been tremendous. The cloud expands in a geometrical ratio because it makes businesses grow. Cloud Computing holds a lot of promise and we believe that it is likely to be a major influence on hosting and application development.

Reference
1. Chee, Brian J. S., and Curtis Franklin. Cloud Computing: Technologies and Strategies of the Ubiquitous Data Center. Boca Raton, Fla. [u.a.: CRC, 2010. Print.
2. Chorafas, Dimitris N. Cloud Computing Strategies. Boca Raton, FL: CRC, 2011. Print.
3. Ebhostingreport.com. “The Advantages of Cloud Computing.” Best Web Hosting | Website Hosting Reviews and Ratings 2011. Web. 25 Feb. 2011. <http://www.webhostingreport.com/learn/advantages-of-cloud-computing.html>.
4. Explainingcomputers.com. “CLOUD COMPUTING: AN INTRODUCTION.” ExplainingComputers.com by Christopher Barnatt. 11 Dec. 2010. Web. 23 Feb. 2011. <http://www.explainingcomputers.com/cloud.html>.
5. Global Knowledge. “Top 10 Security Concerns for Cloud Computing.” Infosec Island. 13 July 2010. Web. 22 Feb. 2011. <https://www.infosecisland.com/blogview/5300-Top-10-Security-Concerns-for-Cloud-Computing.html>.
6. Hemachandran, Satish. “The Key Advantages of Cloud Computing.” CTO Edge. 29 Nov. 2010. Web. 27 Feb. 2011. <http://www.ctoedge.com/content/key-advantages-cloud-computing>.
7. Kumar, Arun. “What Are the Advantages of Cloud Computing?” Find Health, Education, Science & Technology Articles, Reviews, How-To and Tech Tips At Bright Hub – Apply To Be A Writer Today! Ed. Rhonda Callow. 4 Feb. 2011. Web. 25 Feb. 2011. <http://www.brighthub.com/environment/green-computing/articles/10026.aspx>.
8. Magalhaes, Ricky M. “Cloud Computing; The Past, The Present, The Future (Part 1).” Network Security Articles for Windows Server 2003, 2008 & Vista. 22 July 2009. Web. 21 Feb. 2011. <http://www.windowsecurity.com/articles/Cloud-Computing-Past-Present-Future-Part1.html>.
9. Mahajan, Harsh. “Security Issues with Cloud Computing.” Windows 7 Tips, Downloads, Security, News, Phones, Office, Live. 30 Jan. 2011. Web. 25 Feb. 2011. <http://www.thewindowsclub.com/security-issues-with-cloud-computing>.
10. Orlando, Dan. “Cloud Computing Service Models.” IBM – United States. 8 Feb. 2011. Web. 25 Feb. 2011. <http://www.ibm.com/developerworks/cloud/library/cl-cloudservicemodels/?cmp=dw&cpb=dwcld&ct=dwnew&cr=dwnen&ccy=zz&csr=021011>.
11. Rittinghouse, John W., and James F. Ransome. Cloud Computing: Implementation, Management, and Security. Boca Raton: CRC, 2010. Print.
12. Still, Beth. “Cloud Computing – Usage and Advantages.” Web Design | Website Design & Magento Ecommerce. 3rd Nov. 2009. Web. 28 Feb. 2011. <http://www.junowebdesign.com/web-industry-news/cloud-computing-usage-and-advantages>.
13. Tek-Tips. “Defining Cloud Computing’s Key Characteristics, Deployment and Delivery Types | Tek Tips Whitepaper Library.” Tek-Tips Whitepaper Library. 30 June 2009. Web. 25 Feb. 2011. <http://tek-tips.nethawk.net/blog/defining-cloud-computings-key-characteristics-deployment-and-delivery-types>.
14. Widener, Joey. “5 Essential Characteristics of Cloud Computing | Networking Exchange Blog.” Networking Exchange Blog | a Place for Business Leaders to Learn, Share, and Engage with Networking Experts on Advancing Business Goals through Technology Innovation. 18 Feb. 2011. Web. 23 Feb. 2011. <http://networkingexchangeblog.att.com/technology/5-essential-characteristics-of-cloud-computing/>.

Computer aided software engineering

Computer Aided Software Engineering (CASE)

What is CASE?
Computer-Aided Software Engineering (CASE) is the use of software tools to assist in the development and maintenance of software. Tools used to assist in this way are known as CASE Tools.

What is CASE Tool?
A CASE tool is a computer-based product aimed at supporting one or more software engineering activities within a software development process.
Computer-Aided Software Engineering tools are those software which are used in any and all phases of developing an information system, including analysis, design and programming. For example, data dictionaries and diagramming tools aid in the analysis and design phases, while application generators speed up the programming phase.
CASE tools provide automated methods for designing and documenting traditional structured programming techniques. The ultimate goal of CASE is to provide a language for describing the overall system that is sufficient to generate all the necessary programs needed.

Components of CASE Tools
CASE Tool are used to support a wide variety of SDLC. CASE Tools are used to help in the project identification and selection, project initiation and planning, and design phacss, and in the implementation and maintenance phases. The components of CASE Tools are categorized into 3 mainly;

  • UpperCASE Tool
    UpperCASE Tool is a Computer-Aided Software Engineering (CASE) software tool that supports the software development activities upstream from implementation. Uppercase tool focus on the analysis phase (but sometimes also the design phase) of the software development lifecycle (diagramming tools, report and form generators, and analysis tools)
  • LowerCASE Tool
    LowerCASE Tool Computer-Aided Software Engineering (CASE) software tool that directly supports the implementation (programming) and integration tasks. LowerCASE tools support database schema generation, program generation, implementation, testing, and configuration management.
  • I CASE
    Tools that integrate both upper and lower CASE, for example making it possible to design a form and build the database to support it at the same time. An automated system development environment that provides numerous tools to create diagrams, forms and reports. It also offers analysis, reporting, and code generation facilities and seamlessly shares and integrates data across and between tools.

Types of CASE Tools
The general types of CASE tools are listed below:

  1. Diagramming tools: enable system process, data and control structures to be represented graphically.
  2. Computer display and report generators: help prototype how systems look and feel. It makes it easier for the systems analyst to identify data requirements and relationship.
  3. Analysis tools: automatically check for importance, inconsistent, or incorrect specifications in diagrams, forms, and reports.
  4. Central repository: enables the integrated storage of specifications, diagrams, reports and project management information.
  5. Documentation Generators: produce technical and user documentation in standard formats.
  6. Code generators: enable the automatic generation of program and data base definition code directly from the design documents, diagrams, forms, and reports.

What is Quality to CASE Tool?
The reason for using case may be very straight forward and practical decision such as being easier to use and makes life better. However from a broader perspective, Quality to using case implies how Case tools have improved the quality of software development. Case tool has improved software development in the following;

  • Improve the quality of the system developed.
  • Increase the speed with which systems are designed and developed.
  • Ease and improve the testing process through the use of automated checking.
  • Improve the integration of development activities via common methodologies.
  • Improve the quality and completeness to documentation.
  • Help standardize the development process.
  • Improve the management of the project.
  • Simplify program maintenance.
  • Promote reusability of modules and documentation.
  • Improve software portability across environments.

What is productivity to CASE Tool? And how it helps Software Development.
Productivity can be said to be the state or quality of producing something. Or the effectiveness of the productive efforts. Therefore productivity to case can be the achievements gained or the effectiveness of using the CASE technology. Productivity has helped in the development of software in the following ways;

  • Provide new systems with shorter development time.
  • Improve the productivity of the systems development process.
  • Improve the quality of the systems development process.
  • Improve worker skills.
  • Improve portability of new systems.
  • Improve the management of the systems development process.

Functions of a CASE Tool

  1. Analysis
    CASE analysis tools automatically check for incomplete, inconsistent, or in correct specifications in diagrams, forms and reports.
  2. Design
    This is where the technical blueprint of the system is created by designing the technical architecture – choosing amongst the architectural designs of telecommunications, hardware and software that will best suit the organization’s system and future needs. Also designing the systems model – graphically creating a model from graphical user interface, screen design, and databases, to placement of objects on screen
  3. Code generation
    CASE Tool has code generators which enable the automatic generation of program and data base definition code directly from the documents, diagrams, forms, and reports.
  4. Documentation
    CASE Tool has documentation generators to produce technical and user documentation in standard forms. Each phase of the SDLC produces documentation. The types of documentation that flow from one face to the next vary depending upon the organization, methodologies employed and type of system being built.

Summary
This write up introduces the use of automated tools to support the systems development process. First, it started by defining CASE and What is CASE tool, the components of CASE tool which include upper CASE, lower CASE and Integrated CASE , each covering different stages of the SDLC. The types of CASE tools were also discussed. Secondly in the contents it stated what quality means to CASE tool, what is productivity to CASE tool and how it helps to the development of software. Function of CASE tools which include: analysis, design, code generation, and documentation.

References

  1. computer aided software engineering
    http://en.wikipedia.org/wiki/Computer-aided_software_engineering
    Date accessed: 11th February, 2007.
  2. Case tool.
    http://www.answers.com/case%20tool
    Date accessed: 11th February, 2007.
  3. what is case
    http://www.sei.cmu.edu/legacy/case/case_whatis.html
    Date accessed: 12th February, 2007.
  4. Upper Case tool.
    http://www.opfro.org/index.html?Components/Producers/Tools/UpperCASETools.html~Contents
    Date accessed: 11th February, 2007.
  5. Lowercase tool
    http://www.opfro.org/index.html?Components/Producers/Tools/LowerCASETools.html~Contents
    Date accessed: 11th February, 2007.
  6. Jefferey A. Hoffer, Joey F. George, and Joseph S. Valacich. Modern Systems Analysis and Design. Fourth edition .2005. New Jersey. Pg 602-617.