TESTINGMANTRA - BLOG
Blog
Testing Types
Usability Testing
Smoke Testing
Load Testing
Stress Testing
Domain Testing
Exploratory Testing
Recovery Testing
Scenario Testing
Regression Testing
User Acceptance Testing
Alpha Testing
Beta Testing
Unit Testing
Static & Dynamic Analysis Testing
Functional Testing
Ad-hoc Testing
Volume Testing
System Testing
Sanity Testing
Black Box Testing
Interoperability Testing
Volume Testing Techniques
Gray Box Testing
White Box testing
Articals
Agile Development
Coverage Criteria for GUI Testing
Release Life Cycle
Quality Concept
TQM - Total Quality Management
When are the Test Plan written
Unit Testing Advantages & Techniques
Classification of Defect
Requirement Testing Techniques
When is Testing Complete?
Quantative Project Management
Software Configuration Management
When to use Regression Testing?
V-Model Concept of Testing
Activity of Software Test Engineer
Risk Management
Sanity Testing A Overview
Website Security Smoke Test Template
Software Testing Techniques
Requirements & Specifications
Traceability Matrix
Test Plan - Objectives and Benefits
Agile Testing - Master the new game
Testing Vocabulary
SQL Tutorial
Test Strategy
Error Handling Testing
SDLC - Concept
Steps of Software Testing Life Cycle
Why to use Metrics?
Defect Tracking
SyncML
Mobile Testing
GSM Basic
Cellular Network Architecture
Mobile Communication Overview
Mobile & handheld usability testing
Why Mobile Testing is different
True BREW Testing
VOIP Testing
SIP Testing - An overview
SIP Messages
Structure of SIP Protocol
SIP Important terms
SDLC Model
Software Development Life Cycle
Waterfall model
Spiral Model
V-Model
Iterative Model
Big Bang Model
RAD Model
Prototype Model
SOFTWARE TESTING
Test Plan
Test Case & Test Design techniques
Templates
Software Project Template
Software Testing Template
Automated Testing Tools
QTP
Winrunner
JUnit
Selenium IDE
LoadRunner
JMeter
Estimation Techniques
Using Use Case Points
Quick Estimation Technique
Testing Estimation Process
Certifications
CSQA
CSTE
                                                                                                                                                                  Usability Testing      Smoke Testing      Load Testing      Stress Testing      Domain Testing      Exploratort Testing       Recovery Testing      Scenario Testing      Regression Testing      User Acceptance Testing      Alpha Testing      Beta Testing      Unit Testing      Static & Dynamic Analysis Testing                                                                                             







Share
Follow us at Twitter
Follow us at Facebook
Share
Defining requirements to establish specifications is the first step in the development of an embedded system. However, in many situations, not enough care is taken in establishing correct requirements up front. This causes problems when ambiguities in requirements surface later in the life cycle, and more time and money is spent in fixing these ambiguities. Therefore, it is necessary that requirements are established in a systematic way to ensure their accuracy and completeness, but this is not always an easy task. This difficulty in establishing good requirements often makes it more of an art than a science. The difficulty arises from the fact that establishing requirements is a tough abstraction problem and often the implementation gets mixed with the requirements. In addition, it requires people with both communication and technical skills. As requirements are often weak about what a system should not do, this poses potential problems in the development of dependable systems, where these requirements are necessary to ensure that the system does not enter an undefined state. The development of dependable embedded systems requires even more complicated requirements as the embedded system not only interacts with the software but also with the outside world. Therefore, the importance of establishing good requirements is even greater in embedded systems design.
Introduction

Requirements and specifications are very important components in the development of any embedded system. Requirements analysis is the first step in the system design process, where a user's requirements should be clarified and documented to generate the corresponding specifications. While it is a common tendency for designers to be anxious about starting the design and implementation, discussing requirements with the customer is vital in the construction of safety-critical systems. For activities in this first stage has significant impact on the downstream results in the system life cycle. For example, errors developed during the requirements and specifications stage may lead to errors in the design stage. When this error is discovered, the engineers must revisit the requirements and specifications to fix the problem. This leads not only to more time wasted but also the possibility of other requirements and specifications errors. Many accidents are traced to requirements flaws, incomplete implementation of specifications, or wrong assumptions about the requirements. While these problems may be acceptable in non-safety-critical systems, safety-critical systems cannot tolerate errors due to requirements and specifications. Therefore, it is necessary that the requirements are specified correctly to generate clear and accurate specifications.

There is a distinct difference between requirements and specifications. A requirement is a condition needed by a user to solve a problem or achieve an objective. A specification is a document that specifies, in a complete, precise, verifiable manner, the requirements, design, behavior, or other characteristics of a system, and often, the procedures for determining whether these provisions have been satisfied. For example, a requirement for a car could be that the maximum speed to be at least 120mph. The specification for this requirement would include technical information about specific design aspects. Another term that is commonly seen in books and papers is requirements specification which is a document that specifies the requirements for a system or component. It includes functional requirements, performance requirements, interface requirements, design requirements, and developement standards. So the requirements specification is simply the requirements written down on paper.

In establishing requirements, it is important to specifically establish the functions, attributes, constraints, preferences, and expectations of the product. Usually in the process of gaining information, functions are the first ones to be defined. Functions describe what the product is going to accomplish. It is also important to determine the attributes of a product. Attributes are characteristics desired by the client, and while 2 products can have similar functions, they can have competely different attributes. After all the attributes have been clarified and attached to functions, we must determine the constraints on each of the atrributes. Preferences, which is a desirable but optional condition placed on an attribute, can also be defined in addition to its constraints. Finally, we must determine what the client's expectations are. This will largely determine the success of the product.

Testing is the final step on the road to establishing correct requirements. There are several testing methods used, as listed below.

   
A Requirements phase, in which the requirements for the software are gathered and analyzed. Iteration should eventually result in a requirements phase that produces a complete and final specification of requirements. - A Design

phase, in which a software solution to meet the requirements is designed. This may be a new design, or an extension of an earlier design.

- An Implementation and Test phase, when the software is coded, integrated and tested.

- A Review phase, in which the software is evaluated, the current requirements are reviewed, and changes and additions to requirements proposed.


For each cycle of the model, a decision has to be made as to whether the software produced by the cycle will be discarded, or kept as a starting point for the next cycle (sometimes referred to as incremental prototyping). Eventually a point will be reached where the requirements are complete and the software can be delivered, or it becomes impossible to enhance the software as required, and a fresh start has to be made.version of the software.

   * Ambiguity poll - Used to estimate the ambiguity in a requirement. This involves asking questions such as how fast?, how big?, how expensive?, and then determining if there is ambiguity between the high and low values.
    * Technical review - A testing tool for indicating the progress of the requirements work. It can be formal or informal and generally only deals with technical issues. Technical reviews are necessary because it is not possible to produce error-free requirements and usually it is difficult for the producers to see their own mistakes.
    * User satisfaction test - A test used on a regular basis to determine if a customer will be satisifed with a product.
    * Black box test cases - Constructed primarily to test the completeness, accuracy, clarity, and conciseness of the requirements.
    * Existing products - Useful in determining the desirable and undesirable characteristics of a new product.

Requirements & Specifications