Monday 23 May 2016

Obinna Dike, Citi Professional - Benefits of Layered Software Architectural Styles

Obinna Dike, a Citi employee living and working in the Greater New York area, is a software engineer who specializes in software architecture. Professionals like Obinna Dike employ a number of different architectural styles that benefits companies like Citi, ensuring each application is efficient, useful and bug-free.

The layered architectural style groups the functionality of applications into layers that can then be stacked. The order in which the layers are stacked typically dictates functionality, as do the common principles for the design style. These principles include, but are not limited to…
  • Loose Coupling – In a layered application, communications between each layer functions through abstraction and events, which provides loose layer coupling.  
  • Reusability – Because the layers lower in the application are not dependent on higher layers, they can be useful in other application scenarios. Reusable components save time and resources.
  • Cohesion – With well-defined layers, each will contain functionality that is related directly to the tasks of that specific layer. This increases cohesion in the layer itself. 
  • Functional Layers – The division of functionality in each layer within a layered application is clearly defined. With use of commands in upper layers, lower layers can react to events in layers above them, allowing an up and down data flow, increasing functionality.  
  • Abstraction – The use of layered architecture abstracts the system and, at the same time, provides detail that will allow each layer, and its relation to other layers, to be understood on an individual basis. 
Professionals like Obinna Dike of Citi use different architectural styles for different application goals. Examples of when a layered application might be implemented include enterprise web-based applications and line-of-businesses applications.

Monday 16 May 2016

Obinna Dike, Citi Professional - Software Architecture Client/Server Styles

Obinna Dike, a Citi professional, regularly manages software architecture for all manners of applications. Among the many application architectural styles is the client/server style, which is useful when systems involved include separate client and server systems, as well as connecting networks.

The client/server style selected by a software engineer like Obinna Dike is largely dictated by the required functionality of the application in question. Companies like Citi often have a need for several client/server styles so that they can best meet the needs of their business, stakeholders, employees and clients.
A company like Citi might require an engineer to implement one or all of the following client/server styles:

Client-Queue-Client Systems (aka Passive Queue) – This architectural approach opens communications between clients through severs so that files can be synchronized and distributed efficiently. The server’s function is to store data and to act as a queue, also known as a server-based queue.

Peer-to-Peer Applications (P2P) – The P2P design is based on the Client-Queue-Client model. In the P2P model, though, the client and server can swap roles so that information can be synchronized and distributed across multiple clients, which can then extend to request, shared data, resource discovery and more.

Application Servers – An application sever uses specialized architecture that allows the server to host, execute applications and execute services that clients can access through the specific software.

Not all companies like Citi hire professionals like Obinna Dike Citi to create client/server applications – sometimes, the client/server style is irrelevant for the company’s needs and it might require component-based software or a domain-driven design.

Monday 2 May 2016

Obinna Dike, Citi Professional - Software Architecture Design Principles

Obinna Dike, a Citi employee since 2011, is an experienced software engineer with more than a decade in his field. He holds two engineering degrees and, like many others in his field, a large part of his focus is software architecture. Professionals like Citi’s Obinna Dike use software architecture to design and deploy quality, problem-free applications for a number of uses.

Examples of basic design principles as applied to software architecture include:

  • Separate Features – Separating your software into distinct functions with minimized overlap helps increase cohesion. When done incorrectly, however, separating features can lead to high coupling and unwarranted complexity. 
  • Specialize Components – Specializing each module or component ensures that each element is responsible for a defined functionality. This increases application cohesion and functionality. It is taken a step further by applying the principle of least knowledge, meaning that each component should not know internal details of other components. 
  • DRY (Don’t Repeat Yourself) – The DRY rule means that functionality rules and details should not be implemented in more than one component. Duplicate content can lead to confusion, unnecessary complexity and unforeseen issues.  
  • Minimize – Engineers often design only what is necessary, minimizing upfront work. Though some cases do require extensive upfront design and testing to avoid a high risk of failure, it can typically be avoided. In situations where the design is likely to evolve as the application comes together, minimization of upfront design is a matter of efficiency. 

Obinna Dike Citi has worked with Citi for five years, during which he has created a positive reputation, and he hopes to work with the company for many more.