Wednesday 8 February 2017

10 Concepts Every Software Engineer Needs to Know

1 Interfaces
The interface is the most important concept in software. When developing software, it is necessary to model the problems as simple as possible and to present simple and clear interfaces to these models as much as possible.

2 Rules and Templates
Naming conventions and templates are the most important and most important design patterns.
Naming conventions require that all naming conventions used while the software is developed are based on common rules. For example, the java component JUnit recognizes test methods through the test word at the beginning of their names.

Templates are related to making the representations of the data independent of the data. For example, XSL templates are used to represent XML data.
3 Layered Architecture
Layered architecture means that the components required for the operation of a software must be structured in a pyramid. The operation of the component on each layer of the pyramid may depend on the components that are under it, but not on its own.
There are two good sources, Structure 101 and SA4J, for which information can be obtained.
4 Algorithmic Complexity Level
The level of complexity, which is very commonly expressed in terms of large O letter notation, determines the speed of an algorithm according to the amount of data it processes. For example, if an algorithm expressed by O (n) operates on n data times, 2n data on 2t times. The algorithm, expressed as O (n ^ 2), processes n times of data at time t and processes 2n times of data t at time t. When the amount of data processed is too large, the complexity of the algorithm that processes them becomes very important.
5 Hashing
Hashing is another way to get to the data quickly. In this method, a shorter data is generated by looking at the contents of each data and this short data is used as an index. Searching within the Index is also much faster.
When hashing, it takes a different specialization to ensure that each hash has a different hash code and that these hash codes can be used to make the fastest possible access as easy as possible.
6 Caching
The caching of gentle sleep, called caching, means that the most commonly used data stored in the database is retrieved and quickly used from where it can be quickly accessed. For example, if you have a book site and you have a section that lists popular books from last week, you can calculate this data once every week instead of calculating it whenever you need it, save it in a convenient place, and read it from there when you need it.
Since keeping the entire cache of data in memory is a costly process, choosing the methods to select the data to be kept in memory still requires expertise.
Many modern applications, including Facebook, use a system called memcached developed by Brad Firzpatrick.
7 Synchronization
Concurrency is related to the execution of a program in multiple jobs at the same time. For example, applications written in java use threads for this.
The manufacturer / consumer model is a typical example. The producer part produces the data to be processed continuously and the consumer part continuously receives and processes this data. These two parts are working at the same time. Although each thread has its own operating logic, threads are using the same and shared data, so it takes expertise to work out what they can do while working. One of the most complex thread libraries is produced by Doug Lea, and is located in the Java kernel.
8 Cloud Computing
Cloud Computing is a method developed from parallel programming based on the principle of running more than one computer at the same time to make a job faster. The services that can be utilized are based on changing parameters such as time, user density, etc.
9 Security
As the hacking events and data security become more important, security information is also increasing. Data security; User management, authorization and information transfer.
User management is related to the fact that in a system each user is associated with information that interests him or herself and can not see the information of other users. Authorization is only relevant to users being able to do the allowed actions. It concerns more companies and systems with workflows. The newly developed OAuth protocol helps to provide security in web services. This system uses flickr.
10 Associative Databases
Relational databases are not popular recently because they perform poorly on very large web services. But the software world will continue to use them for a longer time. In relational databases, the data is stored as records on tables and is usually queried with the language called SQL. SQL has nice capabilities like adding, deleting, updating, filtering, and bringing together data from multiple tables.
Relational data