Design and Development Flashcards
What type of systems does the development of IoT applications and products involve?
The development of IoT applications and products involves software engineering on embedded or distributed systems.
What are embedded systems and what do they consist of?
Embedded systems are low-power small-sized microprocessor-based systems consisting of hardware and software components designed to perform dedicated tasks.
What are some well-known methodologies used for developing software on embedded systems?
The well-known methodologies for developing software on embedded systems include the waterfall model, spiral model and agile model.
What platforms are used to implement embedded systems? Platforms used to implement embedded systems include mono-board computers
Platforms used to implement embedded systems include mono-board computers one-chip systems and microcontrollers.
What is the main characteristic of distributed systems in the context of IoT?
In distributed systems computational tasks are distributed among several machines in the network to enhance scalability, flexibility, reliability, and fault tolerance.
How does designing distributed systems differ from designing embedded systems?
Designing distributed systems is more complex than designing embedded systems.
What has been developed to simplify software development for distributed systems?
Architecture patterns which document knowledge and solutions to common challenges have been developed to simplify software development for distributed systems.
When and where was software engineering first introduced as a systematic approach to software development?
Software engineering was first introduced at a NATO conference in Germany in 1968.
How does software engineering differ from software programming?
Software engineering involves multiple developers working on complex systems with indefinite lifespans, high maintenance, and ongoing development costs. In contrast, software programming typically involves a single developer working on one-off projects with limited lifespans.
What are embedded systems and how do they differ from personal computers?
Embedded systems are specialized computer systems integrated into larger systems, combining software and hardware to perform dedicated tasks. Unlike personal computers, which are designed for general tasks, embedded systems execute specific applications.
What is one of the main challenges in designing distributed systems?
One of the main challenges in designing distributed systems is how to partition the application and assign different tasks to various computational nodes.
What are five benefits of distributed systems compared to embedded systems?
The five benefits of distributed systems are:
* Resource sharing
* Openness (using equipment and software from different vendors)
* Concurrency (simultaneous processes on different nodes)
* Scalability (easy addition of new resources)
* Fault tolerance (system continues operating if a node fails)
What components are typically included in an embedded system?
A typical embedded system includes:
: A typical embedded system includes:
* Processor
* Analog input/output (I/O)
* Sensors and actuators
* User interfaces
* Application-specific gates (e.g., FPGA)
* Software
* Memory
* Emulation and diagnostics modules
What role do sensors and actuators play in an embedded system?
Sensors measure physical parameters of the environment while actuators perform commands to control or influence the environment.
What types of languages are typically used to write software for embedded systems?
Software for embedded systems is usually written in high-level languages like Python or C/C++ while performance-critical code may be written in low-level languages like Assembly.
How is an embedded system debugged?
Embedded systems are debugged using diagnostic ports such as the Joint Test Action Group (JTAG) which provide visibility into the system’s behavior.
What is the purpose of emulation in embedded systems?
Emulation modules in embedded systems provide visibility into the behavior of the application helping developers understand and debug the system.
What are the three well-known models used to develop embedded software?
The three well-known models are the waterfall model, spiral model and agile model.
What is the key characteristic of the waterfall model in software development?
The waterfall model is a sequential process where each project phase depends on the previous one with no overlap between phases.
In what type of projects is the waterfall model most suitable?
The waterfall model is more suitable for small projects with stable and predictable requirements.
What is a major drawback of the waterfall model?
A major drawback is its difficulty in modifying the software after the testing phase making it unsuitable for projects with frequent requirement changes.
What are the phases of the waterfall model?
The phases are:
1. Requirement documentation and analysis
2. High and low-level design
3. Implementation (coding)
4. Testing (e.g., security testing)
5. Deployment
6. Maintenance
How does the spiral model represent software development phases?
In the spiral model phases are represented by loops of a spiral where the radius represents project cost and the angular dimension shows progress.
What makes the spiral model suitable for large projects?
The spiral model is suitable for large projects because it handles frequent changes in requirements and manages risks effectively.
What are the four quadrants of the spiral model?
The four quadrants are:
1. Requirements gathering
2. Alternative evaluation and risk resolution
3. Development and verification
4. Review and planning for the next phase
How does the agile methodology minimize project risks?
Agile minimizes project risks through iterative development breaking tasks into smaller sprints (1-4 weeks) that involve requirement gathering
What are the typical durations of agile sprints?
Agile sprints typically last from one to four weeks.
How is data processing performance enhanced in distributed systems?
Data processing performance is enhanced by distributing computational tasks across multiple machines which appear as a single system to the user.
What are some common use cases for distributed systems?
Common use cases include telecommunications networks cryptocurrency systems, flight and hotel reservation systems, multi-user video conferencing, and global supply chain management.
What is message-oriented middleware (MOM), and what does it do?
MOM is an infrastructure that creates a distributed communication layer isolating application developers from network interfaces and operating systems
What are the benefits of distributed systems compared to embedded systems?
Distributed systems are more scalable and fault-tolerant, allowing for resource sharing, fault resilience, and flexibility across multiple vendors and platforms.
What are some challenges and risks associated with distributed system deployment?
Challenges and risks include:
1. Security vulnerabilities in nodes owned by different organizations
2. Network failure risks as more machines are added
3. Synchronization issues due to the lack of a global clock
4. Network architecture challenges, such as load balancing and bandwidth management
What are common challenges faced when designing distributed systems across different organizations?
Challenges include synchronization, reliability of the nodes, network delays, system management, and data storage.
What is the purpose of architectural patterns in software design?
Architectural patterns provide common solutions to recurring problems, facilitate good design practices, and maintain the original software architecture vision when modifications are made.
How does the layers pattern structure applications?
The layers pattern separates conceptually different tasks into layers with each layer using the services of the layer below and providing services to the layer above.
What are examples of the layers pattern in networking?
The OSI seven-layer protocol and the internet protocol suite (TCP/IP).
What are the advantages of using the layers pattern?
Each layer can be developed and tested independently, standardized tasks can be created, and services from each layer can be used by multiple higher layers.
In the client-server pattern what role do the client and server play?,
Clients request services from servers, and servers provide services to clients.
How is the client-server pattern related to the layers pattern?
It is a type of layers pattern where clients and servers may reside on different machines or processes.
What is the master-slave pattern and what is it based on?
The master-slave pattern is based on the divide-and-conquer principle where the master splits tasks among slaves and computes results based on their output.
What are the limitations of the master-slave pattern?
It can only be applied to modular problems and there may be high system latency due to process separation.
What does the pipe-filter pattern provide, and what is it used for?,
It provides a structure for systems that produce a stream of data where tasks are divided into sequential processing steps encapsulated in filters.
Give an example of the pipe-filter pattern in UNIX.
The command cat file | grep xyz | sort | uniq > out where each filter performs a specific task on the data.
What are the advantages and disadvantages of the pipe-filter pattern?
Advantages: New filters can be added easily to extend the system. Disadvantages: It’s difficult to use for applications involving user interaction with audiovisual information.
How does the broker pattern work?
The broker coordinates communication between clients and servers by redirecting client requests to the appropriate server.
What is an example of the broker pattern?
Common Object Request Broker Architecture (CORBA).
What distinguishes the peer-to-peer pattern from the client-server pattern?
In peer-to-peer, each node can act as both a client and a server, and roles change dynamically.
What are some advantages of the peer-to-peer pattern?
Low cost, low administrative overhead, scalability, resilience to failure, and dynamic configuration.
What challenges exist with the peer-to-peer pattern?
There is no guaranteed quality of service, and security is difficult to ensure.
How does the event-bus pattern handle data and notifications?
Data is published to a channel, and listeners subscribed to that channel are notified of the new data.
What are some use cases of the event-bus pattern?
Data is published to a channel, and listeners subscribed to that channel are notified of the new data.
What are the limitations of the event-bus pattern?
The event bus can become a bottleneck for system scalability.
What are the three components of the Model-View-Controller (MVC) pattern?
Model (data and functionality), View (displays data) and Controller (handles user input).
Why is the MVC pattern useful in GUI applications?
It allows for multiple views of the same model and supports changes to the model based on user input.
What is the interpreter pattern used for?
It is used to design components that interpret programs written in a specific language
Give an example of the interpreter pattern.
JavaScript and rule-based systems like expert systems.
What is the blackboard pattern and what types of problems is it used for?
It is used for problems without a deterministic solution strategy like submarine detection and speech recognition
How do subsystems in the blackboard pattern interact with the blackboard?
They use pattern matching to find specific types of data on the blackboard.
How do architectural styles differ from architectural patterns?
Architectural styles are formulated top-down and classify software systems based on the nature of their components and connectors while patterns provide bottom-up solutions to specific problems.
What is a key difference between bottom-up and top-down development?
Bottom-up development focuses on solving specific problems with patterns while top-down development classifies systems based on architectural styles.
What architectural style does the pipe-filter pattern belong to?
The pipe-filter pattern belongs to the dataflow style.
What are the main characteristics of the dataflow style?
In the dataflow style, data streams flow between components, such as in the pipe-filter pattern and some types of client-server systems.
Which patterns belong to the interacting processes style?
The event-bus, client-server and peer-to-peer patterns belong to the interacting processes style.
What defines the interacting processes architectural style?
Components in this style have their own thread of control and interact independently.
Which architectural style involves storing data centrally?
The data-centered style.
What are examples of patterns in the data-centered style?
The blackboard pattern and some instances of the client-server pattern (where servers manage databases).
What is a key feature of the hierarchical style?
The system is divided into subsystems that have limited interactions with each other.
Which patterns belong to the hierarchical style?
The interpreter pattern and the layers pattern.
What is the call and return architectural style used for?
It is used to create programs that are easy to scale and modify.
Which patterns belong to the call and return style?
The master-slave pattern and the layers pattern.
What type of client-server pattern belongs to the dataflow style?
When a client receives and displays audio sent by a server it belongs to the dataflow style.
In which architectural style would you classify systems where subsystems have limited interaction?
The hierarchical style
How does the call and return style facilitate scalability and modification?
It creates a structure where components call one another which makes it easier to scale and modify the system.
What factors determine the optimized capabilities of an IoT platform?
The requirements of the IoT use case and the complexity of software development determine the optimized capabilities of the platform.
What are the three commonly used embedded platforms for software development in IoT?
Microcontrollers, mono-board computers, and one-chip systems.
What is a microcontroller?
A microcontroller is a small, self-contained, low-cost computer embedded in a single integrated circuit (IC) chip that contains one or more CPUs, memory, and programmable peripherals.
What is the function of the CPU in a microcontroller?
The CPU decodes instructions fetched from memory and completes the allocated tasks.
What are the memory types used in microcontrollers?
Read-only memory (ROM), random access memory (RAM), and flash memory.
What is the purpose of input/output (I/O) ports in a microcontroller?
I/O ports link the microcontroller to external components like sensors and actuators.
What are some examples of peripheral controllers that can be included in a microcontroller?
Analog-to-digital converters (ADCs), timers, counters, pulse width modulation (PWM), and digital-to-analog converters (DACs).
Can microcontrollers perform tasks outside of their programmed remit?
No microcontrollers are designed to repeatedly perform a specific task and cannot operate outside their programmed remit.
What are some commonly used microcontrollers?
ARM core processors, Microchip Technology Atmel AVR, Texas Instruments TI MSP430 (16-bit) and MSP432 (32-bit), Microchip Technology PIC, Intel 8051, PowerPC ISE, Toshiba TLCS-870 (8-bit and 16-bit).
What is a mono-board computer?
A mono-board computer integrates all devices of an embedded computing system, including the microprocessor, I/O peripherals, and memory, onto a single printed circuit board (PCB).
What is the advantage of using mono-board computers?
They optimize size, eliminate bus driver circuits, reduce connections between multiple boards, and lower manufacturing costs.
What is a disadvantage of mono-board computers compared to desktop computers?
They lack the flexibility of desktop computers with expansion slots for hardware upgrades.
Give two examples of mono-board computers used in IoT applications.
Raspberry Pi and Arduino.
What are some uses of Raspberry Pi?
Raspberry Pi can perform functions like web browsing and word processing and can interact with external devices using a monitor, mouse, and keyboard.
What programming language is commonly used to program Raspberry Pi?
Python
What is Arduino, and what are its advantages?
Arduino is an open-source platform for hardware and software development. Advantages include low cost, cross-platform IDE, a simple programming environment, open-source software, and hardware schematics available under a Creative Commons license.
What is a one-chip system?
A one-chip system integrates an entire computer, including the processing unit, memory, wireless connections, graphics, and input/output ports, into a single chip.
What are some advantages of one-chip systems?
They offer low power consumption, small size, minimize interference and interconnection delays, and have an increased data transmission rate.
Where are one-chip systems commonly used?
They are used in portable IoT gadgets including devices that monitor human body vitals like temperature.
What types of external interfaces do one-chip systems support?
Standard external interfaces such as USB, Ethernet, Wi-Fi, and Bluetooth.
Why do one-chip systems have increased data transmission rates compared to multi-board systems?
They reduce interference and interconnection delays between components that would otherwise be installed on a motherboard.
What is the Waterfall software development model, and how does it progress?
The Waterfall model develops software sequentially, with each phase depending on the completion of the previous one. All project requirements are investigated upfront.
How does the Spiral methodology differ from the Waterfall model?
The Spiral methodology involves loops of spirals representing different phases, with each loop including the cost of the project up to that point. It allows for iterative development and risk assessment.
What is the purpose of breaking tasks into smaller sprints in Agile methodology?
In Agile, breaking tasks into sprints helps minimize project risks by allowing iterative development that includes requirement gathering, design, development, testing, and launch in each sprint.
What are the key differences between designing distributed systems and embedded systems?
Distributed systems are more complex and rely on patterns to solve common software development problems, whereas embedded systems are simpler and often developed for specific tasks.
What role do architectural patterns play in distributed systems?
Architectural patterns provide solutions for common problems and help structure distributed systems based on their components and connectors.
What factors influence the choice of platform for developing IoT software?
The requirements of the IoT use case and the complexity of the software development determine the platform’s computational power, peripherals, form factor, power consumption, and data communication features.
What are the three most common embedded platforms used for software development in IoT?
Microcontrollers, mono-board computers, and one-chip systems.
Which software development methodology is most suitable for minimizing project risks?
Agile methodology, as it breaks down tasks into smaller sprints, reducing risks throughout development.