Author Archives: giri7818

INTERNET, SOFTWARE ARCHITECTURES AND DESIGN PATTERNS

Today, most of us around the world are familiar with the internet. This is all possible due to the advent of internet architecture. Enterprises that developed Information Systems can easily get data or send data using this internet architecture. Legacy systems/Information Systems that are being used by the enterprises today are developed with the help of software architects who apply suitable architectures. Moreover, their architecture is determined by various forces within the organization and outside. In the early 1960’s the object oriented programming concepts were developed, since then it has been growing and has a plethora of advantages. Furthermore, this lead to the innovation of design patterns, which is a convenient way of addressing an object-oriented design solution. According to Christopher Alexander, “The elements of this language are entities called patterns. Each pattern describes a problem that occurs over and over again in our environment and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.”  (Wikipedia, 2014).

Initially the internet architecture was developed for the defense purposes of the United States Military, therefore they had set some basic goals in order to make it efficient and be able to connect to a plenty of networks. For this architecture packet switching was implemented. Since it was being built for defense purposes the cost wasn’t taken into consideration. Some of their fundamental goals were that, the internet connection must prevail in the event of loss of gateways or networks; In addition, the internet must also support other types of communication services et al., The other important consideration was the endurance that was built into it in case of a failure. This internet architecture could also support a variety of service due to the splitting of TCP (Transmission Control Protocol) and IP (Internet Protocol). The use of datagrams in the internet architecture helped in achieving some of its important goals (Clark, 1988).

Mr. Alistair Cockburn in his article “The Interaction of Social Issues and Software Architecture” discusses the various forces and counter forces that influence a software architecture. Based on these forces, Mr. Cockburn came up with some principles and design decisions. One of the principle patterns of interest to me was the “Owner per Deliverable” (Cockburn, 1996); hence by implementing this principle-pattern one can guard the system from gray areas as there would be an owner who will take responsibility and maintain that sub-system. If one follows the design principles mentioned in this article they would be able to design a flawless information system.

Design Pattern can be used to build reusable software (Gamma et al., n.d.).  In the paper written by Erich Gamma et al., design patterns are considered “micro architectures” that provide for the overall system architecture. The design patterns have been categorized based on their characteristics in this article. Design Patterns can be distinguished into creational; deals with the process of object creation, Structural; deals with the composition of classes and behavioral; deals with the interaction between classes (Gamma et al., n.d.). Design pattern cut down on the work required to understand a library of classes. Thus, one shouldn’t aimlessly implement design patterns; this can lead to convoluted software systems (Gamma et al., n.d.).

IS AGILE GOOD? OR A SCOURGE?

Agile Development focuses on the end product rather than the documentation. In this approach, the frequent user involvement during the construction phase can result in “scope creep”. Sometimes users keep asking for additional changes, thereby resulting in an exponential increase in the workload of the developers (Barrett, 2012). This in turn results in administration problems during the construction phase. Moreover, agile method does not pin down the cost of the project during the inception phase. The decision making is based on fictitious data that covers each iteration in the Agile Model.

Due to the frequent user involvement in Agile Development one cannot foresee what the output of the project is going to be. Therefore fixing the cost for the project and even scheduling the project becomes laborious (Waters, 2007). Documentation is done during the transition phase. Due to the variable scope in Agile Development, documentation is challenging. In addition whenever a new feature has been added based on an user request; the documentation team must be briefed about the change. Miscommunications between the Development, Test and documentation team can lead to out of date user manuals, functional requirements et al (Barrett, 2012). Agilists feel that documentation must also been done during the construction life cycle of the project (Ambler et al., 2012).

In Agile Methodology products are delivered frequently and each feature needs to be signed off; this makes the UAT testing lengthy and cumbersome, moreover this also requires that resources at the product owner’s end are available when there is a release. During the construction phase testing is done for each iteration, furthermore testing resources are needed throughout the construction iterations of the project resulting in higher costs (Waters, 2007). This phase is lengthy but it removes all the risks that would result in a failure of the project.

Agile methodology is developer centric and focuses on the working software and sometimes even overlooking the strategic goals that needs to be decided during the inception phase of the project (Goldsbury, 2010). The project can also derail if the customer is not clear about the result. In addition only Senior Developers are key decision makers regarding the course of the project rather than the management. Thereby, resulting in frequent architectural repetitions that affects the project schedule. These issues can be avoided if the project management gets involved in the project and stays up to date with the project by using the appropriate agile software tools.

The other area of concern is the daily standup meetings which runs for hours. This can sometime affect the work schedules of the developers, QA specialists and Analysts (Barrett, 2012). The frequent iteration also results in developer burnouts which takes a toll in the project outcomes. These issues that occur during the construction phase can be overcome if there is a proper design in place, and when the teams are well connected by communicating with each other. Agile must be adopted for projects that are developed incrementally.

BIG DATA

Big Data can be defined as a process of working with monolithic data sets with an analytic insight to it. In today’s world of “Internet of Things” and with the advanced network bandwidth; information is being transmitted at a higher velocity. I believe Big Data is the solution for enterprise’s looking to gain an upper hand in extracting the information stored in these data sets efficiently eliminating gray areas. A lot of people have started adapting to e-commerce, and hence data obtained from these customers over a period is humongous. Furthermore, with the changing landscape of technology and emergence of software architectures like Hadoop, data is being pulled from various legacy systems within an enterprise and also can be stored in economical hardware. Companies like Amazon and Google have already ascended in the realm of Big Data, I believe that with the advancement in technology and especially social networks, there would be an upsurge in the amount of data that is being transmitted and concepts like machine learning would determine the future course.

PERSONAL EMAIL ON BUSINESS SYSTEMS

According to me, usage of work email for personal use is fine unless it is within the tolerance limit of the company, I wouldn’t mind sending a personal e-mail in case of an emergency. Work  e-mail can also be used to organize team bonding sessions or even wish someone on their birthday which I feel is within the tolerance limit. The only thing I find wrong is when people use it to send inappropriate content which affects harmony within a team and sometimes even create disputes between team members. In one scenario there was a case where employees used e-mail for football betting, which I feel is wrong and affects one’s productivity during work. I also feel that the company has the right to view our personal e-mail whenever they want, since all our data are stored in the organization’s server/equipment. Hence, before sending an e-mail one should be aware and take time to assess the content of the mail. According to a survey conducted by American Management Association (Fahmy, 2009), “more than quarter of companies have fired their employees for misusing e-mail and one third have fired employees for misusing the internet”. Moreover, Jonathan Ezor, Professor of Law and Technology at Touro Law Center says that the law gives employer the privilege to look into information sent by their employees using work equipments such as work mobile, PDA and laptops (Fahmy, 2009). As a law abiding citizen one should hence be aware when sending any personal content using company equipments.

MOONLIGHTING PROGRAMMER

The issue here is when employees use organizational property for their personal gains, which I feel goes against my moral values. By doing this, not only is one ripping off their organization; moreover, whatever they do using it belongs to the organization. The organization also has the right to sue the employee responsible. By pursuing such a deed the employee would later be tempted to develop a product or solution that rivals his/her organization’s solution. This also poses a financial and security risk to the company which has trained the employee. The organization must also have their policies updated frequently with the changing landscape of technology. Organizations that have proper policies in place consider this action as an act of fraud. If the employee has any questions about the usage of company property; one should approach his/her manager or HR and get the necessary clarifications. When an employee works on a personal project using a company’s infrastructure, I believe that the employee is taking advantage of the organization’s proprietary and intellectual information which according to me is considered misappropriate and plagiarizing.