-->
How
hardware industry differs from software industry?
Hardware
industries are been established for centuries and they are the major
assets of the country. After software industries have been
established software and hardware integrated projects have been in
peek for the growth of technological and social well being. After
both sectors grown well all eyes goes to the difference imposed by
both sectors and question arises what drives an industry. This post
is meant for explanation regarding software but it doesnt mean that
sofware is more important.
Hardware
- Harware designs are to be finished before manufacture otherwise it would lead to a great disaster wasting all the resources and if finds default then whole harware has to be replaced. Also the quality of the hardware diminishes with time and the cost of upgrade seems to be infinitely.
Software
- Software evolves over time to integrate new functionalities and new features.When there is a bug then the new version can be released,it only matters for few line of code to be replaced.
There
are two kinds of softwares
Legacy
software are
those which satisfies users needs but difficult to evolve due to
design inelegance or antiquated technology.Currently, 60% of s/w
maintenance cost is used for adding new functionality to the legacy
s/w and only 17% for bug fixing.
Beautiful
software meets customer needs and are easy
to evolve.
First one is Waterfall model. The levels in waterfall model are:
- Requirement
specification
- Design
- Construction(implementation
or coding)
- Integration
- Testing
and debugging
- Installation
- Maintenance
The second one is Spiral model. In this model, a prototype is built in every phase discussed above and then developed in each phase.
- Determine the objectives, alternatives, and constraints on the new iteration.
- Evaluate alternatives and identify and resolve risk issues.
- Develop and verify the product for this iteration.
- Plan the next iteration.
This
also helps in back tracking, reversing or revising the process.
The third is Agile model. The key features of this model are:
- Embraces change as a fact of life: continuous improvement vs. phases.
- Developers continuously refine working but incomplete prototype until customers happy, with customer feedback on each iteration (every ~2 weeks).
- Agile
emphasizes Test-Driven Development (TDD) to reduce mistakes, written
down User Stories to validate customer requirements, Velocity to
measure progress.
Testing
and Formal methods
Testing
cannot be exhausting. Testing has many levels:
- The base thing is called unit testing. That's testing to see if a single method does what's expected.
- The next level is module or functional testing to test across individual units, like with across classes versus within a class.
- Integration testing is to try and see if a bunch of modules communicate correctly. It's a more narrow interface., and each time when we add one of these things, we're assuming the one below does that work.
- Finally, at the top is system or acceptance testing, tests weather the whole program meet what the customer wants it to do.
Types
of Testing:
- Coverage testing specifies the percentage of code paths that have been tested.
- Regression testing is used to automatically rerun old tests to ensure that the current version still works at least as well as it used to.
- Continuous integration testing, which means the entire program is tested every time new code is checked in, versus later phases.
Software as a Service (SaaS)
Software as a Service (SaaS) delivers software and data as a service over the Internet, usually via a thin program such as a browser that runs on local client devices instead of binary code that must be installed and runs wholly on that device. Eg: searching, social networking, and videos.
Service oriented Architecture(SOA)
SOA
defines how to integrate widely disparate applications for a
Web-based environment and uses multiple implementation platforms.
Rather than defining an API,
SOA defines the interface in terms of protocols and functionality. An
endpoint
is the entry point for such a SOA implementation. SaaS
is a special case of a software architecture where all components are
designed to be services. SOA actually means that components of an
application act as interoperable services, and can be used
independently and recombined in other applications.The contrasting
implementation is considered a 'software silo', which rarely has APIs
to internal components.
SaaS has 3 demands on infrastructure,
SaaS has 3 demands on infrastructure,
- Communication- Allow customers to interact with the services.
- Scalability- Fluctuations in demand during new services to add users rapidly.
- Dependability- Service and communication available at any time.
Collections of commodity small-scale computers connected by commodity Ethernet switches- clusters, offeres scalable and much cheaper serving.The public cloud services or utility computing offers computing, storage, and communication at pennies per hour.
In order to efficiently use a SOA, the architecture must meet the following requirements:
- Interoperability among different systems and programming languages that provides the basis for integration between applications on different platforms through a communication protocol. One example of such communication depends on the concept of messages.
- Desire
to create a federation of resources. Establish and maintain data
flow to a federated database system. This allows new functionality
developed to reference a common business format for each data
element.
Cloud Computing
Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet).Cloud Computing provides the scalable and dependable hardware computation and storage for SaaS. Cloud computing consists of clusters of commodity servers that are connected by local area network switches, with a software layer providing sufficient redundancy to make this cost-effective hardware dependable.
No comments:
Post a Comment