0% found this document useful (0 votes)
40 views

Introduction To Practical Software Engineering

This document discusses core concepts in practical software engineering including data models, levels of abstraction, efficiency, and operations. It also covers solving problems by knowing techniques, technologies, and APIs. Some key challenges discussed are inconsistent syntax, various types of errors, missing requirements, and wrong integration protocols. The document also mentions data transfer, representation, reading and writing programs in IDEs, and different software activity levels.

Uploaded by

Mohammad Rahman
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Introduction To Practical Software Engineering

This document discusses core concepts in practical software engineering including data models, levels of abstraction, efficiency, and operations. It also covers solving problems by knowing techniques, technologies, and APIs. Some key challenges discussed are inconsistent syntax, various types of errors, missing requirements, and wrong integration protocols. The document also mentions data transfer, representation, reading and writing programs in IDEs, and different software activity levels.

Uploaded by

Mohammad Rahman
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

PRACTICAL SOFTWARE

ENGINEERING
An Introduction

MARCH 16, 2018


MOHAMMAD RAHMAN
Contents
Core Concepts ............................................................................................................................................... 2
Data Model ............................................................................................................................................... 2
Levels of Abstraction ................................................................................................................................. 2
Efficiency ................................................................................................................................................... 2
Operation .................................................................................................................................................. 2
Solving Problems ........................................................................................................................................... 3
Knowing The Technique ............................................................................................................................ 3
Knowing The Technology .......................................................................................................................... 3
Knowing The API ....................................................................................................................................... 3
Consider Weirdness Of Technology .............................................................................................................. 3
Inconsistent Syntax ................................................................................................................................... 3
Errors............................................................................................................................................................. 4
Syntax ........................................................................................................................................................ 4
Semantics .................................................................................................................................................. 4
Missing requirements ............................................................................................................................... 4
Wrong Integration Protocol ...................................................................................................................... 4
Data Transfer and Representation................................................................................................................ 4
Reading and Writing Programs ..................................................................................................................... 4
Software Activity Levels ................................................................................................................................ 5
Core Concepts

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

Knowing The Technique

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.

Knowing The Technology

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

Knowing The API

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.

Consider Weirdness Of Technology

Inconsistent Syntax

In Laravel say you want to send data with the view. You have to do is

Return view(‘view’)->with(‘data’, $data);

In view you can access this data by {{$data}}

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.

Wrong Integration Protocol

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.

Data Transfer and Representation

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.

Reading and Writing Programs

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:

➢ Has user data


➢ Has system generated data
➢ will undergo resource allocation
➢ Will have a/many path/s of execution
➢ In case of OOP based software will have an object sequencing i.e. which object goes where and
when
➢ Will have side effects
➢ Will have configurations which contain elements such as files/users/resources and components
such api/libraries/security. Each of these has versioning and dependency. How they are
interconnected depends from software to software.
➢ Will express functionalities by: real functions in code or through design of correct sequencing of
logic such as use cases or activity diagrams. This is the algorithm of the 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?

Software Activity Levels

A software can act:

➢ Asynchronously
➢ In a multithreaded way
➢ In a distributed system

You might also like