Wednesday, 2 March 2016

About the Artificial Intellegency

Artificial Intelligence, which commenced publication in 1970, is now the generally accepted premier international forum for the publication of results of current research in this field. The journal welcomes foundational and applied papers describing mature work involving computational accounts of aspects of intelligence. Specifically, it welcomes papers on:
  • Artificial Intelligence and Philosophy
  • Automated reasoning and inference
  • Case-based reasoning
  • Cognitive aspects of AI
  • Commonsense reasoning
  • Constraint processing
  • Heuristic search
  • High-level computer vision
  • Intelligent interfaces
  • Intelligent robotics
  • Knowledge representation
  • Machine learning
  • Multiagent systems
  • Natural language processing
  • Planning and theories of action
  • Reasoning under uncertainty or imprecision

Software maintainability testing

Maintainability testing shall use a model of the maintainability requirements of the software/system. The maintainability testing shall be specified in terms of the effort required to effect a change under each of the following four categories:
  • Corrective maintenance – Correcting problems. The maintainability of a system can be measured in terms of the time taken to diagnose and fix problems identified within that system.
  • Perfective maintenance –  Enhancements. The maintainability of a system can also be measured in terms of the effort taken to make required enhancements to that system. This can be tested  by recording the time taken to achieve a new piece of identifiable functionality such as a change to the database, etc. A number of similar tests should be run and an average time calculated. The outcome will be that it is possible to give an average effort required to implement specified functionality. This can be compared against a target effort and an assessment made as to whether requirements are met.
  • Adaptive maintenance – Adapting to changes in environment. The maintainability of a system can also be measured in terms on the effort required to make required adaptations to that system. This can be measured in the way described above for perfective maintainability testing.
  • Preventive maintenance – Actions to reduce future maintenance costs. This refers to actions to reduce future maintenance costs.

Software testing Methods and types

  • Unit testing: The act of testing software at the most basic (object) level. Generallyperformed by developers, run in "friend classes" with code-level access to read and manipulate objects.
  • Acceptance testing: Also known as acceptance tests, build verification tests, basic verification tests, these are rudimentary tests which prove whether or not a given build is worth deeper testing. The term "smoke test" is a colloquial term -- when machines are built, engineers will power them up and just let them run, looking for smoke as a sign of serious problems.
  • Functional testing: Functional testing takes a user story or a product feature and tests all of the functionality contained within that feature. For example, in a photo application like Photoshop, functional testing would cover all the functionality contained within a feature like opening files (resolving file paths, determining appropriate format filters, passing the file path off to the filter) as well as handling errors within that functionality.
  • System testing: Testing the project as a collective system. For the Photoshop application, an example would be to open a file in a given format, manipulate that file in various ways, and then output the file. System testing generally combines multiple features into an end-to-end process or scenario.
  • Performance testing: Tests an application's performance characteristics, be it file size, concurrent users, or mean-time-to-failure.
  • Security testing: A collection of tests focused on probing an application's security, or its ability to protect user assets.
Other people consider approaches to testing to be testing methodologies. For instance, boundary testing (finding the limits of a feature, then testing at that limit, below the limit, and above the limit); pairwise or combinatorial testing, wherein a tester takes a very scientific approach to testing combinations of input variables, etc.

Software development life cycle activities

SDLC ACTIVITIES
SDLC provides a series of steps to be followed to design and develop a software product efficiently. SDLC framework includes the following steps:
SDLC

Communication

This is the first step where the user initiates the request for a desired software product. He contacts the service provider and tries to negotiate the terms. He submits his request to the service providing organization in writing.

Requirement Gathering

This step onwards the software development team works to carry on the project. The team holds discussions with various stakeholders from problem domain and tries to bring out as much information as possible on their requirements. The requirements are contemplated and segregated into user requirements, system requirements and functional requirements. The requirements are collected using a number of practices as given -
  • studying the existing or obsolete system and software,
  • conducting interviews of users and developers,
  • referring to the database or
  • collecting answers from the questionnaires.

Feasibility Study

After requirement gathering, the team comes up with a rough plan of software process. At this step the team analyzes if a software can be made to fulfill all requirements of the user and if there is any possibility of software being no more useful. It is found out, if the project is financially, practically and technologically feasible for the organization to take up. There are many algorithms available, which help the developers to conclude the feasibility of a software project.

System Analysis

At this step the developers decide a roadmap of their plan and try to bring up the best software model suitable for the project. System analysis includes Understanding of software product limitations, learning system related problems or changes to be done in existing systems beforehand, identifying and addressing the impact of project on organization and personnel etc. The project team analyzes the scope of the project and plans the schedule and resources accordingly.

Software Design

Next step is to bring down whole knowledge of requirements and analysis on the desk and design the software product. The inputs from users and information gathered in requirement gathering phase are the inputs of this step. The output of this step comes in the form of two designs; logical design and physical design. Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams and in some cases pseudo codes.

Coding

This step is also known as programming phase. The implementation of software design starts in terms of writing program code in the suitable programming language and developing error-free executable programs efficiently.

Testing

An estimate says that 50% of whole software development process should be tested. Errors may ruin the software from critical level to its own removal. Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various levels of code such as module testing, program testing, product testing, in-house testing and testing the product at user’s end. Early discovery of errors and their remedy is the key to reliable software.

Integration

Software may need to be integrated with the libraries, databases and other program(s). This stage of SDLC is involved in the integration of software with outer world entities.

Implementation

This means installing the software on user machines. At times, software needs post-installation configurations at user end. Software is tested for portability and adaptability and integration related issues are solved during implementation.

Operation and Maintenance

This phase confirms the software operation in terms of more efficiency and less errors. If required, the users are trained on, or aided with the documentation on how to operate the software and how to keep the software operational. The software is maintained timely by updating the code according to the changes taking place in user end environment or technology. This phase may face challenges from hidden bugs and real-world unidentified problems.

Disposition

As time elapses, the software may decline on the performance front. It may go completely obsolete or may need intense upgradation. Hence a pressing need to eliminate a major portion of the system arises. This phase includes archiving data and required software components, closing down the system, planning disposition activity and terminating system at appropriate end-of-system time.

Tuesday, 1 March 2016

Role of IT in Business

While information technology obviously sounds familiar to most of us, still we only take it for granted without realizing its crucial role in every aspect of our life. In business for example, there are increasing trends that companies leverage on information technology to stay ahead of competition and increase their productivity and efficiency in business. But again, what role does exactly information technology play in business all these times? Even if it does have beneficial impacts on your business, is it the same for everyone else and will it continues in the future? Only time can tell. For the meantime, let's travel back in time and find out what kind of role does information technology have for us.
The term information technology only comes to use after its first appearance at later years in Harvard Business Review. Despite the fact, the core concept of information technology has actually been applied since prehistoric period where people have started using symbols and drawings as a means of communication. After all the basic idea of information technology itself is to use technology and information to make your life easier and communications are certainly part of it. You may also want to note that technology we are talking here include any inventions to help do something or solve problems. Earlier information technology applications include numbering systems and calculator. So guess what, it really has something to do with numbers (and of course business and money) in the first place. After the invention of first computer on 1948, information technology starts to gain its momentum and keeps evolving until present time. Since computers can be considered as the key innovations to the development in information technology, from that time on information technology is literally defined as tool, application, systems or simply products which are based on computer-processed information.
In general, information technology whatever it takes form, has one thing in common - they enhance our life in any aspects including in business. However, in business and organization context, it takes central role especially thanks to seamless flow of information between parties involved. Among others, it allows us to better connect with other people from anywhere, anytime and thus faster decision making process. But again, as any other things, these benefits in business also comes with price. The application of information technology, depends on the its flexibility and scalability, needs a substantial capital to start with. Usually, the greater size of your organization, the greater investment you need. The investment itself will not only consist of the technology itself but also time and human resources. If you think it worths, then go ahead. Only, make sure to spend wisely and effectively. After all, the information technology exists in the first place to help making money not wasting it right? Above all things, there is no doubt that information technology play a very important role in business in that it creates more opportunity while saving more money and time.

The Value of Information Technology in Your Business
Increased Productivity

If anything, the role that information technology takes up in your business is to make everything run faster. Compare if you count wages manually, just how many days it will take, not to mention if there is miscalculation. Machines, computers, and any other artificial entities obviously win over manual method and human being when it comes to accuracy and calculation. The reason is because they use programmed algorithm and exact data. In many ways, automation with information technology in business help us to cut down stages in work flow because technologically advanced machines/computers are capable of handling and processing a lot of data or tasks at once without a hitch. Also, unlike human, they are less susceptible to ambient interruptions and thus be able to work more effectively and efficiently in shorter time.
With so many amazing innovations in information technology for the past decades, there are simply a lot of different ways to become more competitive in your business. You can send and get information in every way possible. Internet, smartphones, tablets, notebooks, video conference, TVs, video call and many more. In the case of cloud computing technology, you can retrieve, process, store, and access data and information faster and more efficient thanks to cloud computing technology. As such, important documents and credentials related to your business will also be safer since everything is kept on the cloud. You will also need less or perhaps no more physical space and resources to manage all the data and information related to your business.
Another role of information technology in business which is no less crucial is to minimize costs. In the first place, automation will reduce even eliminate the need for human power to do certain tasks. On different occasion, information technology application in business can help alleviate overall operating costs because you do not have to make frequent close or distant trip to see and talk with customers, clients, business partners, or even your own colleagues. In the same way, you can also make the most of your time thanks to mobile devices. You can practically work from anywhere, anytime. Sending emails, editing documents, and doing presentations while on the go. Now your office can tag along wherever you go. You no longer have to be confined to the office and still become more productive in business.

OpenCV computer vision library

OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. OpenCV was built to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in the commercial products. Being a BSD-licensed product, OpenCV makes it easy for businesses to utilize and modify the code.
The library has more than 2500 optimized algorithms, which includes a comprehensive set of both classic and state-of-the-art computer vision and machine learning algorithms. These algorithms can be used to detect and recognize faces, identify objects, classify human actions in videos, track camera movements, track moving objects, extract 3D models of objects, produce 3D point clouds from stereo cameras, stitch images together to produce a high resolution image of an entire scene, find similar images from an image database, remove red eyes from images taken using flash, follow eye movements, recognize scenery and establish markers to overlay it with augmented reality, etc. OpenCV has more than 47 thousand people of user community and estimated number of downloads exceeding 7 million. The library is used extensively in companies, research groups and by governmental bodies.
Along with well-established companies like Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota that employ the library, there are many startups such as Applied Minds, VideoSurf, and Zeitera, that make extensive use of OpenCV. OpenCV’s deployed uses span the range from stitching streetview images together, detecting intrusions in surveillance video in Israel, monitoring mine equipment in China, helping robots navigate and pick up objects at Willow Garage, detection of swimming pool drowning accidents in Europe, running interactive art in Spain and New York, checking runways for debris in Turkey, inspecting labels on products in factories around the world on to rapid face detection in Japan.
It has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS. OpenCV leans mostly towards real-time vision applications and takes advantage of MMX and SSE instructions when available. A full-featured CUDA and OpenCL interfaces are being actively developed right now. There are over 500 algorithms and about 10 times as many functions that compose or support those algorithms. OpenCV is written natively in C++ and has a templated interface that works seamlessly with STL containers

Monday, 29 February 2016

About Data Mining

Data Mining

Data Mining is an analytic process designed to explore data (usually large amounts of data - typically business or market related - also known as "big data") in search of consistent patterns and/or systematic relationships between variables, and then to validate the findings by applying the detected patterns to new subsets of data. The ultimate goal of data mining is prediction - and predictive data mining is the most common type of data mining and one that has the most direct business applications. The process of data mining consists of three stages: (1) the initial exploration, (2) model building or pattern identification with validation/verification, and (3) deployment (i.e., the application of the model to new data in order to generate predictions).
Stage 1: Exploration. This stage usually starts with data preparation which may involve cleaning data, data transformations, selecting subsets of records and - in case of data sets with large numbers of variables ("fields") - performing some preliminary feature selection operations to bring the number of variables to a manageable range (depending on the statistical methods which are being considered). Then, depending on the nature of the analytic problem, this first stage of the process of data mining may involve anywhere between a simple choice of straightforward predictors for a regression model, to elaborate exploratory analyses using a wide variety of graphical and statistical methods (see Exploratory Data Analysis (EDA)) in order to identify the most relevant variables and determine the complexity and/or the general nature of models that can be taken into account in the next stage.
Stage 2: Model building and validation. This stage involves considering various models and choosing the best one based on their predictive performance (i.e., explaining the variability in question and producing stable results across samples). This may sound like a simple operation, but in fact, it sometimes involves a very elaborate process. There are a variety of techniques developed to achieve that goal - many of which are based on so-called "competitive evaluation of models," that is, applying different models to the same data set and then comparing their performance to choose the best. These techniques - which are often considered the core of predictive data mining - include: Bagging (Voting, Averaging), BoostingStacking (Stacked Generalizations), and Meta-Learning.
Stage 3: Deployment. That final stage involves using the model selected as best in the previous stage and applying it to new data in order to generate predictions or estimates of the expected outcome.
The concept of Data Mining is becoming increasingly popular as a business information management tool where it is expected to reveal knowledge structures that can guide decisions in conditions of limited certainty. Recently, there has been increased interest in developing new analytic techniques specifically designed to address the issues relevant to business Data Mining (e.g., Classification Trees), but Data Mining is still based on the conceptual principles of statistics including the traditional Exploratory Data Analysis (EDA) and modeling and it shares with them both some components of its general approaches and specific techniques.
However, an important general difference in the focus and purpose between Data Mining and the traditional Exploratory Data Analysis (EDA) is that Data Mining is more oriented towards applications than the basic nature of the underlying phenomena. In other words, Data Mining is relatively less concerned with identifying the specific relations between the involved variables. For example, uncovering the nature of the underlying functions or the specific types of interactive, multivariate dependencies between variables are not the main goal of Data Mining. Instead, the focus is on producing a solution that can generate useful predictions. Therefore, Data Mining accepts among others a "black box" approach to data exploration or knowledge discovery and uses not only the traditional Exploratory Data Analysis (EDA) techniques, but also such techniques as Neural Networks which can generate valid predictions but are not capable of identifying the specific nature of the interrelations between the variables on which the predictions are based.