Lect 3
Lect 3
1 Introduction
Hardware cannot perform efficiently without the software. Software makes the com-
puter to run. Software is a program or set of instructions that enables the
computer to do a specific task. On the other hand, computer is use to develop the
software. Software engineering refers to the creating of instructions for computer,
the computer functions based on these instructions, these instructions are executed in
the processor and the microcontroller present on the computer motherboard. Software
is often used to describe all the functional aspects of a computer that do
not refer to its physical components (hardware). Scripts, applications, pro-
grams and a set of instructions are all terms often used to describe software.
Understanding the software development method offers vast opportunities in the IT in-
dustry.
Software development is the process engineers take to build computer programs. This
process is also known as the Software Development Life Cycle (SDLC). This includes
several phases that provide a method for building products that meet technical specifica-
tions and user requirement. The SDLC is a comprehensive tool for solving organizational
problems, particularly those relating to the flow of computer-based information. SDLC
process are what many organizations follow during systems analysis and design, the pro-
cess are:
1
**PLEASE READ MORE ON THE SIX PROCESS ABOVE**
Phases often overlap, and a new one may start before the old one is finished. After the
first (iv) phases, management must decide whether to proceed to the next phase.
This process of translating from the C/C++ language is done by a program commonly
known as a compiler. Shoulder to shoulder with operating systems, compilers are very
com- plex and sophisticated programs, as we will have many occasions to observe.
2
can be executed by a computer.
Since even short programs can implement complicated concepts, we should have no illu-
sion that we will write the correct version from the very beginning. Therefore, we should
also write software that controls what other software is doing. This can be, for instance,
in the form of unit tests, which we will also discuss. When problems are spotted in soft-
ware, it can be run step by step with a debugger. Debugging is the best way to learn
what code is doing.
Software can have different configurations and versions. Although many configurations
are possible, usually there are two distinctive modes:
• Debug: A software version that usually is not optimized and is used for “in house”
testing and debugging
• Release: A stable version of the software after intensive testing, which is fully
operational, optimized, and intended to be distributed to users
In many cases, performance still is not satisfactory due to long execution times or stalls.
This can be amended with the help of a profiler. Its role is to measure the perfor-
mance of software-building components and discover hot spots at different levels. Such
reported places in the code i.e. those that consume the most execution time can be
further optimized with the help of other algorithms or refactoring (i.e. redesigned and
re-implemented) into a parallel version, if possible. After that, we can repeat the entire
software development process in order to build the software’s next, better version.
After the software is ready, it can be deployed on a concrete hardware platform. A de-
gree of soft- ware-hardware (S/H) dependence is a function of software features. That
is, some programs can easily run on almost any hardware platform, whereas others may
require significant computational power or can be tuned for specific displays, for instance.
Hence, if appropriate, such features need to be taken into account during the software
development steps.
3
involved in the software development process is stated in fig:2 Although C++/Rust is
Figure 2: UML activity diagram presenting the steps of the software development process.
Boguslaw Cyganek)
our main subject, we will also pay attention to other software development steps. Let’s
describe each of them briefly in the order shown in fig:2
2. Problem analysis – Based on the previous step: the process of establishing the
main relations in the system, recognizing the governing rules of the critical system
processes, identifying the most difficult components, and sketching the main stages
of the critical algorithms with special focus on the most problematic ones. In some
4
cases, this can be one of the most expensive and tedious steps, involving experts
from other domains.
3. Solution design – Based on the previous steps: the process of specifying the
architecture of the whole system, considering all of its components and their inter-
faces. Includes specification of tools and implementation strategies. Frequently, this
process involves the preparation of Gantt charts that capture inter-dependencies be-
tween system implementation stages, human resources, deadlines, and milestones.
The software development steps discussed above are not the only possible path to follow
in this highly demanding engineering domain; they are simply one of the possible models.
Design strategies developed in other domains, such as electronics and architecture, can
also be of help in software design.
The previous steps should also be reflected in the project documentation, the structure of
which could be the topic of a much longer discussion. Needless to say, such documentation
should as precisely and concisely as possible describe all the steps necessary to solve a
given problem. In our projects, we will deal mostly with code documentation. In this
respect, the principle of self-docu- menting code has proven useful in many practical
realizations. This is based on the assumption that proper comments are added during
software implementation.
5
Please Note: releasing this material out for you is not the main