Object Oriented Information Systems

Pointers, References & Memory, and Design Patterns

Lecturecast notes

As every Python object includes a reference counter, the data type and the value, the difference between objects is their character of being mutable or immutable. From the three elements mentioned, the value is the only mutable.

The pointers are references (variables containing an address) to the location of a variable in the memory system. C++ uses pointers, while Python does not. C++ is a compiled language, while Python is an interpreted language.

Design Patterns have four elements name, problem, solution, and consequences. Patterns can be of three types, creational, structural and behavioural.


Reflections on the article by Podder et al. (2020) How Green Is Your Software?

The article tells us that digital technologies have recently been worsening environmental problems. This situation is critical as these digital solutions are meant to reduce these problems. Companies can help by considering the software's carbon footprint in the analysis, design and development and also evaluating the data centres where their software run.

Energy consumption by solutions based on trend technologies like AI is increasing exponentially. At this point, companies should consider energy consumption as another parameter during development.

Finally, the article suggests three steps for companies to become more environmentally friendly. Articulate a strategy that guides trade-offs and allows for flexibility, Review and refine the software development life cycle, and Make the cloud green.

We can see the importance of a strategy that can cover all elements and actors in the development and use of the software. Companies need to be aware of energy consumption and set limits. This can require lots of training, and considering the changes within IT teams, it can become a complicated task.

Reviewing and refining the software development life cycle is a process that every company would like to adopt. The cost of using power consumption monitors is not an obstacle to implementing the suggested steps. However, the overall costs can significantly increase depending on the type and size of the software.

As mentioned in the article, modern software is nearly always deployed to the cloud, so focusing on this platform is necessary. The exponential growth of cloud services directly affects energy consumption. Adopting hardware that consumes less energy is simple. However, the cost of migrations, especially in companies that still need automated platforms, can again be a big obstacle.

Overall, the proposed steps to become 'green' are reasonable, but the implementation can face some company resistance.


References
Podder, S., Burden, A., Singh, S. & Maruca, R. (2020) How Green Is Your Software? Available from: https://hbr.org/2020/09/how-green-is-your-software [Accessed 10 April 2023].


Reflections on this unit

The concept of Design patterns was interesting to study as it represents a crucial part of the Object-oriented development approach. This becomes even more important because the main aim of developing software is to provide a solution to a problem, and the Design patterns provide ways to reuse a generic solution to solve many types of problems by adapting them to their context, making possible the reusability. With this idea, it was beneficial to study which Design patterns are used most and their associated advantages and issues when applying them.

Another interesting fact was to find out that Python is an interpreted language, which means that it executes the code directly. As everything in Python is an object, the absence of proper pointers is something that caught my attention. In the end, we found out that one of the three essential elements of an object, the reference counter, acts as a pointer.