Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Cisco Virtualized Packet Core (VPC)

VPC is a technology providing all core services for 4G, 3G, 2G, WiFi, and small cell networks. It delivers networking functionality as virtualized services to allow greater scalability and faster deployment of new services at a reduced cost. It distributes and manages packet core functions across all resources, whether virtual or physical. Its key features include packet core service consolidation, dynamic scaling, and system agility.

Its technology supports IoT by offering network function virtualization, SDN (software-defined networking), and rapid networked system deployment. This proves critical because its virtualization and SDN support low-power, high flow networking, and the simple deployment of a wide variety of small devices. It eliminates many of the finer details of IoT systems, and conflicts, through consolidating into a single system and single technology for connecting and integrating all elements.

Use Case : Smart Transportation

Rail transportation provides a viable example of the power of VPC. The problems VPC solves relate to safety, mobility, efficiency, and service improvement −

  • Rail applications use their own purpose-built networks, and suffer from interoperability issues; for example, trackside personnel cannot always communicate with local police due to different technologies.
  • Determining if passengers need extra time to board remains a mostly manual task.
  • Data updates, like schedules, remain manual.
  • Each piece of equipment, e.g., a surveillance camera, requires its own network and power source.

VPC improves service by introducing direct communication over a standard network, more and automated monitoring, automatic data updates through smart signs, and native IP networks for all devices along with PoE (Power over Ethernet) technology. This results in passengers who feel safer, and enjoy a better quality service.

Salesforce IoT

The Salesforce IoT Cloud is a platform for storing and processing IoT data. It uses the Thunder engine for scalable, real-time event processing. Its collection of application development components, known as Lightning, powers its applications. It gathers data from devices, websites, applications, customers, and partners to trigger actions for real-time responses.

Salesforce, a CRM leader, decided to enter this space due to the need to remain competitive in the coming era. The IoT cloud adds to Salesforce by expanding its reach, and the depth of its analytics.

Salesforce combined with IoT delivers dramatically improved customer service with tighter integration and responses to real-time events; for example, adjustments in wind turbines could trigger automatic rebooking of delayed/canceled connecting flights before airline passengers land.

Electric Imp

The Electric Imp platform is Salesforce’s recommended method for quickly connecting devices to the cloud. You develop applications through the Squirrel language; a high level, OO, lightweight scripting language. Applications consist of two modules: the device module, which runs on the device; and the agent module, which runs in the Electric Imp cloud. The platform ensures secure communication between the modules, and you send devices messages with a simple call −

agent.send("nameOfmessage", data);

Listen for messages on the agent with the following code −

device.on("nameOfmessage", function(data) { 
  
  //Data operations 

});

Beyond these basic tasks, coding for device interaction, monitoring, and response resembles standard web application development, and uses a simple, easy-to-learn syntax.

GE Predix

GE (General Electric) Predix is a software platform for data collection from industrial instruments. It provides a cloud-based PaaS (platform as a service), which enables industrial-grade analytics for operations optimization and performance management. It connects data, individuals, and equipment in a standard way.

Predix was designed to target factories, and give their ecosystems the same simple and productive function as operating systems that transformed mobile phones. It began as a tool for General Electric’s internal IoT, specifically created to monitor products sold.

Ge Predix Partnered with Microsoft Azure

Microsoft’s Azure is a cloud computing platform and supporting infrastructure. It provides PaaS and IaaS, and assorted tools for building systems. Predix, recently made available on Azure, exploits a host of extra features like AI, advanced data visualization, and natural language technology. Microsoft plans to eventually integrate Predix with its Azure IoT suite and Cortana Intelligence suite, and also their well-established business applications. Azure will also allow users to build applications using Predix data. Note AWS and Oracle also support Predix.

Developer Kits

GE offers inexpensive developer kits consisting of general components and an Intel Edison processor module. Developers have the options of a dual core board and a Raspberry Pi board. Developers need only provide an IP address, Ethernet connection, power supply, and light programming to set data collection.

The kit automatically establishes the necessary connection, registers with the central Predix system, and begins transmitting environmental data from sensors. Users subscribe to hardware/software output, and GE Digital owns and manages the hardware and software for the user.

This kit replaces the awkward and involved assemblies of simulations and testing environments. In other simulations, developers typically use a large set of software (one for each device), and specific configurations for each connection. They also program the monitoring of each device, which can sometimes take hours. The kit reduces much of the time spent performing these tasks from hours to only minutes.

The kit also includes software components for designing an IoT application that partners with Predix services. GE plans to release other versions of the kit for different applications.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 7: IOT Law Enforcement Consumer Applications and Thingworx

IoT enhances law enforcement organizations and practice, and improves the justice system. The technology boosts transparency, distributes critical data, and removes human intervention where it proves unnecessary.

Policing

Law enforcement can be challenging. IoT acts as an instrument of law enforcement which reduces manual labor and subjective decisions through better data, information sharing, and advanced automation. IoT systems shave costs by reducing human labor in certain areas such as certain traffic violations.

IoT aids in creating better solutions to problems by using technology in the place of force; for example, light in-person investigations of suspicious activities can be replaced with remote observation, logged footage of violations, and electronic ticketing. It also reduces corruption by removing human control and opinion for some violations.

This dart planted in a truck gate prevents dangerous car chases. A patrol car launches the tracking dart which pierces the vehicle. Then the main system receives all data needed to locate the vehicle.

Court System

Current court systems utilize traditional technology and resources. They generally do not exploit modern analytics or automation outside of minor legal tasks. IoT brings superior analytics, better evidence, and optimized processes to court systems which accelerate processes, eliminate excessive procedures, manage corruption, reduce costs, and improve satisfaction.

In the criminal court system, this can result in a more effective and fair system. In routine court services, it introduces automation similar to that of common government office services; for example, IoT can automate forming an LLC.

IoT combined with new regulations can remove lawyers from many common legal tasks or reduce the need for their involvement. This reduces costs and accelerates many processes which often require months of traversing legal procedures and bureaucracy.

Consumer Applications

Consumers benefit personally and professionally from the optimization and data analysis of IoT. IoT technology behaves like a team of personal assistants, advisors, and security. It enhances the way we live, work, and play.

Home

IoT takes the place of a full staff −

  • Butler − IoT waits for you to return home, and ensures your home remains fully prepared. It monitors your supplies, family, and the state of your home. It takes actions to resolve any issues that appear.
  • Chef − An IoT kitchen prepares meals or simply aids you in preparing them.
  • Nanny − IoT can somewhat act as a guardian by controlling access, providing supplies, and alerting the proper individuals in an emergency.
  • Gardner − The same IoT systems of a farm easily work for home landscaping.
  • Repairman − Smart systems perform key maintenance and repairs, and also request them.
  • Security Guard − IoT watches over you 24/7. It can observe suspicious individuals miles away, and recognize the potential of minor equipment problems to become disasters well before they do.

 

This smart, connected stove from Whirlpool allows two different heat settings on the same surface, remote monitoring, and remote control.

Work

A smart office or other workspace combines customization of the work environment with smart tools. IoT learns about you, your job, and the way you work to deliver an optimized environment. This results in practical accommodations like adjusting the room temperature, but also more advanced benefits like modifying your schedule and the tools you use to increase your output and reduce your work time. IoT acts as a manager and consultant capable of seeing what you cannot.

Play

IoT learns as much about you personally as it does professionally. This enables the technology to support leisure −

  • Culture and Night Life − IoT can analyze your real-world activities and response to guide you in finding more of the things and places you enjoy such as recommending restaurants and events based on your preferences and experiences.
  • Vacations − Planning and saving for vacations proves difficult for some, and many utilize agencies, which can be replaced by IoT.
  • Products and Services − IoT offers better analysis of the products you like and need than current analytics based on its deeper access. It integrates with key information like your finances to recommend great solutions.

 

Thingworx

Thingworx is a platform for the rapid development and deployment of smart, connected devices. Its set of integrated IoT development tools support connectivity, analysis, production, and other aspects of IoT development.

It offers Vuforia for implementing augmented reality development, and Kepware for industrial connectivity. KEPServerEX provides a single point for data distribution, and facilitates interoperability when partnered with a ThingWorx agent.

 

Components

Thingworx offers several key tools for building applications. These tools include the Composer, the Mashup Builder, storage, a search engine, collaboration, and connectivity. The Composer provides a modeling environment for design testing. The Mashup Builder delivers easy dashboard building through common components (or widgets); for example, buttons, lists, wikis, gauges, and etc.

Thingworx uses a search engine known as SQUEAL, meaning Search, Query, and Analysis. Users employ SQUEAL in analyzing and filtering data, and searching records.

Interface

The ThingWorx platform uses certain terms you must familiarize yourself with. In the main screen’s top menu, you search for entities or create them. “Entity” refers to something created in ThingWorx. You can also import/export files and perform various operations on them.

In the left menu, you find entity groups, which are used to produce models and visualize data; and manage storage, collaboration, security, and the system.

interface

When you select the Modeling category in the menu, you begin the process by creating an entity. The entity can be any physical device or software element, and it produces an event on changes to its property values; for example, a sensor detects a temperature change. You can set events to trigger actions through a subscription which makes decisions based on device changes.

Data Shapes consist of one or more fields. They describe the data structure of custom events, infotables, streams, and datatables. Data shapes are considered entities.

datashapes_fields

Thing Templates and Thing Shapes allow developers to avoid repeating device property definitions in large IoT systems. Developers create Thing Templates to allow new devices to inherit properties. They use Thing Shapes to define Templates, properties, or execute services.

Note a Thing only inherits properties, services, events, and other qualities from a single template, however, Things and templates can inherit properties from multiple Thing Shapes.

Development

ThingWorx actually requires very little programming. Users connect devices, establish a data source, establish device behaviors, and build an interface without any coding. It also offers scalability appropriate for both hobbyist projects and industrial applications.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 6: Internet of Things Transportation Education Government Applications

IOT Transportation Applications

At every layer of transportation, IoT provides improved communication, control, and data distribution. These applications include personal vehicles, commercial vehicles, trains, UAVs, and other equipment. It extends throughout the entire system of all transportation elements such as traffic control, parking, fuel consumption, and more.

Rails and Mass Transit

Current systems deliver sophisticated integration and performance, however, they employ older technology and approaches to MRT. The improvements brought by IoT deliver more complete control and monitoring. This results in better management of overall performance, maintenance issues, maintenance, and improvements.

Mass transit options beyond standard MRT suffer from a lack of the integration necessary to transform them from an option to a dedicated service. IoT provides an inexpensive and advanced way to optimize performance and bring qualities of MRT to other transportation options like buses. This improves services and service delivery in the areas of scheduling, optimizing transport times, reliability, managing equipment issues, and responding to customer needs.

Road

The primary concerns of traffic are managing congestion, reducing accidents, and parking. IoT allows us to better observe and analyze the flow of traffic through devices at all traffic observation points. It aids in parking by making storage flow transparent when current methods offer little if any data.

This smart road sign receives data and modifications to better inform drivers and prevent congestion or accidents.

Accidents typically result from a number of factors, however, traffic management impacts their frequency. Construction sites, poor rerouting, and a lack of information about traffic status are all issues that lead to incidents. IoT provides solutions in the form of better information sharing with the public, and between various parties directly affecting road traffic.

Automobile

Many in the automotive industry envision a future for cars in which IoT technology makes cars “smart,” attractive options equal to MRT. IoT offers few significant improvements to personal vehicles. Most benefits come from better control over related infrastructure and the inherent flaws in automobile transport; however, IoT does improve personal vehicles as personal spaces. IoT brings the same improvements and customization to a vehicle as those in the home.

Commercial Transportation

Transportation benefits extend to business and manufacturing by optimizing the transport arm of organizations. It reduces and eliminates problems related to poor fleet management through better analytics and control such as monitoring idling, fuel consumption, travel conditions, and travel time between points. This results in product transportation operating more like an aligned service and less like a collection of contracted services.

Education Applications

IoT in the classroom combines the benefits of IoT in content delivery, business, and healthcare. It customizes and enhances education by allowing optimization of all content and forms of delivery. It enables educators to give focus to individuals and their method. It also reduces costs and labor of education through automation of common tasks outside of the actual education process.

Education Organizations

Education organizations typically suffer from limited funding, labor issues, and poor attention to actual education. They, unlike other organizations, commonly lack or avoid analytics due to their funding issues and the belief that analytics do not apply to their industry.

IoT not only provides valuable insight, but it also democratizes that information through lowcost, low-power small devices, which still offer high performance. This technology aids in managing costs, improving the quality of education, professional development, and facility management improvement through rich examinations of key areas −

  • Student response, performance, and behavior
  • Instructor response, performance, and behavior
  • Facility monitoring and maintenance
  • Data from other facilities

Data informs them about ineffective strategies and actions, whether educational efforts or facility qualities. Removing these roadblocks makes them more effective.

Educators

Information provided by IoT empowers educators to deliver improved education. They have a window into the success of their strategies, their students’ perspective, and other aspects of their performance. IoT relieves them of administrative and management duties, so they can focus on their mission. It automates manual and clerical labor, and facilitates supervising through features like system flags or controls to ensure students remain engaged.

 

A school in Richmond, California, embeds RFID chips in ID cards to track the presence of students. Even if students are not present for check-in, the system will track and log their presence on campus.

IoT provides instructors with easy access to powerful educational tools. Educators can use IoT to perform as a one-on-one instructor providing specific instructional designs for each pupil; for example, using data to determine the most effective supplements for each student, and autogenerating content from lesson materials on-demand for any student.

The application of technology improves the professional development of educators because they truly see what works, and learn to devise better strategies, rather than simply repeating old or ineffective methods.

IoT also enhances the knowledge base used to devise education standards and practices. Education research suffers from accuracy issues and a general lack of data. IoT introduces large high quality, real-world datasets into the foundation of educational design. This comes from IoT’s unique ability to collect enormous amounts of varied data anywhere.

Personalized Education

IoT facilitates the customization of education to give every student access to what they need. Each student can control their experience and participate in instructional design, and much of this happens passively. The student simply utilizes the system, and performance data primarily shapes their design. This combined with organizational and educator optimization delivers highly effective education while reducing costs.

 

Government Applications

IoT supports the development of smart nations and smart cities. This includes enhancement of infrastructure previously discussed (e.g., healthcare, energy, transportation, etc.), defense, and also the engineering and maintenance of communities.

City Planning and Management

Governing bodies and engineers can use IoT to analyze the often complex aspects of city planning and management. IoT simplifies examining various factors such as population growth, zoning, mapping, water supply, transportation patterns, food supply, social services, and land use. It gathers detailed data in these areas and produces more valuable and accurate information than current analytics given its ability to actually “live” with people in a city.

 

Smart trashcans in New York tell garbage collectors when they need to be emptied. They optimize trash service by ensuring drivers only make necessary stops, and drivers modify their route to reduce fuel consumption.

In the area of management, IoT supports cities through its implementation in major services and infrastructure such as transportation and healthcare. It also aids in other key areas like water control, waste management, and emergency management. Its real-time and detailed information facilitate more prompt decisions in contrast to the traditional process plagued by information lag, which can be critical in emergency management.

Standard state services are also improved by IoT, which can automate otherwise slow processes and trim unnecessary state expenses; for example, it can automate motor vehicle services for testing, permits, and licensing.

IoT also aids in urban improvement by skipping tests or poor research, and providing functional data for how the city can be optimized. This leads to faster and more meaningful changes.

Creating Jobs

IoT offers thorough economic analysis. It makes previous blind spots visible and supports better economic monitoring and modeling. It analyzes industry and the marketplace to spot opportunities for growth and barriers.

National Defense

National threats prove diverse and complicated. IoT augments armed forces systems and services, and offers the sophistication necessary to manage the landscape of national defense. It supports better protection of borders through inexpensive, high performance devices for rich control and observation.

IoT automates the protection tasks typically spread across several departments and countless individuals. It achieves this while improving accuracy and speed.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 5: Internet of Things Energy- Healthcare-Building Applications

Internet of Things Energy Applications

The optimization qualities of IoT in manufacturing also apply to energy consumption. IoT allows a wide variety of energy control and monitoring functions, with applications in devices, commercial and residential energy use, and the energy source. Optimization results from the detailed analysis previously unavailable to most organizations and individuals.

Residential Energy

The rise of technology has driven energy costs up. Consumers search for ways to reduce or control consumption. IoT offers a sophisticated way to analyze and optimize use not only at device level, but throughout the entire system of the home. This can mean simple switching off or dimming of lights, or changing device settings and modifying multiple home settings to optimize energy use.

IoT can also discover problematic consumption from issues like older appliances, damaged appliances, or faulty system components. Traditionally, finding such problems required the use of often multiple professionals.

Commercial Energy

Energy waste can easily and quietly impact business in a major way, given the tremendous energy needs of even small organizations. Smaller organizations wrestle with balancing costs of business while delivering a product with typically smaller margins, and working with limited funding and technology. Larger organizations must monitor a massive, complex ecosystem of energy use that offers few simple, effective solutions for energy use management.

A smart-meter still requires a reader to visit the site. This automated meter reader makes visits unnecessary, and also allows energy companies to bill based on real-time data instead of estimates over time.

 

IoT simplifies the process of energy monitoring and management while maintaining a low cost and high level of precision. It addresses all points of an organization’s consumption across devices. Its depth of analysis and control provides organizations with a strong means of managing their consumption for cost shaving and output optimization. IoT systems discover energy issues in the same way as functional issues in a complex business network, and provide solutions.

Reliability

The analytics and action delivered by IoT also help to ensure system reliability. Beyond consumption, IoT prevents system overloads or throttling. It also detects threats to system performance and stability, which protects against losses such as downtime, damaged equipment, and injuries.

 

IoT systems applied to healthcare enhance existing technology, and the general practice of medicine. They expand the reach of professionals within a facility and far beyond it. They increase both the accuracy and size of medical data through diverse data collection from large sets of real-world cases. They also improve the precision of medical care delivery through more sophisticated integration of the healthcare system.

Research

Much of current medical research relies on resources lacking critical real-world information. It uses controlled environments, volunteers, and essentially leftovers for medical examination. IoT opens the door to a wealth of valuable information through real-time field data, analysis, and testing.

Healthcare Applications

IoT can deliver relevant data superior to standard analytics through integrated instruments capable of performing viable research. It also integrates into actual practice to provide more key information. This aids in healthcare by providing more reliable and practical data, and better leads; which yields better solutions and discovery of previously unknown issues.

It also allows researchers to avoid risks by gathering data without manufactured scenarios and human testing.

Devices

Current devices are rapidly improving in precision, power, and availability; however, they still offer less of these qualities than an IoT system integrating the right system effectively. IoT unlocks the potential of existing technology, and leads us toward new and better medical device solutions.

IoT closes gaps between equipment and the way we deliver healthcare by creating a logical system rather than a collection of tools. It then reveals patterns and missing elements in healthcare such as obvious necessary improvements or huge flaws.

 

The ClearProbe portable connected ultrasound device can use any computer anywhere as a supporting machine. The device sends all imaging records to the master system.

Care

Perhaps the greatest improvement IoT brings to healthcare is in the actual practice of medicine because it empowers healthcare professionals to better use their training and knowledge to solve problems. They utilize far better data and equipment, which gives them a window into blind spots and supports more swift, precise actions. Their decision-making is no longer limited by the disconnects of current systems, and bad data.

IoT also improves their professional development because they actually exercise their talent rather than spending too much time on administrative or manual tasks. Their organizational decisions also improve because technology provides a better vantage point.

Medical Information Distribution

One of the challenges of medical care is the distribution of accurate and current information to patients. Healthcare also struggles with guidance given the complexity of following guidance. IoT devices not only improve facilities and professional practice, but also health in the daily lives of individuals.

IoT devices give direct, 24/7 access to the patient in a less intrusive way than other options. They take healthcare out of facilities and into the home, office, or social space. They empower individuals in attending to their own health, and allow providers to deliver better and more granular care to patients. This results in fewer accidents from miscommunication, improved patient satisfaction, and better preventive care.

Emergency Care

The advanced automation and analytics of IoT allows more powerful emergency support services, which typically suffer from their limited resources and disconnect with the base facility. It provides a way to analyze an emergency in a more complete way from miles away. It also gives more providers access to the patient prior to their arrival. IoT gives providers critical information for delivering essential care on arrival. It also raises the level of care available to a patient received by emergency professionals. This reduces the associated losses, and improves emergency healthcare.

Building Applications

IoT applied to buildings and various structures allows us to automate routine residential and commercial tasks and needs in a way that dramatically improves living and working environments. This, as seen with manufacturing and energy applications, reduces costs, enhances safety, improves individual productivity, and enhances quality of life.

Environment and Conditioning

One of the greatest challenges in the engineering of buildings remains management of environment and conditions due to many factors at work. These factors include building materials, climate, building use, and more. Managing energy costs receives the most attention, but conditioning also impacts the durability and state of the structure.

IoT aids in improving structure design and managing existing structures through more accurate and complete data on buildings. It provides important engineering information such as how well a material performs as insulation in a particular design and environment.

Health and Safety

Buildings, even when constructed with care, can suffer from certain health and safety issues. These issues include poor performing materials, flaws that leave the building vulnerable to extreme weather, poor foundations, and more.

The Boss 220 smart plug allows the user to monitor, control, optimize, and automate all plug-in devices. Users employ their mobile device or desktop to view performance information and control devices from anywhere.

Current solutions lack the sophistication needed to detect minor issues before they become major issues, or emergencies. IoT offers a more reliable and complete solution by observing issues in a fine-grained way to control dangers and aid in preventing them; for example, it can measure changes in a system’s state impacting fire safety rather than simply detecting smoke.

Productivity and Quality of Life

Beyond safety or energy concerns, most people desire certain comforts from housing or commercial spaces like specific lighting and temperature. IoT enhances these comforts by allowing faster and easier customizing.

Adjustments also apply to the area of productivity. They personalize spaces to create an optimized environment such as a smart office or kitchen prepared for a specific individual.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 4: Internet of Things Environmental Monitoring and Manufacturing technology

Environmental Monitoring

The applications of IoT in environmental monitoring are broad − environmental protection, extreme weather monitoring, water safety, endangered species protection, commercial farming, and more. In these applications, sensors detect and measure every type of environmental change.

Air and Water Pollution

Current monitoring technology for air and water safety primarily uses manual labor along with advanced instruments, and lab processing. IoT improves on this technology by reducing the need for human labor, allowing frequent sampling, increasing the range of sampling and monitoring, allowing sophisticated testing on-site, and binding response efforts to detection systems. This allows us to prevent substantial contamination and related disasters.

Extreme Weather

Though powerful, advanced systems currently in use allow deep monitoring, they suffer from using broad instruments, such as radar and satellites, rather than more granular solutions. Their instruments for smaller details lack the same accurate targeting of stronger technology.

New IoT advances promise more fine-grained data, better accuracy, and flexibility. Effective forecasting requires high detail and flexibility in range, instrument type, and deployment. This allows early detection and early responses to prevent loss of life and property.

Commercial Farming

Today’s sophisticated commercial farms have exploited advanced technology and biotechnology for quite some time, however, IoT introduces more access to deeper automation and analysis.

Much of commercial farming, like weather monitoring, suffers from a lack of precision and requires human labor in the area of monitoring. Its automation also remains limited.

IoT allows operations to remove much of the human intervention in system function, farming analysis, and monitoring. Systems detect changes to crops, soil, environment, and more. They optimize standard processes through analysis of large, rich data collections. They also prevent health hazards (e.g., e. coli) from happening and allow better control.

IOT Manufacturing technology

Manufacturing technology currently in use exploits standard technology along with modern distribution and analytics. IoT introduces deeper integration and more powerful analytics. This opens the world of manufacturing in a way never seen before, as organizations become fullydeveloped for product delivery rather than a global network of suppliers, makers, and distributors loosely tied together.

Intelligent Product Enhancements

Much like IoT in content delivery, IoT in manufacturing allows richer insight in real-time. This dramatically reduces the time and resources devoted to this one area, which traditionally requires heavy market research before, during, and well after the products hit the market.

IoT also reduces the risks associated with launching new or modified products because it provides more reliable and detailed information. The information comes directly from market use and buyers rather than assorted sources of varied credibility.

Dynamic Response to Market Demands

Supplying the market requires maintaining a certain balance impacted by a number of factors such as economy state, sales performance, season, supplier status, manufacturing facility status, distribution status, and more. The expenses associated with supply present unique challenges given today’s global partners. The associated potential or real losses can dramatically impact business and future decisions.

IoT manages these areas through ensuring fine details are managed more at the system level rather than through human evaluations and decisions. An IoT system can better assess and control the supply chain (with most products), whether demands are high or low.

Lower Costs, Optimized Resource Use, and Waste Reduction

IoT offers a replacement for traditional labor and tools in a production facility and in the overall chain which cuts many previously unavoidable costs; for example, maintenance checks or tests traditionally requiring human labor can be performed remotely with instruments and sensors of an IoT system.

IoT also enhances operation analytics to optimize resource use and labor, and eliminate various types of waste, e.g., energy and materials. It analyzes the entire process from the source point to its end, not just the process at one point in a particular facility, which allows improvement to have a more substantial impact. It essentially reduces waste throughout the network, and returns those savings throughout.

 

This XRS relay box connects all truck devices (e.g., diagnostics and driver cell) to the XRS fleet management supporting software, which allows data collection.

Improved Facility Safety

A typical facility suffers from a number of health and safety hazards due to risks posed by processes, equipment, and product handling. IoT aids in better control and visibility. Its monitoring extends throughout the network of devices for not only performance, but for dangerous malfunctions and usage. It aids (or performs) analysis and repair, or correction, of critical flaws.

Product Safety

Even the most sophisticated system cannot avoid malfunctions, nonconforming product, and other hazards finding their way to market. Sometimes these incidents have nothing to do with the manufacturing process, and result from unknown conflicts.

In manufacturing, IoT helps in avoiding recalls and controlling nonconforming or dangerous product distribution. Its high level of visibility, control, and integration can better contain any issues that appear.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 3: Internet of Things Technology and Protocols with Common Uses

IoT Technology and Protocols

IoT primarily exploits standard protocols and networking technologies. However, the major enabling technologies and protocols of IoT are RFID, NFC, low-energy Bluetooth, low-energy wireless, low-energy radio protocols, LTE-A, and WiFi-Direct. These technologies support the specific networking functionality needed in an IoT system in contrast to a standard uniform network of common systems.

NFC and RFID

RFID (radio-frequency identification) and NFC (near-field communication) provide simple, lowenergy, and versatile options for identity and access tokens, connection bootstrapping, and payments.

  • RFID technology employs 2-way radio transmitter-receivers to identify and track tags associated with objects.
  • NFC consists of communication protocols for electronic devices, typically a mobile device and a standard device.

Low-Energy Bluetooth

This technology supports the low-power, long-use need of IoT function while exploiting a standard technology with native support across systems.

Low-Energy Wireless

This technology replaces the most power hungry aspect of an IoT system. Though sensors and other elements can power down over long periods, communication links (i.e., wireless) must remain in listening mode. Low-energy wireless not only reduces consumption, but also extends the life of the device through less use.

Radio Protocols

ZigBee, Z-Wave, and Thread are radio protocols for creating low-rate private area networks. These technologies are low-power, but offer high throughput unlike many similar options. This increases the power of small local device networks without the typical costs.

LTE-A

LTE-A, or LTE Advanced, delivers an important upgrade to LTE technology by increasing not only its coverage, but also reducing its latency and raising its throughput. It gives IoT a tremendous power through expanding its range, with its most significant applications being vehicle, UAV, and similar communication.

WiFi-Direct

WiFi-Direct eliminates the need for an access point. It allows P2P (peer-to-peer) connections with the speed of WiFi, but with lower latency. WiFi-Direct eliminates an element of a network that often bogs it down, and it does not compromise on speed or throughput.

IOT  Common Uses

IoT has applications across all industries and markets. It spans user groups from those who want to reduce energy use in their home to large organizations who want to streamline their operations. It proves not just useful, but nearly critical in many industries as technology advances and we move towards the advanced automation imagined in the distant future.

Engineering, Industry, and Infrastructure

Applications of IoT in these areas include improving production, marketing, service delivery, and safety. IoT provides a strong means of monitoring various processes; and real transparency creates greater visibility for improvement opportunities.

The deep level of control afforded by IoT allows rapid and more action on those opportunities, which include events like obvious customer needs, nonconforming product, malfunctions in equipment, problems in the distribution network, and more.

Example

Joan runs a manufacturing facility that makes shields for manufacturing equipment. When regulations change for the composition and function of the shields, the new appropriate requirements are automatically programmed in production robotics, and engineers are alerted about their approval of the changes.

Government and Safety

IoT applied to government and safety allows improved law enforcement, defense, city planning, and economic management. The technology fills in the current gaps, corrects many current flaws, and expands the reach of these efforts. For example, IoT can help city planners have a clearer view of the impact of their design, and governments have a better idea of the local economy.

Example

Joan lives in a small city. She’s heard about a recent spike in crime in her area, and worries about coming home late at night.

Local law enforcement has been alerted about the new “hot” zone through system flags, and they’ve increases their presence. Area monitoring devices have detected suspicious behavior, and law enforcement has investigated these leads to prevent crimes.

Home and Office

In our daily lives, IoT provides a personalized experience from the home to the office to the organizations we frequently do business with. This improves our overall satisfaction, enhances productivity, and improves our health and safety. For example, IoT can help us customize our office space to optimize our work.

Example

Joan works in advertising. She enters her office, and it recognizes her face. It adjusts the lighting and temperature to her preference. It turns on her devices and opens applications to her last working points.

Her office door detected and recognized a colleague visiting her office multiple times before she arrived. Joan’s system opens this visitor’s messages automatically.

Health and Medicine

IoT pushes us towards our imagined future of medicine which exploits a highly integrated network of sophisticated medical devices. Today, IoT can dramatically enhance medical research, devices, care, and emergency care. The integration of all elements provides more accuracy, more attention to detail, faster reactions to events, and constant improvement while reducing the typical overhead of medical research and organizations.

Example

Joan is a nurse in an emergency room. A call has come in for a man wounded in an altercation. The system recognized the patient and pulls his records. On the scene, paramedic equipment captures critical information automatically sent to the receiving parties at the hospital. The system analyzes the new data and current records to deliver a guiding solution. The status of the patient is updated every second in the system during his transport. The system prompts Joan to approve system actions for medicine distribution and medical equipment preparation.

 

The applications of IoT in media and advertising involve a customized experience in which the system analyzes and responds to the needs and interests of each customer. This includes their general behavior patterns, buying habits, preferences, culture, and other characteristics.

Marketing and Content Delivery

IoT functions in a similar and deeper way to current technology, analytics, and big data. Existing technology collects specific data to produce related metrics and patterns over time, however, that data often lacks depth and accuracy. IoT improves this by observing more behaviors and analyzing them differently.

  • This leads to more information and detail, which delivers more reliable metrics and patterns.
  • It allows organizations to better analyze and respond to customer needs or preferences.
  • It improves business productivity and strategy, and improves the consumer experience by only delivering relevant content and solutions.

Improved Advertising

Current advertising suffers from excess and poor targeting. Even with today’s analytics, modern advertising fails. IoT promises different and personalized advertising rather than one-size-fitsall strategies. It transforms advertising from noise to a practical part of life because consumers interact with advertising through IoT rather than simply receiving it. This makes advertising more functional and useful to people searching the marketplace for solutions or wondering if those solutions exist.

Part 8: IOT CISCO Virtualized Packet Zone and Salesforce and GE Predix

Part 2: Internet of Things Hardware and Software

Internet of Things Hardware

The hardware utilized in IoT systems includes devices for a remote dashboard, devices for control, servers, a routing or bridge device, and sensors. These devices manage key tasks and functions such as system activation, action specifications, security, communication, and detection to support-specific goals and actions.

IoT − Sensors

The most important hardware in IoT might be its sensors. These devices consist of energy modules, power management modules, RF modules, and sensing modules. RF modules manage communications through their signal processing, WiFi, ZigBee, Bluetooth, radio transceiver, duplexer, and BAW.

The sensing module manages sensing through assorted active and passive measurement devices. Here is a list of some of the measurement devices used in IoT −

S.No Devices
1. accelerometers temperature sensors
2. magnetometers proximity sensors
3. gyroscopes image sensors
4. acoustic sensors light sensors
5. pressure sensors gas RFID sensors
6. humidity sensors micro flow sensors

Wearable Electronics

Wearable electronic devices are small devices worn on the head, neck, arms, torso, and feet.

Smartwatches not only help us stay connected, but as a part of an IoT system, they allow access needed for improved productivity.

Current smart wearable devices include −

  • Head − Helmets, glasses
  • Neck − Jewelry, collars
  • Arm − Watches, wristbands, rings
  • Torso − Clothing, backpacks
  • Feet − Socks, shoes

Smart glasses help us enjoy more of the media and services we value, and when part of an IoT system, they allow a new approach to productivity.

Standard Devices

The desktop, tablet, and cellphone remain integral parts of IoT as the command center and remotes.

  • The desktopprovides the user with the highest level of control over the system and its settings.
  • The tabletprovides access to the key features of the system in a way resembling the desktop, and also acts as a remote.
  • The cellphoneallows some essential settings modification and also provides remote functionality.

Other key connected devices include standard network devices like routers and switches.

Health- and fitness-oriented wearable devices that offer biometric measurements such as heart rate, perspiration levels, and even complex measurements like oxygen levels in the bloodstream are also becoming available. Technology advancements may even allow alcohol levels or other similar measurements to be made via a wearable device. The ability to sense, store, and track biometric measurements over time and then analyze the results, is just one interesting possibility. Tracking body temperature, for example, might provide an early indication of whether a cold or the flu is on the way.

Wearable devices could be allowed to automatically connect to devices around the home too. Perhaps you have a preferred lighting level when watching TV from a particular chair. You could turn on the TV and your wearable device could help adjust the lighting level from the connected LED lights within the room. An intelligent house might even support automatically blocking light from windows that created glare on the TV. Even the backlighting on the LCD TV screen could be adjusted and all settings optimized for saving energy, as well as creating the most favorable viewing experience. All these interactions could be done automatically, directly between devices, once the overall strategy has been set via a smart phone interface. The promise of the IoT is based on pervasive connectivity and when associated with large collections of connected devices, significant benefits can accrue.

Internet of Things  Software

IoT software addresses its key areas of networking and action through platforms, embedded systems, partner systems, and middleware. These individual and master applications are responsible for data collection, device integration, real-time analytics, and application and process extension within the IoT network. They exploit integration with critical business systems (e.g., ordering systems, robotics, scheduling, and more) in the execution of related tasks.

Data Collection

This software manages sensing, measurements, light data filtering, light data security, and aggregation of data. It uses certain protocols to aid sensors in connecting with real-time, machine-to-machine networks. Then it collects data from multiple devices and distributes it in accordance with settings. It also works in reverse by distributing data over devices. The system eventually transmits all collected data to a central server.

Device Integration

Software supporting integration binds (dependent relationships) all system devices to create the body of the IoT system. It ensures the necessary cooperation and stable networking between devices. These applications are the defining software technology of the IoT network because without them, it is not an IoT system. They manage the various applications, protocols, and limitations of each device to allow communication.

Real-Time Analytics

These applications take data or input from various devices and convert it into viable actions or clear patterns for human analysis. They analyze information based on various settings and designs in order to perform automation-related tasks or provide the data required by industry.

Application and Process Extension

These applications extend the reach of existing systems and software to allow a wider, more effective system. They integrate predefined devices for specific purposes such as allowing certain mobile devices or engineering instruments access. It supports improved productivity and more accurate data collection.

Part 10: Program Maintenance of Computer Programming Techniques

Part 10: Program Maintenance of Computer Programming Techniques

Program Maintenance

Program maintenance is the process of modifying a software or program after delivery to achieve any of these outcomes:

  • Correct errors
  • Improve performance
  • Add functionalities
  • Remove obsolete portions

Despite the common perception that maintenance is required to fix errors that come up after the software goes live, in reality most of the maintenance work involves adding minor or major capabilities to existing modules. For example, some new data is added to a report, a new field added to entry forms, code to be modified to incorporate changed government laws, etc.

Types of Maintenance

Maintenance activities can be categorized under four headings −

  • Corrective maintenance − Here errors that come up after on-site implementation are fixed. The errors may be pointed out by the users themselves.
  • Preventive maintenance − Modifications done to avoid errors in future are called preventive maintenance.
  • Adaptive maintenance − Changes in the working environment sometimes require modifications in the software. This is called adaptive maintenance. For example, if government education policy changes, corresponding changes have to be made in student result processing module of school management software.
  • Perfective maintenance − Changes done in the existing software to incorporate new requirements from the client is called perfective maintenance. Aim here is to be always be up-to-date with the latest technology.

Maintenance Tools

Software developers and programmers use many tools to assist them in software maintenance. Here are some of the most widely used −

    • Program slicer − selects a part of the program that would be affected by the change
    • Data flow analyzer − tracks all possible flows of data in the software
    • Dynamic analyzer − traces program execution path
    • Static analyzer − allows general viewing and summarizing of the program
    • Dependency analyzer − assists in understanding and analyzing interdependence of different parts of the program

Software maintenance

Definition: Software maintenance is a part of Software Development Life Cycle. Its main purpose is to modify and update software application after delivery to correct faults and to improve performance. Software is a model of the real world. When the real world changes, the software requires alteration wherever possible.

Software Maintenance Description: 

Software maintenance is a vast activity which includes optimization, error correction, deletion of discarded features and enhancement of existing features. Since these changes are necessary, a mechanism must be created for estimation, controlling and making modifications. The essential part of software maintenance requires preparation of an accurate plan during the development cycle. Typically, maintenance takes up about 40-80% of the project cost, usually closer to the higher pole. Hence, a focus on maintenance definitely helps keep costs down.

Software Maintenance Processes are:

• The SM process includes a maintenance plan which contains software preparation, problem identification and find out about product configuration management.

• The problem analysis process includes checking validity, examining it and coming up with a solution and finally getting all the required support to apply for modification.

• The process acceptance by confirming the changes with the individual who raised the request.

• The platform migration process, which is used if software is needed to be ported to another platform without any change in functionality.

Some software points that affect maintenance cost include:

• Structure of Software Program

• Programming Language

• Dependence on external environment

• Staff reliability and availability

Part 10: Program Maintenance of Computer Programming Techniques

Part 9: Program Documentation of Computer Programming Techniques

Program Documentation

Any written text, illustrations or video that describe a software or program to its users is called program or software document. User can be anyone from a programmer, system analyst and administrator to end user. At various stages of development multiple documents may be created for different users. In fact, software documentation is a critical process in the overall software development process.

In modular programming documentation becomes even more important because different modules of the software are developed by different teams. If anyone other than the development team wants to or needs to understand a module, good and detailed documentation will make the task easier.

These are some guidelines for creating the documents −

  • Documentation should be from the point of view of the reader
  • Document should be unambiguous
  • There should be no repetition
  • Industry standards should be used
  • Documents should always be updated
  • Any outdated document should be phased out after due recording of the phase out

Advantages of Documentation

These are some of the advantages of providing program documentation −

  • Keeps track of all parts of a software or program
  • Maintenance is easier
  • Programmers other than the developer can understand all aspects of software
  • Improves overall quality of the software
  • Assists in user training
  • Ensures knowledge de-centralization, cutting costs and effort if people leave the system abruptly

Example Documents

A software can have many types of documents associated with it. Some of the important ones include −

  • User manual − It describes instructions and procedures for end users to use the different features of the software.
  • Operational manual − It lists and describes all the operations being carried out and their inter-dependencies.
  • Design Document − It gives an overview of the software and describes design elements in detail. It documents details like data flow diagrams, entity relationship diagrams, etc.
  • Requirements Document − It has a list of all the requirements of the system as well as an analysis of viability of the requirements. It can have user cases, reallife scenarios, etc.
  • Technical Documentation − It is a documentation of actual programming components like algorithms, flowcharts, program codes, functional modules, etc.
  • Testing Document − It records test plan, test cases, validation plan, verification plan, test results, etc. Testing is one phase of software development that needs intensive documentation.
  • List of Known Bugs − Every software has bugs or errors that cannot be removed because either they were discovered very late or are harmless or will take more effort and time than necessary to rectify. These bugs are listed with program documentation so that they may be removed at a later date. Also they help the users, implementers and maintenance people if the bug is activated.

Programming and Documentation Style Requirements

Here is a list of four categories of documentation to be considered:

  1. “External” Documentation: In programming classes, the comprehensive set of documents that detail the design, development, and structure of a program are usually condensed into a comparatively brief ‘block comment’ at the top of the source code. This “external” documentation will minimally include:
    1. Your name, the course name/number, assignment name/number, instructor’s name, and due date.
    2. Detailed description of the problem the program was written to solve, including the techniques (e.g., algorithms) used to solve the problem.
    3. The program’s operational requirements: Which language system you used, special compilation information, where the input can be located on disk, etc.
    4. Required features of the assignment that you were not able to include, and/or information about bugs that are still known to exist.
  1. Class Documentation: When writing a class in an object–oriented programming language, it should be preceded by a block comment minimally containing the following:
    1. The name of the class, your name, the names of any external packages upon which your class depends, the name of the package of classes containing this class (if any), and inheritance information.
    2. An explanation of purpose of the class.
    3. Names and very brief descriptions of the class and instance constants and variables.
    4. Names and very brief descriptions of constructors as well as the implemented class and instance methods.
  • Internal Documentation: The details of the program are explained by comments placed within the code. The internal documentation should minimally include the following:
    1. A ‘block comment’ should be placed at the head of every method (a.k.a., function or subprogram). This will include the method name; the purpose of the method; the method’s pre– and post–conditions; the method’s return value (if any); and a list of all parameters, including direction of information transfer (into this method, out from the method back to the calling method, or both), and their purposes.
    2. Meaningful identifier names. In a nod to tradition, simple loop variables may have single letter variable names, but all others should be meaningful. Never use nonstandard abbreviations. If your language has accepted naming conventions, learn and follow them.
    3. Each variable and constant must have a brief comment next to its declaration that explains its purpose. This applies to all variables, as well as to fields of structure declarations.
    4. Complex sections of code and any other parts of the program that need some explanation should have comments just ahead of them or embedded in them.
  1. Miscellaneous Requirements:
    1. Write programs with appropriate modularity; that is, create classes when appropriate, write methods that accomplish limited, well-defined tasks, etc.
    2. Global/public variables should never be used in your programs for my classes unless I have approved their use for your particular situation.
    3. Be generous with your use of “white space” (blank lines) to set off logically related sections of code.
    4. Indent bodies of methods, loops and IF statements, and do so with a single, consistent style.
    5. Like global variables, unconditional branching (e.g., goto) may not be used in your programs unless I have approved its use for your particular situation.
Part 10: Program Maintenance of Computer Programming Techniques

Part 8: Computer Programming Techniques and Methods

Programming Techniques

In this chapter, we will cover how to write a good program. But before we do that, let us see what the characteristics of a good program are:

  • Portable− The program or software should run on all computers of same type. By same type we mean a software developed for personal computers should run on all PCs. Or a software for written for tablets should run on all tablets having the right specifications.
  • Efficient− A software that does the assigned tasks quickly is said to be efficient. Code optimization and memory optimization are some of the ways of raising program efficiency.
  • Effective− The software should assist in solving the problem at hand. A software that does that is said to be effective.
  • Reliable− The program should give the same output every time the same set of inputs is given.
  • User friendly− Program interface, clickable links and icons, etc. should be user friendly.
  • Self-documenting− Any program or software whose identifier names, module names, etc. can describe itself due to use of explicit names.

Here are some ways in which good programs can be written.

Proper Identifier Names

A name that identifies any variable, object, function, class or method is called an identifier. Giving proper identifier names makes a program self-documenting. This means that name of the object will tell what it does or what information it stores. Let’s take an example of this SQL instruction:

Look at line 10. It tells anyone reading the program that a student’s ID, name and roll number are to be selected. The names of the variables make this self-explanatory. These are some tips to create proper identifier names −

  • Use language guidelines
  • Don’t shy from giving long names to maintain clarity
  • Use uppercase and lowercase letters
  • Don’t give same name to two identifiers even if the language allows it
  • Don’t give same names to more than one identifier even if they have mutually exclusive scope

Comments

In the image above, look at line 8. It tells the reader that the next few lines of code will retrieve list of students whose report card is to be generated. This line is not part of the code but given only to make the program more user friendly.

Such an expression that is not compiled but written as a note or explanation for the programmer is called a comment. Look at the comments in the following program segment. Comments start with // and /* */.

Comments can be inserted as −

  • Prologue to the program to explain its objective
  • At the beginning and/or end of logical or functional blocks
  • Make note about special scenarios or exceptions

You should avoid adding superfluous comments as that may prove counterproductive by breaking the flow of code while reading. Compiler may ignore comments and indentations but the reader tends to read each one of them.

Indentation

Distance of text from left or right margin is called indent. In programs, indentation is used to separate logically separated blocks of code. Here’s an example of indented program segment:

As you can see, indented program is more understandable. Flow of control from for loop to if and back to for is very clear. Indentation is especially useful in case of control structures.

With Indentation

Without Indentation

Inserting blank spaces or lines is also part of indentation. Here are some situations where you can and should use indentation −

  • Blank lines between logical or functional blocks of code within the program
  • Blank spaces around operators
  • Tabs at the beginning of new control structures

Programming Methodologies

Identifying and removing errors from a program or software is called debugging. Debugging is ideally part of testing process but in reality it is done at every step of programming. Coders should debug the smallest of their modules before moving on. This decreases the number of errors thrown up during the testing phase and reduces testing time and effort significantly. Let us look at the types of errors that can crop up in a program.

Syntax Errors

Syntax errors are the grammatical errors in a program. Every language has its own set of rules, like creating identifiers, writing expressions, etc. for writing programs. When these rules are violated, the errors are called syntax errors. Many modern integrated development environments can identify the syntax errors as you type your program. Else, it will be shown when you compile the program. Let us take an example −

In this program, the variable a has not been declared, which is thrown up by the compiler.

Semantic Errors

Semantic errors are also called logical errors. The statement has no syntax errors, so it will compile and run correctly. However, it will not give the desired output as the logic is not correct. Let us take an example.

Look at line 8. Here programmer wants to check if the divisor is 0, to avoid division by 0. However, instead of using the comparing operator ==, assignment operator = has been used. Now every time the “if expression” will evaluate to true and program will give output as “You cannot divide by 0”. Definitely not what was intended!!

Logical errors cannot be detected by any program; they have to be identified by the programmer herself when the desired output is not achieved.

Runtime Errors

Runtime errors are errors that occur while executing the program. This implies that the program has no syntax errors. Some of the most common run time errors your program may encounter are −

  • Infinite loop
  • Division by ‘0’
  • Wrong value entered by user (say, string instead of integer)

Code Optimization

Any method by which code is modified to improve its quality and efficiency is called code optimization. Code quality determines life span of code. If the code can be used and maintained for a long period of time, carried over from product to product, its quality is deemed to be high and it has a longer life. On the contrary, if a piece of code can be used and maintained only for short durations, say till a version is valid, it is deemed to be of low quality and has a short life.

Reliability and speed of a code determines code efficiency. Code efficiency is an important factor in ensuring high performance of a software.

There are two approaches to code optimization −

  • Intuition based optimization (IBO)− Here the programmer tries to optimize the program based on her own skill and experience. This might work for small programs but fails miserably as complexity of the program grows.
  • Evidence based optimization (EBO)− Here automated tools are used to find out performance bottlenecks and then relevant portions optimize accordingly. Every programming language has its own set of code optimization tools. For example, PMD, FindBug and Clover are used to optimize Java code.

Code is optimized for execution time and memory consumption because time is scarce and memory expensive. There has to be a balance between the two. If time optimization increases load on memory or memory optimization makes the code slower, purpose of optimization will be lost.

Execution Time Optimization

Optimizing code for execution time is necessary to provide fast service to the users. Here are some tips for execution time optimization −

  • Use commands that have built-in execution time optimization
  • Use switch instead of if condition
  • Minimize function calls within loop structures
  • Optimize the data structures used in the program

Memory Optimization

As you know, data and instructions consume memory. When we say data, it also refers to interim data that is the result of expressions. We also need to keep a track of how many instructions are making up the program or the module we are trying to optimize. Here are some tips for memory optimization −

  • Use commands that have built-in memory optimization
  • Keep the use of variables that need to be stored in registers minimum
  • Avoid declaring global variables inside loops that are executed many times
  • Avoid using CPU intensive functions like sqrt()

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 7: Using Clear Instructions of Computer Programming Techniques

Using Clear Instructions

As you know, computer does not have intelligence of its own; it simply follows the instructions given by the user. Instructions are the building blocks of a computer program, and hence a software. Giving clear instructions is crucial to building a successful program. As a programmer or software developer, you should get into the habit of writing clear instructions. Here are two ways to do that.

Clarity of Expressions

Expression in a program is a sequence of operators and operands to do an arithmetic or logical computation. Here are some examples of valid expressions −

  • Comparing two values
  • Defining a variable, object or class
  • Arithmetic calculations using one or more variables
  • Retrieving data from database
  • Updating values in database

Writing unambiguous expressions is a skill that must be developed by every programmer. Here are some points to be kept in mind while writing such expressions −

Unambiguous Result

Evaluation of the expression must give one clear cut result. For example, unary operators should be used with caution.

Avoid Complex Expressions

Do not try to achieve many things in a single expression. Break into two or more expressions the moment things start getting complicated.

Simplicity of Instructions

It’s not just for computers that you need to write clear instructions. Any one reading the program later (even you yourself!!) should be able to understand what the instruction is trying to achieve. It is very common for programmers not to get a hang of their own programs when they revisit it after some time has passed. This indicates that maintenance and modification of such programs would be quite difficult.

Writing simple instructions helps in avoiding this problem. Here are some tips to write simple instructions −

  • Avoid clever instructions− Clever instructions might not look that clever later if no one is able to understand it properly.
  • One instruction per task− Trying to do more than one thing at a time complicates instructions.
  • Use standards− Every language has its standards, follow them. Remember you are not working alone on the project; follow project standards and guidelines for coding.

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 6: Flowchart Elements of Computer Programming Techniques

Flowchart

Flowchart is a diagrammatic representation of sequence of logical steps of a program. Flowcharts use simple geometric shapes to depict processes and arrows to show relationships and process/data flow.

Flowchart Symbols

Here is a chart for some of the common symbols used in drawing flowcharts.

Symbol Symbol Name Purpose
Start/Stop
  • Used at the beginning and end of the algorithm to show start and end of the program.
  • The oval, or terminator, is used to represent the start and end of a process. Use the Gliffy flowchart tool to drag and drop one of these bad boys and you’ve got yourself the beginning of a flowchart. Remember to use the same symbol again to show that your flowchart is complete.
Process
  • Indicates processes like mathematical operations.
  • The rectangle is your go-to symbol once you’ve started flowcharting. It represents any step in the process you’re diagramming and is the workhorse of the flowchart diagram. Use rectangles to capture process steps like basic tasks or actions in your process.
Input/ Output Used for denoting program inputs and outputs.
Decision
  • Stands for decision statements in a program, where answer is usually Yes or No.
  • The diamond symbolizes that a decision is required to move forward. This could be a binary, this-or-that choice or a more complex decision with multiple choices. Make sure that you capture each possible choice within your diagram.
Arrow
  • Shows relationships between different shapes.
  • Indicate Directional Flow
  • The arrow is used to guide the viewer along their flowcharting path. And while there are many different types of arrow tips to choose from, we recommend sticking with one or two for your entire flowchart. This keeps your diagram looking clean, but also allows you to emphasize certain steps in your process.
On-page Connector Connects two or more parts of a flowchart, which are on the same page.
Off-page Connector Connects two parts of a flowchart which are spread over different pages.

Guidelines for Developing Flowcharts

These are some points to keep in mind while developing a flowchart −

  • Flowchart can have only one start and one stop symbol
  • On-page connectors are referenced using numbers
  • Off-page connectors are referenced using alphabets
  • General flow of processes is top to bottom or left to right
  • Arrows should not cross each other

Example Flowcharts

Here is the flowchart for going to the market to purchase a pen.

Here is a flowchart to calculate the average of two numbers.

 

Intermediate & Advanced Flowchart Symbols

As you know, flowcharts are made up of a sequence of actions, data, services, and/or materials. They illustrate where data is being input and output, where information is being stored, what decisions need to be made, and which people need to be involved. In addition the basic flowchart conventions, rules, and symbols, these intermediate flowchart symbols will help you describe your process with even more detail.

Document Symbols

Single and multiple document icons show that there are additional points of reference involved in your flowchart. You might use these to indicate items like “create an invoice” or “review testing paperwork.”

Data Symbols

Data symbols clarify where the data your flowchart references is being stored. (You probably won’t use the paper tape symbol, but it definitely came in handy back in the day.)

Input & Output Symbols

Input and output symbols show where and how data is coming in and out throughout your process.

Merging & Connecting Symbols

Agreed-upon merging and connector symbols make it easier to connect flowcharts that span multiple pages.

Additional Useful Flowchart Symbols

The above are a few additional symbols that prove your flowcharting prowess when put to good use.

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 5: Writing the Algorithm of Computer Programming Techniques

Writing an Algorithm

A finite set of steps that must be followed to solve any problem is called an algorithm. Algorithm is generally developed before the actual coding is done. It is written using English like language so that it is easily understandable even by non-programmers.

Sometimes algorithms are written using pseudocodes, i.e. a language similar to the programming language to be used. Writing algorithm for solving a problem offers these advantages −

  • Promotes effective communication between team members
  • Enables analysis of problem at hand
  • Acts as blueprint for coding
  • Assists in debugging
  • Becomes part of software documentation for future reference during maintenance phase

These are the characteristics of a good and correct algorithm −

  • Has a set of inputs
  • Steps are uniquely defined
  • Has finite number of steps
  • Produces desired output

Example Algorithms

Let us first take an example of a real-life situation for creating algorithm. Here is the algorithm for going to the market to purchase a pen.

Step 4 in this algorithm is in itself a complete task and separate algorithm can be written for it. Let us now create an algorithm to check whether a number is positive or negative.

Key Method for creating Algorithm

The educator guides   through expressing procedures as algorithms and then testing, comparing, and debugging algorithmic approaches.

Method Components

Decomposing problems

Before creating an algorithm,   need to first break down the problem or task want to express. Breaking down a problem or task into smaller parts or steps that are easier to understand is also known as decomposition. Think about a daily task or routine that you perform, such as cooking a meal. What smaller steps make up this task?

Decomposition is an important skill that cuts across grade levels and across content areas. For example, when working on a project or paper, it is helpful for   to decompose, or break down, the task down into smaller, more manageable chunks. Think about your classroom. What problems or tasks might behelpful for your   to decompose? At the elementary level, for instance,   could break down a daily routine, like getting ready for school, into smaller tasks or parts. Or in a middle school art class,   may decompose a painting or an image to analyze its component parts.

Expressing procedures as algorithms

We need to give it step-by-step instructions, or an algorithm, that clearly explain exactly how we want it to solve a problem. Think about an algorithm for cooking a meal, instance. What are the steps in this process? In what order do these steps need to be carried out? How might you communicate these steps to another human so that they could perform them? Algorithms can be expressed in a variety of ways including non-computer languages such as prose, flowcharts, pseudocode, or oral language.

There are several educational reasons for thinking about procedures as algorithms. For example, programming a computer to find the average of a list of numbers is an excellent way for   to develop an understanding of how to calculate averages.

Testing, comparing, and debugging algorithms

Once an algorithm has been designed, it is important to test the algorithm. Does the algorithm solve every aspect of the problem? Is it efficient? Is it easily understood by a peer or a computer? Testing and comparing algorithms will allows   to find and fix any errors, also known as debugging.

Suggested implementation

  1. Before teaching the lesson, carefully read the submission instructions and consider what evidence you will need to gather for your submission.
  2. Choose an open-ended problem which is important to your subject area and relevant to your .
  3. Find a computational tool or a non-computational environment in which  can implement various solutions to the problem. For example,   can test their algorithms in a computational environment like Scratch or via an unplugged simulation in the classroom setting.
  4. Plan a lesson in which  test, compare, and debug algorithms to solve the problem. Suggested outline:
    • Facilitate a brief discussion of possible approaches to decomposing the problem.
    • Introduce the tool the  will be using to test their algorithms and model the process they will be using.
    • Allow  to work in small groups to build and test algorithms on their own. As they work on this task, have   express their algorithms in a less formal medium, such as a list of verbal commands or a flowchart.
    • If appropriate, allow  to test and compare the performance of their algorithms against each other. If time allows, ask   to debug and iterate on their algorithms.
    • Ask  to share their algorithms, explain how they work, and evaluate their performance.

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 4: Applying Modular Techniques of Computer Programming Techniques

Applying Modular Techniques

A real-life problem is complex and big. If a monolithic solution is developed it poses these problems −

  • Difficult to write, test and implement one big program
  • Modifications after the final product is delivered is close to impossible
  • Maintenance of program very difficult
  • One error can bring the whole system to a halt

To overcome these problems, the solution should be divided into smaller parts called modules. The technique of breaking down one big solution into smaller modules for ease of development, implementation, modification and maintenance is called modular technique of programming or software development.

Advantages of Modular Programming

Modular programming offers these advantages −

  • Enables faster development as each module can be developed in parallel
  • Modules can be re-used
  • As each module is to be tested independently, testing is faster and more robust
  • Debugging and maintenance of the whole program easier
  • Modules are smaller and have lower level of complexity so they are easy to understand

Identifying the Modules

Identifying modules in a software is a mind boggling task because there cannot be one correct way of doing so. Here are some pointers to identifying modules −

  • If data is the most important element of the system, create modules that handle related data.
  • If service provided by the system is diverse, break down the system into functional modules.
  • If all else fails, break down the system into logical modules as per your understanding of the system during requirement gathering phase.

For coding, each module has to be again broken down into smaller modules for ease of programming. This can again be done using the three tips shared above, combined with specific programming rules. For example, for an object oriented programming language like C++ and Java, each class with its data and methods could form a single module.

Step-by-Step Solution

To implement the modules, process flow of each module must be described in step by step fashion. The step by step solution can be developed using algorithms or pseudocodes. Providing step by step solution offers these advantages −

  • Anyone reading the solution can understand both problem and solution.
  • It is equally understandable by programmers and non-programmers.
  • During coding each statement simply needs to be converted to a program statement.
  • It can be part of documentation and assist in program maintenance.
  • Micro-level details like identifier names, operations required, etc. get worked out automatically

Control Structures

As you can see in the above example, it is not necessary that a program logic runs sequentially. In programming language, control structures take decisions about program flow based on given parameters. They are very important elements of any software and must be identified before any coding begins.

Algorithms and pseudocodes help analysts and programmers in identifying where control structures are required.

Control structures are of these three types −

Decision Control Structures

Decision control structures are used when the next step to be executed depends upon a criteria. This criteria is usually one or more Boolean expressions that must be evaluated. A Boolean expression always evaluates to “true” or “false”. One set of statements is executed if the criteria is “true” and another set executed if the criteria evaluates to “false”. For example, if statement

Selection Control Structures

Selection control structures are used when program sequence depends upon the answer to a specific question. For example, a program has many options for the user. The statement to be executed next will depend on the option chosen. For example, switch statement, case statement.

Repetition / Loop Control Structures

Repetition control structure is used when a set of statements in to be repeated many times. The number of repetitions might be known before it starts or may depend on the value of an expression. For example, for statement, while statement, do while statement, etc.

As you can see in the image above, both selection and decision structures are implemented similarly in a flowchart. Selection control is nothing but a series of decision statements taken sequentially.

Here are some examples from programs to show how these statements work −

if

if statement

An if statement consists of a Boolean expression followed by one or more statements.

Syntax

The syntax of an ‘if’ statement in C programming language is −

if(boolean_expression) {

/* statement(s) will execute if the boolean expression is true */

}

If the Boolean expression evaluates to true, then the block of code inside the ‘if’ statement will be executed. If the Boolean expression evaluates to false, then the first set of code after the end of the ‘if’ statement (after the closing curly brace) will be executed.

An if statement can be followed by an optional else statement, which executes when the Boolean expression is false.

Syntax

The syntax of an if…else statement in C programming language is −

if(boolean_expression) {

/* statement(s) will execute if the boolean expression is true */

} else {

/* statement(s) will execute if the boolean expression is false */

}

If the Boolean expression evaluates to true, then the if block will be executed, otherwise, the else block will be executed.

#include <stdio.h>
int main()
{
int age;
printf("Enter your age:");
scanf("%d",&age);
if(age >=18)
{
printf("You are eligible for voting");
}
else
{
printf("You are not eligible for voting");
}
return 0;
}

Output:

Enter your age:14

You are not eligible for voting

switch statement

A switch statement allows a variable to be tested for equality against a list of values. Each value is called a case, and the variable being switched on is checked for each switch case.

Syntax

The syntax for a switch statement in C programming language is as follows −

switch(expression) {

 

case constant-expression  :

statement(s);

break; /* optional */

 

case constant-expression  :

statement(s);

break; /* optional */

 

/* you can have any number of case statements */

default : /* Optional */

statement(s);

}

The following rules apply to a switch statement −

  • The expressionused in a switch statement must have an integral or enumerated type, or be of a class type in which the class has a single conversion function to an integral or enumerated type.
  • You can have any number of case statements within a switch. Each case is followed by the value to be compared to and a colon.
  • The constant-expressionfor a case must be the same data type as the variable in the switch, and it must be a constant or a literal.
  • When the variable being switched on is equal to a case, the statements following that case will execute until a breakstatement is reached.
  • When a breakstatement is reached, the switch terminates, and the flow of control jumps to the next line following the switch statement.
  • Not every case needs to contain a break. If no breakappears, the flow of control will fall through to subsequent cases until a break is reached.
  • switchstatement can have an optional default case, which must appear at the end of the switch. The default case can be used for performing a task when none of the cases is true. No break is needed in the default case.
#include <stdio.h>

int main() {

int num = 8;

switch (num) {

case 7:

printf("Num variable Value is 7");

break;

case 8:

printf("Num variable Value is 8");

break;

case 9:

printf("Num variable Value is 9");

break;

default:

printf("Out of range");

break;

}

return 0;

}

Output:

Num variable Value is 8

Another switch statement example using char datatype.

#include <stdio.h>

int main()

{

char ch='b';

switch (ch)

{

case 'd':

printf("Case is d ");

break;

case 'b':

printf("Case is b ");

break;

case 'c':

printf("Case is c ");

break;

default:

printf("Default ecase");

}

return 0;

}

Output:

Case is b

When the above code is compiled and executed, it produces the following result −

Well done

Your grade is B

It is possible to have a switch as a part of the statement sequence of an outer switch. Even if the case constants of the inner and outer switch contain common values, no conflicts will arise.

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 3: Identifying the Solution of Computer Programming Techniques

Identifying the Solution

Often, coding is supposed to be the most essential part of any software development process. However, coding is just a part of the process and may actually take the minimum amount of time if the system is designed correctly. Before the system can be designed, a solution must be identified for the problem at hand.

The first thing to be noted about designing a system is that initially the system analyst may come up with more than one solutions. But the final solution or the product can be only one. In-depth analysis of data gathered during the requirement gathering phase can help in coming to a unique solution. Correctly defining the problem is also crucial for getting to the solution.

When faced with the problem of multiple solutions, analysts go for visual aids like flowcharts, data flow diagrams, entity relationship diagrams, etc. to understand each solution in depth.

Flowcharting

Flowcharting is the process of illustrating workflows and data flows in a system through symbols and diagrams. It is an important tool to assist the system analyst in identifying a solution to the problem. It depicts the components of the system visually.

These are the advantages of flowcharting −

  • Visual representation helps in understanding program logic
  • They act as blueprints for actual program coding
  • Flowcharts are important for program documentation
  • Flowcharts are an important aid during program maintenance

These are the disadvantages of flowcharting −

  • Complex logic cannot be depicted using flowcharts
  • In case of any change in logic or data/work flow, flowchart has to be redrawn completely

Data Flow Diagram

Data flow diagram or DFD is a graphical representation of data flow through a system or sub-system. Each process has its own data flow and there are levels of data flow diagrams. Level 0 shows the input and output data for the whole system. Then the system is broken down into modules and level 1 DFD shows data flow for each module separately. Modules may further be broken down into sub-modules if required and level 2 DFD drawn.

 

Physical and logical data flow diagrams

To determine whether a physical or logical DFD best suits your needs. Logical data flow diagrams focus on what happens in a particular information flow: what information is being transmitted, what entities are receiving that info, what general processes occur, etc. The processes described in a logical DFD are business activities a logical DFD doesn’t delve into the technical aspects of a process or system. Non-technical employees should be able to understand these diagrams.

Logical Data Flow Diagram

Physical data flow diagrams focus on how things happen in an information flow. These diagrams specify the software, hardware, files, and people involved in an information flow. A detailed physical data flow diagram can facilitate the development of the code needed to implement a data system.

Physical Data Flow Diagram

 

Both physical and logical data flow diagrams can describe the same information flow. In coordination they provide more detail than either diagram would independently. As you decide which to use, keep in mind that you may need both.

Data flow diagram levels

Data flow diagrams are also categorized by level. Starting with the most basic, level 0, DFDs get increasingly complex as the level increases. As you build your own data flow diagram, you will need to decide which level your diagram will be.

 

Level 0 DFDs, also known as context diagrams, are the most basic data flow diagrams. They provide a broad view that is easily digestible but offers little detail. Level 0 data flow diagrams show a single process node and its connections to external entities.

Data Flow Diagram Level 0 Template

 

Level 1 DFDs are still a general overview, but they go into more detail than a context diagram. In a level 1 data flow diagram, the single process node from the context diagram is broken down into sub-processes. As these processes are added, the diagram will need additional data flows and data stores to link them together.

Template of Data Flow Diagram Level 1

Level 2+ DFDs simply break processes down into more detailed subprocesses. In theory, DFDs could go beyond level 3, but they rarely do. Level 3 data flow diagrams are detailed enough that it doesn’t usually make sense to break them down further.

Data Flow Diagram Level 2 Template

Data flow diagram symbols and notation

Depending on the methodology (Gane and Sarson vs. Yourdon and Coad), DFD symbols vary slightly. However, the basic ideas remain the same. There are four basic elements of a data flow diagram: processes, data stores, external entities, and data flows. The picture below shows the standard shapes for both methodologies.

 

Pseudocode

After the system is designed, it is handed over to the project manager for implementation, i.e. coding. The actual coding of a program is done in a programming language, which can be understood only by programmers who are trained in that language. However, before the actual coding occurs, the basic operating principles, work flows and data flows of the program are written using a notation similar to the programming language to be used. Such a notation is called pseudocode.

code

Here is an example of a pseudocode in C++. The programmer just needs to translate each statement into C++ syntax to get the program code.

Identifying Mathematical Operations

All instructions to the computer are finally implemented as arithmetic and logical operations at machine level. These operations are important because they −

  • Occupy memory space
  • Take time in execution
  • Determine software efficiency
  • Affect overall software performance

System analysts try to identify all major mathematical operations while identifying the unique solution to problem at hand.

 

Part 10: Program Maintenance of Computer Programming Techniques

Part 2: Understanding the Problem of Computer Programming Techniques

Understanding the Problem

It is very obvious that before finding the solution we should understand the problem well. Moreover, if we fail to understand the problem we may end up with a useless solution for it. Hence, a wrong solution will not solve our purpose of problem-solving. Therefore, we need to read the problem carefully and decide the different functions which the solution will contain.

Moreover, we need to understand that what is the required output and how we can generate it. Besides, for proper output, we surely need an input. The input can be single or multiple as per the problem. Hence, it is quite important to maintain the necessary relationship between the input and the output.

Important points in Understanding the Problem

Some of the important points that we should keep in mind while understanding the problem are as follows:

  • Read the problem very carefully.
  • Identify the functions that the solution (algorithm) should have.
  • Identify the required output.
  • Find a way to produce the required output.
  • Draw a proper relationship between the input and output.
  • Take all the necessary number of inputs.
  • Avoid unnecessary inputs.
  • Identify the correct number of the required input.

Further steps in problem-solving

After understanding the problem, the further steps are as follows:

Designing an algorithm

After understanding the relationship between input and output and the functionalities required we have to design an algorithm. Furthermore, the algorithm should contain all the necessary functions to solve the problem. Moreover, it should produce a proper output for every input.

Implementing the algorithm

After designing the algorithm we should implement and design a program to solve the problem. We can develop the program using any programming language.

Evaluation

After developing the program we should run and test if it produces the correct output.

A typical software development process follows these steps −

  • Requirement gathering
  • Problem definition
  • System design
  • Implementation
  • Testing
  • Documentation
  • Training and support
  • Maintenance

The first two steps assist the team in understanding the problem, the most crucial first step towards getting a solution. Person responsible for gathering requirement, defining the problem and designing the system is called system analyst.

Requirement Gathering

Usually, clients or users are not able to clearly define their problems or requirements. They have a vague idea of what they want. So system developers need to gather client requirements to understand the problem that needs to be resolved, or what needs to be delivered. Detailed understanding of the problem is possible only by first understanding the business area for which the solution is being developed. Some key questions that help in understanding a business include −

  • What is being done?
  • How is it being done?
  • What is the frequency of a task?
  • What is the volume of decisions or transactions?
  • What are the problems being encountered?

Some techniques that help in gathering this information are −

  • Interviews
  • Questionnaires
  • Studying existing system documents
  • Analyzing business data

System analysts needs to create clear and concise but thorough requirements document in order to identify SMART – specific, measurable, agreed upon, realistic and time-based – requirements. A failure to do so results in −

  • Incomplete problem definition
  • Incorrect program goals
  • Re-work to deliver required outcome to client
  • Increased costs
  • Delayed delivery

Due to the depth of information required, requirement gathering is also known as detailed investigation.

Problem Definition

After gathering requirements and analyzing them, problem statement must be stated clearly. Problem definition should unambiguously state what problem or problems need to be solved. Having a clear problem statement is necessary to −

  • Define project scope
  • Keep the team focused
  • Keep the project on track
  • Validate that desired outcome was achieved at the end of project

System Design

The design stage is a necessary precursor to the main developer stage. Developers will first outline the details for the overall application, alongside specific aspects, such as its:

  • User interfaces
  • System interfaces
  • Network and network requirements
  • Databases

Implementation

The overall design for the software will come together. Different modules or designs will be integrated into the primary source code through developer efforts, usually by leveraging training environments to detect further errors or defects. The information system will be integrated into its environment and eventually installed. After passing this stage, the software is theoretically ready for market and may be provided to any end-users.

Testing

Building software is not the end. Now it must be tested to make sure that there aren’t any bugs and that the end-user experience will not negatively be affected at any point. During the testing stage, developers will go over their software with a fine-tooth comb, noting any bugs or defects that need to be tracked, fixed, and later retested. It’s important that the software overall ends up meeting the quality standards that were previously defined in the SRS document.

Documentation

Software documentation is written text or an illustration that comes with or is integrated in the source code of a computer program. The documentation explains how the software works or how to use it, and it might mean different things to different people depending on their jobs. Software engineering necessitates the use of documentation. The following are examples of several types of documentation:

Statements that specify a system’s properties, capabilities, characteristics, or qualities are referred to as requirements. This is the foundation for what will be implemented, or what has already been implemented.

Software Architecture/Design: A high-level overview of the software. Includes relationships to the environment as well as design principles for software components.

Technical: Code, algorithms, interfaces, and APIs documentation.

End-user: End-user, system administrator, and support staff manuals.

Marketing: How to sell the product and a review of the competition

Training and support

Every software project’s ultimate goal is to deliver a solution that meets the original specifications. The SDLC (Software Development Life Cycle) is a critical method for achieving that goal. Software development and software engineering training  will equip your team with skills that span the whole Software Development Life Cycle, including requirements documentation, testing, and UX design. Your team may learn to manage and deliver software projects on time and within budget with a comprehensive curriculum of courses for those in design, technical, project management, and architectural roles.

Maintenance

The process of upgrading, modifying, and updating software to stay up with client needs is known as software maintenance. After a product has been released, software maintenance is performed for a variety of purposes, including improving the software overall, addressing faults or bugs, increasing performance, and more.
Software developers don’t have the luxury of releasing a product and then leaving it alone; they must constantly correct and enhance their code in order to be competitive and relevant.
The appropriate software maintenance procedures and tactics are essential for keeping any software running for a long time and keeping customers and users satisfied.

The four types of software maintenance are carried out for a variety of causes and purposes. Throughout its lifetime, a piece of software may require one, two, or all sorts of maintenance.
The four types are as follows:

  1. Corrective Software Maintenance (CSM) is the most common and traditional type of software maintenance.

Due to bug reports sent in by users, software suppliers are frequently able to address issues that require corrective maintenance. If a company can detect and correct flaws before users notice them, this is an added benefit that will make your organization appear more credible and trustworthy.

2. Preventative Software Maintenance: Preventative program maintenance is planning ahead of time to ensure that your software continues to function as intended for as long as possible.

3.  Adaptive Software Maintenance
Adaptive software maintenance has to do with the changing technologies as well as policies and rules regarding your software. These include operating system changes, cloud storage, hardware, etc.

4. Perfective Software Maintenance
This is when perfective software maintenance comes into play. Perfective software maintenance aims to adjust software by adding new features as necessary and removing features that are irrelevant or not effective in the given software.

Part 10: Program Maintenance of Computer Programming Techniques

Part 1: Introduction to Programming Methodologies

Programming Methodologies

When programs are developed to solve real-life problems like inventory management, payroll processing, student admissions, examination result processing, etc. they tend to be huge and complex. The approach to analyzing such complex problems, planning for software development and controlling the development process is called programming methodology.

Types of Programming Methodologies

There are many types of programming methodologies prevalent among software developers −

Procedural Programming

Problem is broken down into procedures, or blocks of code that perform one task each. All procedures taken together form the whole program. It is suitable only for small programs that have low level of complexity.

Procedural programming is widely used in large-scale projects, when the following benefits are important:

  1. re-usability of pieces code designed as procedures
  2.  ease of following the logic of program;
  3.  Maintainability of code.
  4.  Emphasis is on doing things (algorithms).
  5.  Most of the functions share global data.
  6.  Data move openly around the system from function to function.
  7.  Functions transform data from one form to another.Procedural programming is a sub-paradigm of imperative programming, since each step of computation is described explicitly, even if by the means of defining procedures.

Example − For a calculator program that does addition, subtraction, multiplication, division, square root and comparison, each of these operations can be developed as separate procedures. In the main program each procedure would be invoked on the basis of user’s choice.

Object-oriented Programming

Here the solution revolves around entities or objects that are part of problem. The solution deals with how to store data related to the entities, how the entities behave and how they interact with each other to give a cohesive solution.

Some of the features of object oriented programming are:
• Emphasis is on data rather than procedure.
• Programs are divided into what are known as objects.
• Data structures are designed such that they characterize the objects.
• Functions that operate on the data of an object are ties together in the data
structure.
• Data is hidden and cannot be accessed by external function.
• Objects may communicate with each other through function.
• New data and functions can be easily added whenever necessary.
• Follows bottom up approach in program design.

Example − If we have to develop a payroll management system, we will have entities like employees, salary structure, leave rules, etc. around which the solution must be built.

Functional Programming

Here the problem, or the desired solution, is broken down into functional units. Each unit performs its own task and is self-sufficient. These units are then stitched together to form the complete solution.

Example − A payroll processing can have functional units like employee data maintenance, basic salary calculation, gross salary calculation, leave processing, loan repayment processing, etc.

Logical Programming

Here the problem is broken down into logical units rather than functional units. Example: In a school management system, users have very defined roles like class teacher, subject teacher, lab assistant, coordinator, academic in-charge, etc. So the software can be divided into units depending on user roles. Each user can have different interface, permissions, etc.

Algorithm Approaches

Software developers may choose one or a combination of more than one of these methodologies to develop a software. Note that in each of the methodologies discussed, problem has to be broken down into smaller units. To do this, developers use any of the following two approaches −

  • Top-down approach
  • Bottom-up approach

Top-down or Modular Approach

The problem is broken down into smaller units, which may be further broken down into even smaller units. Each unit is called a module. Each module is a self-sufficient unit that has everything necessary to perform its task.

The following illustration shows an example of how you can follow modular approach to create different modules while developing a payroll processing program.

Bottom-up Approach

In bottom-up approach, system design starts with the lowest level of components, which are then interconnected to get higher level components. This process continues till a hierarchy of all system components is generated. However, in real-life scenario it is very difficult to know all lowest level components at the outset. So bottoms up approach is used only for very simple problems.

Let us look at the components of a calculator program.

Programming methodology deals with the analysis, design and implementation of programs.

 Algorithm

Algorithm is a step-by-step finite sequence of instruction, to solve a well-defined computational problem. That is, in practice to solve any complex real life problems;

First, we have to define the problems.

Second, step is to design the algorithm to solve that problem.

Writing and executing programs and then optimizing them may be effective for small programs. Optimization of a program is directly concerned with algorithm design. But for a large program, each part of the program must be well organized before writing the program. There are few steps of refinement involved when a problem is converted to program; this method is called stepwise refinement method. There are two approaches for algorithm design; they are top-down and bottom-up algorithm design.

 Stepwise Refinement Techniques

We can write an informal algorithm, if we have an appropriate mathematical model for a problem. The initial version of the algorithm will contain general statements, i.e., informal instructions. Then we convert this informal algorithm to formal algorithm, that is, more definite instructions by applying any programming language syntax and semantics partially. Finally a program can be developed by converting the formal algorithm by a programming language manual. From the above discussion we have understood that there are several steps to reach a program from a mathematical model. In every step there is a refinement (or conversion). That is to convert an informal algorithm to a program, we must go through several stages of formalization until we arrive at a program — whose meaning is formally defined by a programming language manual — is called stepwise refinement techniques.

There are three steps in refinement process, which is illustrated in following Figure

refine

  1. In the first stage, modeling, we try to represent the problem using an appropriate mathematical model such as a graph, tree etc. At this stage, the solution to the problem is an algorithm expressed very informally.
  2. At the next stage, the algorithm is written in pseudo-language (or formal algorithm) that is, a mixture of any programming language constructs and less formal English statements. The operations to be performed on the various types of data become fixed.
  3. In the final stage we choose an implementation for each abstract data type and write the procedures for the various operations on that type. The remaining informal statements in the pseudo-language algorithm are replaced by (or any programming language) C/C++ code.
Part 10: MIS Security and Ethical Issues

Part 10: MIS Security and Ethical Issues

Security and Ethical Issues

Security of an Information System

Information system security refers to the way the system is defended against unauthorized access, use, disclosure, disruption, modification, perusal, inspection, recording or destruction.

There are two major aspects of information system security:

  • Security of the information technology used – securing the system from malicious cyber-attacks that tend to break into the system and to access critical private information or gain control of the internal systems.
  • Security of data – ensuring the integrity of data when critical issues, arise such as natural disasters, computer/server malfunction, physical theft etc. Generally an offsite backup of data is kept for such problems.

Guaranteeing effective information security has the following key aspects:

  • Preventing the unauthorized individuals or systems from accessing the information.
  • Maintaining and assuring the accuracy and consistency of data over its entire lifecycle.
  • Ensuring that the computing systems, the security controls used to protect it and the communication channels used to access it, functioning correctly all the time, thus making information available in all situations.
  • Ensuring that the data, transactions, communications or documents are genuine.
  • Ensuring the integrity of a transaction by validating that both parties involved are genuine, by incorporating authentication features such as “digital signatures”.
  • Ensuring that once a transaction takes place, none of the parties can deny it, either having received a transaction, or having sent a transaction. This is called ‘nonrepudiation’.
  • Safeguarding data and communications stored and shared in network systems.

Information Systems and Ethics

Information systems bring about immense social changes, threatening the existing distributions of power, money, rights, and obligations. It also raises new kinds of crimes, like cyber-crimes.

Following organizations promote ethical issues:

  • The Association of Information Technology Professionals AITPAITP
  • The Association of Computing Machinery ACMACM
  • The Institute of Electrical and Electronics Engineers IEEEIEEE
  • Computer Professionals for Social Responsibility CPSRCPSR

The ACM Code of Ethics and Professional Conduct

  • Strive to achieve the highest quality, effectiveness, and dignity in both the process and products of professional work.
  • Acquire and maintain professional competence.
  • Know and respect existing laws pertaining to professional work.
  • Accept and provide appropriate professional review.
  • Give comprehensive and thorough evaluations of computer systems and their impacts, including analysis and possible risks.
  • Honor contracts, agreements, and assigned responsibilities.
  • Improve public understanding of computing and its consequences.
  • Access computing and communication resources only when authorized to do so.

The IEEE Code of Ethics and Professional Conduct

IEEE code of ethics demands that every professional vouch to commit themselves to the highest ethical and professional conduct and agree:

  • To accept responsibility in making decisions consistent with the safety, health and welfare of the public, and to disclose promptly factors that might endanger the public or the environment;
  • To avoid real or perceived conflicts of interest whenever possible, and to disclose them to affected parties when they do exist;
  • To be honest and realistic in stating claims or estimates based on available data;  To reject bribery in all its forms;
  • To improve the understanding of technology, its appropriate application, and potential consequences;
  • To maintain and improve our technical competence and to undertake technological tasks for others only if qualified by training or experience, or after full disclosure of pertinent limitations;
  • To seek, accept, and offer honest criticism of technical work, to acknowledge and correct errors, and to credit properly the contributions of others;
  • To treat fairly all persons regardless of such factors as race, religion, gender, disability, age, or national origin;
  • To avoid injuring others, their property, reputation, or employment by false or malicious action;
  • To assist colleagues and co-workers in their professional development and to support them in following this code of ethics.

 

Part 10: MIS Security and Ethical Issues

Part 9: MIS Managerial Decision-Making

Managerial Decision-Making

Concept of Decision-Making

Decision-making is a cognitive process that results in the selection of a course of action among several alternative scenarios.

Decision-making is a daily activity for any human being. There is no exception about that.

When it comes to business organizations, decision-making is a habit and a process as well.

Effective and successful decisions result in profits, while unsuccessful ones cause losses. Therefore, corporate decision-making is the most critical process in any organization.

In a decision-making process, we choose one course of action from a few possible alternatives. In the process of decision-making, we may use many tools, techniques, and perceptions.

In addition, we may make our own private decisions or may prefer a collective decision.

Usually, decision-making is hard. Majority of corporate decisions involve some level of dissatisfaction or conflict with another party.

Let’s have a look at the decision-making process in detail.

Decision-Making Process

Following are the important steps of the decision-making process. Each step may be supported by different tools and techniques.

Step 1: Identification of the Purpose of the Decision

In this step, the problem is thoroughly analyzed. There are a couple of questions one should ask when it comes to identifying the purpose of the decision.

  • What exactly is the problem?
  • Why the problem should be solved?
  • Who are the affected parties of the problem?
  • Does the problem have a deadline or a specific time-line?

Step 2: Information Gathering

A problem of an organization will have many stakeholders. In addition, there can be dozens of factors involved and affected by the problem.

In the process of solving the problem, you will have to gather as much as information related to the factors and stakeholders involved in the problem. For the process of information gathering, tools such as ‘Check Sheets’ can be effectively used.

Step 3: Principles for Judging the Alternatives

In this step, the baseline criteria for judging the alternatives should be set up. When it comes to defining the criteria, organizational goals as well as the corporate culture should be taken into consideration.

As an example, profit is one of the main concerns in every decision making process. Companies usually do not make decisions that reduce profits, unless it is an exceptional case. Likewise, baseline principles should be identified related to the problem in hand.

Step 4: Brainstorm and Analyze the Choices

For this step, brainstorming to list down all the ideas is the best option. Before the idea generation step, it is vital to understand the causes of the problem and prioritization of causes.

For this, you can make use of Cause-and-Effect diagrams and Pareto Chart tool. Causeand-Effect diagram helps you to identify all possible causes of the problem and Pareto chart helps you to prioritize and identify the causes with the highest effect.

Then, you can move on generating all possible solutions alternativesalternatives for the problem in hand.

Step 5: Evaluation of Alternatives

Use your judgment principles and decision-making criteria to evaluate each alternative. In this step, experience and effectiveness of the judgment principles come into play. You need to compare each alternative for their positives and negatives.

Step 6: Select the Best Alternative

Once you go through from Step 1 to Step 5, this step is easy. In addition, the selection of the best alternative is an informed decision since you have already followed a methodology to derive and select the best alternative.

Step 7: Execute the decision:

Convert your decision into a plan or a sequence of activities. Execute your plan by yourself or with the help of subordinates.

Step 8: Evaluate the Results:

Evaluate the outcome of your decision. See whether there is anything you should learn and then correct in future decision making. This is one of the best practices that will improve your decision-making skills.

Process and Modeling in Decision-Making

There are two basic models in decision-making:

  • Rational models
  • Normative model

The rational models are based on cognitive judgments and help in selecting the most logical and sensible alternative. Examples of such models include: decision matrix analysis, Pugh matrix, SWOT analysis, Pareto analysis and decision trees, selection matrix, etc.

A rational decision making model takes the following steps:

  • Identifying the problem,
  • Identifying the important criteria for the process and the result,
  • Considering all possible solutions,
  • Calculating the consequences of all solutions and comparing the probability of satisfying the criteria,
  • Selecting the best option.

The normative model of decision-making considers constraints that may arise in making decisions, such as time, complexity, uncertainty, and inadequacy of resources.

According to this model, decision-making is characterized by:

  • Limited information processing – A person can manage only a limited amount of information.
  • Judgmental heuristics – A person may use shortcuts to simplify the decision making process.
  • Satisficing – A person may choose a solution that is just “good enough”.

Dynamic Decision-Making

Dynamic decision-making DDMDDM is synergetic decision-making involving interdependent systems, in an environment that changes over time either due to the previous actions of the decision-maker or due to events that are outside of the control of the decision-maker.

These decision-makings are more complex and real-time.

Dynamic decision-making involves observing how people used their experience to control the system’s dynamics and noting down the best decisions taken thereon.

Sensitivity Analysis

Sensitivity analysis is a technique used for distributing the uncertainty in the output of a mathematical model or a system to different sources of uncertainty in its inputs.

From business decision perspective, the sensitivity analysis helps an analyst to identify cost drivers as well as other quantities to make an informed decision. If a particular quantity has no bearing on a decision or prediction, then the conditions relating to quantity could be eliminated, thus simplifying the decision making process.

Sensitivity analysis also helps in some other situations, like:

  • Resource optimization
  • Future data collections
  • Identifying critical assumptions
  • To optimize the tolerance of manufactured parts Static and Dynamic Models

Static models:

  • Show the value of various attributes in a balanced system.
  • Work best in static systems.
  • Do not take into consideration the time-based variances.
  • Do not work well in real-time systems however, it may work in a dynamic system being in equilibrium  Involve less data.
  • Are easy to analyze.
  • Produce faster results.

Dynamic models:

  • Consider the change in data values over time.
  • Consider effect of system behavior over time.
  • Re-calculate equations as time changes.
  • Can be applied only in dynamic systems.

Simulation Techniques

Simulation is a technique that imitates the operation of a real-world process or system over time. Simulation techniques can be used to assist management decision making, where analytical methods are either not available or cannot be applied.

Some of the typical business problem areas where simulation techniques are used are:

  • Inventory control
  • Queuing problem
  • Production planning

Operations Research Techniques

Operational Research OROR includes a wide range of problem-solving techniques involving various advanced analytical models and methods applied. It helps in efficient and improved decision-making.

It encompasses techniques such as simulation, mathematical optimization, queuing theory, stochastic-process models, econometric methods, data envelopment analysis, neural networks, expert systems, decision analysis, and the analytic hierarchy process.

OR techniques describe a system by constructing its mathematical models.

Heuristic Programming

Heuristic programming refers to a branch of artificial intelligence. It consists of programs that are self-learning in nature.

However, these programs are not optimal in nature, as they are experience-based techniques for problem solving.

Most basic heuristic programs would be based on pure ‘trial-error’ methods.

Heuristics take a ‘guess’ approach to problem solving, yielding a ‘good enough’ answer, rather than finding a ‘best possible’ solution.

Group Decision-Making

In group decision-making, various individuals in a group take part in collaborative decision-making.

Group Decision Support System GDSSGDSS is a decision support system that provides support in decision making by a group of people. It facilitates the free flow and exchange of ideas and information among the group members. Decisions are made with a higher degree of consensus and agreement resulting in a dramatically higher likelihood of implementation.

Following are the available types of computer based GDSSs:

  • Decision Network: This type helps the participants to communicate with each other through a network or through a central database. Application software may use commonly shared models to provide support.
  • Decision Room: Participants are located at one place, i.e. the decision room. The purpose of this is to enhance participant’s interactions and decision-making within a fixed period of time using a facilitator.
  • Teleconferencing: Groups are composed of members or sub groups that are geographically dispersed; teleconferencing provides interactive connection between two or more decision rooms. This interaction will involve transmission of computerized and audio visual information.
Part 10: MIS Security and Ethical Issues

Part 8: MIS Development Process

MIS Development Process

In MIS, the information is recognized as a major resource like capital and time. If this resource has to be managed well, it calls upon the management to plan for it and control it, so that the information becomes a vital resource for the system.

  • The management information system needs good planning.
  • This system should deal with the management information not with data processing alone.
  • It should provide support for the management planning, decision-making and action.  It should provide support to the changing needs of business management.

Major challenges in MIS implementation are:

  • Quantity, content and context of information – how much information and exactly what should it describe.
  • Nature of analysis and presentation – comprehensibility of information.
  • Availability of information – frequency, contemporariness, on-demand or routine, periodic or occasional, one-time info or repetitive in nature and so on  Accuracy of information.
  • Reliability of information.
  • Security and Authentication of the system.

Planning for MIS

MIS design and development process has to address the following issues successfully:

  • There should be effective communication between the developers and users of the system.
  • There should be synchronization in understanding of management, processes and IT among the users as well as the developers.
  • Understanding of the information needs of managers from different functional areas and combining these needs into a single integrated system.
  • Creating a unified MIS covering the entire organization will lead to a more economical, faster and more integrated system, however it will increase in design complexity manifold.
  • The MIS has to be interacting with the complex environment comprising all other sub-systems in the overall information system of the organization. So, it is extremely necessary to understand and define the requirements of MIS in the context of the organization.
  • It should keep pace with changes in environment, changing demands of the customers and growing competition.
  • It should utilize fast developing in IT capabilities in the best possible ways.
  • Cost and time of installing such advanced IT-based systems is high, so there should not be a need for frequent and major modifications.

It should take care of not only the users i.e., the managers but also other stakeholders like employees, customers and suppliers.

Once the organizational planning stage is over, the designer of the system should take the following strategic decisions for the achievement of MIS goals and objectives:

  • Development Strategy: Example – an online, real-time batch.
  • System Development Strategy: Designer selects an approach to system development like operational verses functional, accounting verses analysis.
  • Resources for the Development: Designer has to select resources. Resources can be in-house verses external, customized or use of package.
  • Manpower Composition: The staffs should have analysts, and programmers.

Information system planning essentially involves:

  • Identification of the stage of information system in the organization.
  • Identification of the application of organizational IS.
  • Evolution of each of this application based on the established evolution criteria.
  • Establishing a priority ranking for these applications.
  • Determining the optimum architecture of IS for serving the top priority applications.

Information System Requirements

The following diagram illustrates a brief sketch of the process of information requirement analysis:

The following three methodologies can be adopted to determine the requirements in developing a management information system for any organization:

Business Systems Planning BSPBSP – this methodology is developed by IBM.

  • It identifies the IS priorities of the organization and focuses on the way data is maintained in the system.
  • It uses data architecture supporting multiple applications. o It defines data classes using different matrices to establish relationships among the organization, its processes and data requirements.
  • Critical Success Factor CSFCSF – this methodology is developed by John Rockart of MIT. o It identifies the key business goals and strategies of each manager as well as that of the business.
    • Next, it looks for the critical success factors underlying these goals. o Measure of CSF effectiveness becomes an input for defining the information system requirements.
  • End/Means E/ME/M analysis – this methodology is developed by Wetherbe and Davis at the University of Minnesota.
    • It determines the effectiveness criteria for outputs and efficiency criteria for the processes generating the outputs.
    • At first it identifies the outputs or services provided by the business processes.
    • Then it describes the factors that make these outputs effective for the user. o Finally it selects the information needed to evaluate the effectiveness of outputs

Information System Analysis and Design

System analysis and design follows the typical System/Software Design Life

Cycle SDLCSDLC as discussed in the previous chapter. It generally passes through the following phases:

  • Problem Definition
  • Feasibility Study
  • Systems Analysis
  • System Design
  • Detailed System Design
  • Implementation
  • Maintenance

In the analysis phase, the following techniques are commonly used:

  • Data flow diagrams DFD
  • Logic Modeling
  • Data Modeling
  • Rapid Application Development RAD
  • Object Oriented Analysis OOA

Technology for Information Systems

The technology requirement for an information system can be categorized as:

Devices

  • Data center systems – It is the environment that provides processing, storage, networking, management and the distribution of data within an enterprise.
  • Enterprise software – These are software system like ERP, SCM, Human Resource Management, etc. that fulfill the needs and objectives of the organizations.
  • IT services – It refers to the implementation and management of quality IT services by IT service providers through people, process and information technology. It often includes various process improvement frameworks and methodologies like six sigma, TQM, and so on.
  • Telecom services

System Test Planning and Execution

The system should be fully tested for errors before being fully operational.

The test plan should include for each test:

  • Purpose
  • Definition
  • test inputs
  • detailed specification of test procedure
  • details of expected outputs

Each sub-system and all their components should be tested using various test procedures and data to ensure that each component is working as it is intended.

The testing must include the users of the system to identify errors as well as get the feedback.

System Operation

Before the system is in operation, the following issues should be taken care of:

  • Data security, backup and recovery;
  • Systems control;
  • Testing of the system to ensure that it works bug-free in all expected business situations;
  • The hardware and software used should be able to deliver the expected processing;
  • The system capacity and expected response time should be maintained;
  • The system should be well documented including; o A user guide for inexperienced users, o A user reference or operations manual for advanced users, o A system reference manual describing system structures and architecture.

Once the system is fully operational, it should be maintained throughout its working life to resolve any glitches or difficulties faced in operation and minor modifications might be made to overcome such situations.

Factors for Success and Failure

MIS development projects are high-risk, high-return projects. Following could be stated as critical factors for success and failure in MIS development:

  • It should cater to a specific, well-perceived business.
  • The top management should be completely convinced, able and willing to such a system. Ideally there should be a patron or a sponsor for the system in the top management.
  • All users including managers and other employees should be made an integral part of the development, implementation, and use of the system.
  • There should be an operational prototype of the system released as soon as possible, to create interest among the users.
  • There should be good support staff with necessary technical, business, and interpersonal skills.
  • The system should be simple, easy to understand without adding much complexity. It is a best practice, not to add up an entity unless there is both a use and user for it.
  • It should be easy to use and navigate with high response time.
  • The implementation process should follow a definite goal and time.
  • All the users including the top management should be given proper training, so that they have a good knowledge of the content and function of the system, and can use it fully for various managerial activities such as reporting, budgeting, controlling, planning, monitoring, etc.
  • It must produce useful outputs to be used by all managers.
  • The system should be well integrated into the management processes of planning, decision-making, and monitoring.