SEF9 - 36 Software Design (important technologies for practising SE must know)

Developments in Software Architectures & Design

1. Structured Design (SD) / Call and Return architecture (CAR)
2. Functional Design (LISP) / EVAL cycle.
3. Object Oriented Design (OOD)
4. Client-Server Design
5. Parallel (Concurrent) Design
6. Distributed Design
7. Parallel and Distributed Design


Programming Paradigms

(1) Imperative programming
(2) Functional programming
(3) Object Oriented programming
(4) Declarative programming
(5) Parallel (Concurrent) programming
(6) Distributed programming
(7) Parallel and Distributed programming.

Recent Technologies

(1) OpenMPI
(2) OpenMP
(3) Apache Hadoop
(4) Apache Cassandra
(5) Spark Ada


--
WASSALAM
wruslan.hahaha

PARALLEL COMPUTING

Definition of Parallel Computing. The US Department of Energy defines parallel computing as: “simultaneous processing by more than one processing unit on a single application ”.

(1) Parallel Computing is the ultimate approach for a large number of large-scale scientific, engineering, and commercial computations.

(2) Serial computing systems have been with us for more than five decades since John von Neumann introduced digital computing in the 1950s.

(3) A serial computer refers to a system with one central processing unit (CPU) and one memory unit, which may be so arranged as to achieve efficient referencing of data in the memory.

(4) The overall speed of a serial computer is determined by the execution clock rate of instructions and the bandwidth between the memory and the instruction unit. To speed up the execution, one would need to either increase the clock rate or reduce the computer size to lessen the signal travel time.

(5) Vector processing is another intermediate step for increasing speed. One central processing unit controls several (typically, around a dozen) vector units that can work simultaneously. The advantage is the simultaneous execution of instructions in these vector units for several factors of speedup over serial processing. However, there exist some difficulties. Structuring the application codes to fully utilize vector units and increasing the scale ofthe system limit improvement.

Obviously, the difficulty in utilizing a computer — serial or vector or parallel — increases with the complexity of the systems. Thus, we can safely make a list of the computer systems according to the level of difficulty ofprogramming them:

(1) Serial computers.
(2) Vector computers with well-developed software systems, especially compilers.
(3) Shared-memory computers whose communications are handled by referencing to the global variables.
(4) Distributed-memory single-instruction multiple-data computers with the data parallel programming models; and
(5) Distributed-memory multiple-instruction multiple-data systems whose communications are carried out explicitly by message passing

Parallel computing has been enabling many scientific and engineering projects as well as commercial enterprises such as internet services and the recently developed cloud computing technology. It is easy to predict that parallel computing will continue to play essential roles in aspects of human activities including entertainment and education, but it is difficult to imagine where parallel computing will lead us to.


--
WASSALAM
wruslan.hahaha

Microsoft Word Version
Return to Software Engineering Fundamentals (SEF9MMUWRY)
Previous Topic: 35 Comparison of Agile versus Waterfall (Software Engineering) Process Models
Next Topic: 37 Software Requirements Engineering (The Agile style ...)

0 comments:

Post a Comment