Introduction To Practical Software Engineering
Introduction To Practical Software Engineering
ENGINEERING
An Introduction
Data Model
Data model has been used here in a very broad sense. A software’s data model can be variables,
function declarations or even the structural UML models. Anything static which is acted upon and/or
which does not act on some other software component is a data model. This is in abstract sense. A data
model, put simply is a noun.
Levels of Abstraction
A software implementation can have many levels of abstraction. Model View Controller is an example of
multi level abstraction which represents the data models ‘model’, ‘view’ and ‘controller’. Other levels of
abstraction can be the various interfaces of a software. These can be represented through abstraction of
their relevant levels of activities. UI as a level in the software may connect to the database which is
another level in the software for example.
Efficiency
Efficiency is the nature of code that can be measured by algorithmic standards. An example will be how
many loops being used to achieve something. Is there a more efficient way to reduce the running time
of a certain piece of code for example?
Operation
A software can have many operations, both at the coding level or at the system level. At the coding level
it can be connecting to databases, querying a web service, reading the registers or the computer or even
sending a notification to the user. At the system level this can be implementing in a platform or adding a
data source through the GUI IDE as in visual studio or even adding an external library.
Solving Problems
You will see many documentations have techniques to solve a certain problem. Here for example in
Laravel documentation it has numerous techniques to solve problems such as making a model, querying
a table, creating a notification etc. In Django documentation too we see techniques for setting up the
model, urls etc.
You may ask yourself when solving a problem which technology should you use. Say you have a problem
of setting up a crowdsourcing app. Will you use web or mobile or desktop ? If you use web for example
will you use PHP or Python? If PHP will you use Laravel or Yii? You have to know then which technology
to use
Even though you may say API is a technology but to be more precise and relevant in this context we an
just precisely consider API a specific part of a technology. Say if you are using Laravel and you want a
search functionality you can use scout API for MySQL or say you are using .Net framework to build an
RFID system so you need an API to connect to the RFID device.
Inconsistent Syntax
In Laravel say you want to send data with the view. You have to do is
See the inconsistency in the term data. It was sent by ‘data’ but you have to read by $data.
Errors
Syntax
This is pretty self explanatory. You will have errors if you do not follow the syntax rules of the language.
This will be compile time errors
Semantics
This is the heart of debugging mostly. Most software testing is done to correct this. A software can have
countless number of execution paths and it is almost impossible to correct them in one time. An
example of semantic will be you want to increment a variable by ne but you incremented it by two or for
example putting a variable initialization in the wrong place of the code/script/file.
Missing requirements
Say you want to install wamp64 but you failed to install MySQL due to missing the VCs (Visual C++
Redistributable) so your MySQL won’t be installed.
Say you want to integrate PHP with MSSQL. Now you have failed to follow the steps of achieving this
because you did not follow the protocol for integrating these two technologies. Another example is
trying to install Oracle in Ubuntu which can cause lot of problems if wrong protocol is followed.
Sophisticated software need to connect to the outside world to get and send data whether user data or
system generated data. This is only done through networks. Internet data transfer can be achieved
through certain data structures: JSON, XML or YAML. These are achieved through protocols. One
example is SOAP protocol.
A software coding begins after the design phases in most software. Design takes place in UML/flowchart
supported tools such as StarUML. In many cases once the design is finished coding starts. Software
design implementation, in this case coding occurs most of the times in an IDE. An IDE is an Integrated
Development System. IDE has:
➢ A source code environment: PHP, C#, Java
➢ A source code platform environment: Eclipse, Netbeans, Visual Studio
➢ A source code platform external environment: data source, servers etc
Modern software:
When choosing a programming language to write a software consider what functionalities that
language provide and what is the measure of this. Say if a language provides database
functionalities then how efficient is it?
➢ Asynchronously
➢ In a multithreaded way
➢ In a distributed system