Saturday, April 23, 2011

Software Development: Levels of Languages

Languages of software development operate at several levels: facilitating expectations from a software system to be shared between stakeholders (specification languages), capturing analysis and design artifacts through a common set of idioms and notation (modeling languages), and implementing the system in executable code (programming languages). Each of these levels represents a particular layer of abstraction.

As with natural languages, languages of software development also offer many layers of details. Out of them, only those relevant to the problem at hand need to be considered in a given situation. Some of the factors that lead to the popularity of a programming language are: power of expression, ease of learning by beginners, ease of running on a wide range of architectures, tool support etc. The choice of a particular programming language for developing a system depends on the kind of system it is. Each programming language has a definite focus area; for example C is well suited to systems programming. How high-level a programming language is depends on the degree to which it hides the underlying complexity of the physical machine that executes the instructions given in the language by the human programmer.

A model is based on some assumptions; it highlights some aspects of interest in a system, while hiding others. Challenges to modeling software arise to large extent from its inherent ‘invisibility’ and ‘unvisualizability’. Unified Modeling Language (UML) is a language for visualizing, specifying, constructing, and documenting the artifacts of a software system. UML consists of three kinds of building blocks: things, relationships, and diagrams. UML diagrams are classified as structural and behavioral—the former captures the static aspects of a system while the latter captures the dynamic aspects. Although very popular, UML is not universally accepted in the software engineering community: A common criticism is that it is a product of “design by committee”.

Specification languages such as Z (invented by Jean-Raymond Abrial and named after the mathematician Ernst Friedrich Ferdinand Zermelo) broadly relate to the formal methods of software development, using mathematical concepts and constructs to describe the behavior of a software system; use of formal methods leads to an increase in time and cost earlier in the development life cycle, vis-à-vis the use of traditional, non-formal methods. This is one of the reasons why formal methods are not used widely for commercial software development, where time to market is often given higher importance than quality.The quest for exactitude and completeness is paramount in a specification using a language such as Z. Specification languages and formal methods, when used in combination with traditional approaches can facilitate the construction of quality software.

2 comments:

Anonymous said...

MT2010079(A N P Praveen)
As mentioned,UML is not universally accepted in the software engineering community: A common criticism is that it is a product of “design by committee”.
But UML notation provides 2 major rules
1.It serves as the language for communicating decisions that are not obvious or
cannot be inferred from the code itself.
2.It provides semantics that are rich enough to capture all important strategic and
tactical decisions.
The Unified Modeling Language (UML) provides a very robust notation, which grows from analysis into design. Certain elements of the notation (for example, classes,
associations, aggregations, inheritance) are introduced during analysis. Other elements of
the notation (for example, containment implementation indicators and properties) are
introduced during design.

Hence UML notation is most useful.

Unknown said...

Poornima Seshadri (MT2010104)

In continuation to your post, I want to highlight some aspects of high level programming languages:

- With ever growing complexity in business requiring integration across heterogeneous systems and long running processes, Business Process Execution Language (BPEL) has been gathering momentum and are widely used in Business Process Management platforms.
- A programming language either provides static type checking or allows dynamic typing. While dynamic typing allows flexibility for the programmer to write less verbose code, for business applications, statically typed languages are still preferred though they are verbose, as they ensure compile time checking and are easy to debug runtime errors.