Process Models and Testing Flashcards
What are the design options for embedded systems both hardware and software.
App-specific software runs on general-use computers.
App-specific software runs on a combination of general-purpose computing hardware supported by application specific circuits.
Almost all of the functionality is realised in hardware.
What are some hardware options
Hardware Options:
General Purpose computing hardware
Microcontrollers
App specific integrated circuits, and field progammable gate arrays.
What can you do with FPGAs?
- Design your own CPU/memory structure
- Add extra circuits for app specific functionality.
- Hardware description languages
Most Popular: Verilog, VDHL
Look like programming languages but describe the functionality of integrated circuits.
What is a Hardware Description Language?
It Describes the functioning of the hardware
– The compiler creates a specification of the
required signal lines and logic gates
What was the Traditional Design Process and its drawbacks.
It starts by partioning the design process into software and hardware, the software and hardware work are designed separately, then they are integrated and the final product is made.
The drawbacks are:
Late system integration
Impact of HW and SW on each other cannot be assessed easily.
Poor quality designs
May require costly late modifications
May need schedule extensions
What are Hadware/Software co-design’s aims and interdisciplinary design groups.
Hardware/Software is the concurrent design of hardware and software.
The aims are:
-Exploit synery between hardware and software
-Optimise cost, performance, power of the product.
-Reduce time to market
—-Interdisciplinary design groups
- Firmware, OS, and application developers.
- Hardware developers and chip designers
What are the different architectural design decisions and partitioning objectives and strategies?
Architectural design decisions
-Type of processor, interface style.
Partitioning objectives
- Speedup, latency requirement, silicon size, cost
Partitioning strategies
- High-level partitioning by hand, computer-aided partitioning technique.
Difference between sequential development and hardware/software codesign
For Sequential development of hardware and software, the software team cannot start until hardware is available.
For Hardware/Software codesign. There is a shorter critical path, more options for early testing and more options for testing alternative
What is SDLC?
The Software Development Life Cycle is a detailed plan to describe how to develop, maintain, replace, alter and/or enhance specific software.
What are the steps of SDLC?
Step 1: Planning and Requirement Analysis
Step 2: Defining Requirements
Step 3: Designing the Product Architecture
Step 4: Building or Developing the Product
Step 5: Testing the Product
Step 6: Deployment in the Market and Maintanence.
What is the Waterfall Model
The waterfall was the first SDLC Model to be used. In this model the whole process of software development is divided into separate phases.
What are the steps of Waterfall Model
- Requirements
- Analysis
- Design
- Coding
- Testing
- Maintanence
Advantages of Waterfall Model
Simple and easy to understand and use
Clearly defined stages
Well understood milestones
Easy to arrange tasks.
Process and results are well documented
Disadvantages of Waterfall Model
No working software is produced until late during the life cycle
High amounts of risk and uncertainty
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing
It is difficult to measure progress within stages
Adjusting scope during the life cycle can end a project.
What are the advantages of Agile method
Is a very realistic approach to software development.
Promotes teamwork and cross training
Functionality can be developed rapidly and demonstrated
Resource requirements are minimum
What are the disadvantages of Agile Method
Not suitable for handling complex dependencies
More risk of sustainability, maintainability and extensibility
Transfer of tech to new team members may be challenging due to lack of documentation.
Depends on customer interaction, so if customer is not clear, team can be driven in wrong direction.
What is Sofware Testing and what can it reveal or not reveal?
Testing is intended to show that a program does what is intended to do and to discover program defects before being put into use.
Testing can reveal the presence of errors, not their absence.
Factors of Verification Testing
Is the project being built correctly?
Ensure the software conforms to the specifications?
Absence of run-time errors.
Test cases don’t reflect typical usage, but aim at exposing defects.
Factors of Validation Testing
Is the right project being built
Ensures software does what the user requires.
The requirements are realistic.
Software tests needed for every requirement and every system feature.
What does software inspections involve as well as their characteristics?
Looking at the source code or UML diagrams to discover problems
Includes tool-based document/code analysis.
Applicable to incomplete code, since the program is not executed.
Also suitable for other documents, requirements, design, configuration data, test data.
Effective technique for discovering program errors.
What does software testing include
It is concerned with observing product behaviour and the system is executed with test data and it’s operational behaviour is observed.
What are the stages of testing
- Development Testing
Testing the system during development to discover bugs and defect.
- Release Testing
Tesitng of a complete version of the system by a separate testing team before it is released to users.
- User Testing
Testing by users or potential users of a system in their own environment.
What tests does development testing consist of and explain them
It consists of unit tests, component tests and system tests.
Unit tests:
Individual program units or object classes are tested.
Unit tests focus on the functionality of the methods.
Component Tests:
Where several individual units are integrated to create composite conponents.
Component tests focus on testing component interfaces. Checking the behaviour of the component to see if it’s correct and checking for interface errors.
System Tests:
Where some or all components in a system are integrated and system is tested as a whole.
System testing focuses on testing component interactions
What is Regression Testing?
Resgression testing checks that the code changes have not broken previously working code.
In automatic testing, regression testing is simple and straightforward but with a manual testing process it’s expensive.
All tests are rerun every time a change is made to the program. Tests must run ‘successfully’ before the change is comitted.