A sequence of phases in which the output of each phase becomes the input for the next.

The compilation process contains the sequence of various phases. Each phase takes source program in one representation and produces output in another representation. Each phase takes input from its previous stage.

There are the various phases of compiler:

A sequence of phases in which the output of each phase becomes the input for the next.

Fig: phases of compiler

Lexical Analysis:

Lexical analyzer phase is the first phase of compilation process. It takes source code as input. It reads the source program one character at a time and converts it into meaningful lexemes. Lexical analyzer represents these lexemes in the form of tokens.

Syntax Analysis

Syntax analysis is the second phase of compilation process. It takes tokens as input and generates a parse tree as output. In syntax analysis phase, the parser checks that the expression made by the tokens is syntactically correct or not.

Semantic Analysis

Semantic analysis is the third phase of compilation process. It checks whether the parse tree follows the rules of language. Semantic analyzer keeps track of identifiers, their types and expressions. The output of semantic analysis phase is the annotated tree syntax.

Intermediate Code Generation

In the intermediate code generation, compiler generates the source code into the intermediate code. Intermediate code is generated between the high-level language and the machine language. The intermediate code should be generated in such a way that you can easily translate it into the target machine code.

Code Optimization

Code optimization is an optional phase. It is used to improve the intermediate code so that the output of the program could run faster and take less space. It removes the unnecessary lines of the code and arranges the sequence of statements in order to speed up the program execution.

Code Generation

Code generation is the final stage of the compilation process. It takes the optimized intermediate code as input and maps it to the target machine language. Code generator translates the intermediate code into the machine code of the specified computer.

Example:

A sequence of phases in which the output of each phase becomes the input for the next.

  • You are here
  • Homepage
  • Waterfall Model

Software Validation.

The waterfall model approach to software Development and Validation, could be considered the original software life cycle model. In this model, the development of software, initiates with the concept stage and progresses through to the final product. As the software development process is implemented, the software is continually transformed until the final product is realized.

The phases in the Waterfall Model …

… can vary from organization to organization, but will be along the following lines:

i) Definition of requirements
ii) System and software design
iii) Programming
iv) Software integration
v) Delivery of the software product
vi) Ongoing maintenance of the product

As each of the above phases is complete, the output from a prior phase becomes the input for the follow-on phase. Looking at each of the phases.

“Definition of requirements”.

Here the input will be a clear communication of the requirements for the software. The output will be in the form of a requirements document (for example a user requirements document or a specification requirements document).

“System and software design”.

The input will come from the requirements document mentioned previous, the output will be a design specification document.

“Programming”.

The design specification document will be the input and the output from this phase of the process will be executable software modules.

“Software integration”.

The executable software modules will now to transformed into an integrated software product.

“Delivery of the software product”.

Similarly again, the input which is the integrated software will be transformed through this phase of the process into a software product which will be delivered to the customer (may be an internal or external customer).

  Finally the

“on-going maintenance of the product”

will have the input of the delivered product, which may need to be revised and updated due to changing customer demands and expectations.

Assumptions behind the Waterfall Model.

There are some assumptions behind the waterfall approach to software development, one being that each phase occurs in sequence after the previous phase and that each activity neatly commences upon completion of the previous phase.

However, in reality, phases tend to overlap, and it may not always be possible to have the output of each phase fully documented, verified and validated, prior to commencing the next phase. A major contributor to phase overlap, tends to be project timelines, where work may need to commence on a follow-on phase, prior to completion of a prior phase, due to a need to rapidly progress the project to completion.

When should an organization consider applying the Waterfall Model ?

When the customer requirements are clearly defined and understood, when the technology is well established, when the definition of the expected output product is stable. Examples of when the waterfall could be used, are when developing a newer version of an existing product or when transferring an existing product onto a new technology platform.
A sequence of phases in which the output of each phase becomes the input for the next.

Software Validation.

      • Agile Development. Extreme Programming. Spiral Validation. Etc..
      • Software Validation explained in an easy to understand, visual, format.
      • Use to inform yourself on the Validation of Software.
      • Information, Training, current Best Practice Presentation   >>>

 

Reference Sources:
General Principles of Software Validation (FDA)
Guidance of standalone software in the Medical Device Industry. MEDDEV 2.1/6
ISO/IEC 12207 Systems & Software Engineering – Software Life Cycle Processes