Object Oriented Information Systems

An Introduction to Python Programming and the OO Programming Paradigm

A discussion on the article by Padhy et al. (2018), State-of-the-Art Object-Oriented Metrics and Its Reusability: A Decade Review

Reusable components have to be provided to produce a quality software product (Padhy et al., 2018). From there, the aim of prioritising the identified assets is to find the ones that can contribute the most to the reusability rather than focusing on what comes first in the Software development life cycle (SDLC). It is essential to mention that these assets are relative to each type of project, so the order of the factors is also relative.

With this in mind, I prioritise the provided list in the following way.

1. Use in the Data. As this asset is extracted from the whole SDLC, it can significantly impact the processing time and increase the software's quality.

2. Knowledge Requirement. The experience and knowledge accumulated from developing other projects can significantly contribute to quality and efficiency.

3. Requirement Analysis. Depending on the type of project, this stage can take up to 10% of the time spent developing a piece of software. As the first stage of every software development project, every reusable element will reduce the time of analysing requirements and provide a significant advantage.

4. Planning stage. Knowing which planning techniques would work for a specific type of project can reduce the time spent in this stage. Building the team and planning costs can take time.

5. Test Cases / Test Design. The reusability of algorithms and modules will depend on the test results.

6. Architecture-driven approach. Using the structure of a preexisting project can lead to significant savings in efforts. However, as mentioned before, every project is different, which sometimes makes it very difficult to reuse the whole structure of a previous project.

Although all the presented assets are important, the above six are essential.

References
Padhy, N., Satapathy, S., & Singh, R.P. (2018) 'State-of-the-Art Object-Oriented Metrics and Its Reusability: A Decade Review', in: Satapathy S., Bhateja V., Das S. (eds) Smart Computing and Informatics. Smart Innovation, Systems and Technologies. 77. Springer.

Summary post on the article by Padhy et al. (2018), State-of-the-Art Object-Oriented Metrics and Its Reusability: A Decade Review

After posting my initial thoughts about the ranking presented by Padhy et al. (2018) and reading the feedback provided by fellow students, one thing is almost inevitable: the relative element when deciding which asset should take priority. As mentioned in my first post, in the real world, a team's projects can be very similar, similar or different. So the criteria I took to create my ranking were based on usability, of course, but also on the assets present across the Software development life cycle. Moreover on, how much will these assets affect each stage?

Reducing maintenance costs and saving time are essential tasks (Padhy et al., 2018). If this is an important aim, although an asset can be reusable, the question is how reusable it is to justify its use against starting from scratch.

An important question asked by a fellow student was why Arquitecture-driven approach had a low rating on my list. Architectural patterns define the structure of the whole project. However, the question was, how many of those architectural patterns were created to support the development of specific features? This condition inevitably takes us back to the relativity of the project.

References
Padhy, N., Satapathy, S., & Singh, R.P. (2018) 'State-of-the-Art Object-Oriented Metrics and Its Reusability: A Decade Review', in: Satapathy S., Bhateja V., Das S. (eds) Smart Computing and Informatics. Smart Innovation, Systems and Technologies. 77. Springer.


Discussion on the article by Di Silvestro & Nadir (2021), The Power of ePortfolio Development to Foster Reflective and Deeper Learning in an Online Graduate Adult Education Program

The main question to resolve in this research was if an e-portfolio could be a workspace for deeper learning. The focus was on students with online degrees.

From the answers the authors found during the research, I could imagine answers related to knowledge, personal growth, and working through reflection, meaning that the students learn by reflecting on their own experiences. One thing that was unexpected as an answer was the fact that students believe the use of e-portfolios drove them to a greater self-discovery. This answer is significant, considering that one aspect of self-discovery is establishing our priorities based on our confidence when we do an activity.

In my opinion, and as mentioned in the article, collaboration is important. The sense of responsibility to create something in our words while learning through the course increases confidence and provides an engine to keep improving.

Reaffirmation about what we are doing is a powerful tool that allows us to continue this journey.


A Python program that uses protected and unprotected variables within it.

class Brand:
   pass

   def __init__(self, name):
      self._name = name

   def get_name(self):
      return self._name

   def mod_name(self, name):
      self._name = name

   def display(self):
      print(self._name)


b = Brand('Alicorp')
print(b._name) #Alicorp
b._name = 'Gloria'
print(b._name) #Gloria

#It is not impossible to modify the protected property

# Declaring Product class, sub-class of Brand

class Product(Brand): # Inherits properties and methods of Brand
   pass

   def __init__(self, name, brand_name):
      self.name = name

      Brand.__init__(self, brand_name)

p = Product('Butter', 'Nestle')

# calling a function of the class Person using its instance
p.display()

#Alicorp #Gloria #Nestle



Conclussion
In Python, protected attributes (variables) are more a convention than a requirement. It is expected that the programmers will respect the name convention (_) that indicates that protected attributes shouldn't be accessed from outside their class or without using inheritance.