Wednesday, January 9, 2013

Improving Software Quality in 1, 2, 3 & 4!


Quality can’t be simply defined objectively or subjectively. It is not enough to say that a product is of a high quality just because it had met the standards given.  Even though a product produced was made by meeting the standards, it’s possible that the customers’ tastes/standards were not considered thus failing to fulfill customer satisfaction which is in fact the purpose of the product – to satisfy the customers’ needs or wants. However, it is also not enough to define quality subjectively because only fulfilling customer satisfaction will also mean that the quality of your product is contingent on customers’ tastes or levels of satisfaction or standards. Pure contingency is chaotic because you don’t have a solid ground to defend the quality of your product, you don’t have a measurable basis for it. Moreover, as many people said “You cannot improve what you cannot measure”. Thus, to have a high quality product or deliverable, you must able to meet the standards given and fulfill customer satisfaction, and if it’s not possible, then do necessary trade-offs between the two depending on your priority. And to assure the quality of your product, instead of focusing only the product itself, it’s best to focus on the process or the activities within your process. The following are the activities that may help you produce a high quality product/deliverable:


1. Describe your goals explicitly
  • By describing your goals explicitly, the programmers/developers will have a clear understanding of what the client/stakeholders expect from them.  Moreover, this is also helpful to the client/stakeholder for they’ll also know what to expect from the programmers/developers. This also helps the programmers/developers in setting priorities, like what software quality characteristic they should improve or maximize. With this, errors brought by ambiguous/unclear objectives/requirements are avoided or at least minimized, thus producing a product/deliverable which has a quality that is consistent to what is required/specified.


2. Test, test, test!
  • Testing is essential in producing a high quality product/deliverable for it will help minimize bugs. Even as early as during the conceptualization of product, it is better to test if the functions or the design that will be used is correct. Moreover, it also better to test first every little part of a module before integrating them all so that it will be easier and quicker to track and fix bugs.  Moreover, the sooner a bug is found and fixed, the lesser the cost and effort will be.  Thus, in finding a bug in your program, the sooner the better.

  3. Conduct Technical Reviews
  • Although technical reviews take time and energy, it is worth it. With technical reviews, you can gauge the quality of your product at the current stage and determine if it’s good enough to continue to the next stage.  If it’s not yet good enough, then you should improve it until it’s good enough to proceed to the next stage. However, the development process must not be completely frozen because of the reviews. “Good enough” doesn’t necessarily mean that you’re 100% good enough to proceed, it might mean 20% of critical project requirements are met and it depends on the nature of your project if that’s enough for you to proceed to the next stage.


  4. Manage change
  • One of the scariest things in the world is change and it’s inevitable.  Same can be said for the [software] development process, at a certain point of time, there can be changes on the scope of the project or of the architecture/design of the product.  And change always comes with risks. In [software] development process, uncontrolled changes in requirements can result in disruption to design and coding which in turn causes the inconsistencies in the code/design that makes the product/deliverable defective. To avoid this, one must be able to handle change effectively so that there will be no disruption to the development process and thus producing a high quality product.


Source:
McConnell, Steven C. Code Complete, 2nd Edition, Microsoft Press, 2004.



        


Tuesday, December 11, 2012

Capability Maturity Model Integration (CMMI)



         Capability Maturity Model Integration (CMMI) is a model that involves process improvement which is used by many organizations to rate the maturity of their processes. The levels of maturity of the processes are (as shown in Figure 1):  Level 1 – Initial (Chaotic); Level 2 – Repeatable; Level 3 – Defined; Level 4 – Managed; and Level 5 – Optimizing. Moreover, it describes the best practices in managing, measuring and monitoring [software development] processes. However, it mostly describes the processes that should be implemented and not so much on how to implement them.

Figure 1. Maturity Levels and Its Characteristics
               CMMI is CMM (Capability Maturity Model)’s successor and both were developed at the Software Engineering Institute (SEI) at Carnegie Mellon University in Pittsburgh, Pa.  CMMI was made to solve the problem brought by CMM when applied to software development process which is the inefficiency in handling multiple models that are not integrated.
             Lastly, CMMI comes in two representations – staged and continuous. The staged representation is the one the one that groups the process areas into 5 maturity levels and is the representation used to achieve a "CMMI Level Rating" from a SCAMPI appraisal. On the other hand, the continuous representation defines capability levels within each profile. Furthermore, an organization can’t be a CMMI certified but can be a CMMI ‘appraised’ instead.

Questions:
  1. How is integration of multiple models done in CMMI?
  2. Is CMMI’s integration of different models into one framework equally significant to small and large organizations/companies? Why? Why not?
  3. When is a [SCAMPI] appraisal can be done and who conducts it?
  4. Is SCAMPI appraisal equally important to small and large organizations/companies? Why? Why not?
  5. Aside from being able to integrate multiple models into one framework, what makes CMMI better than others?

Sources:
(n.d.). What is Capability Maturity Model Integration? (CMMI).
Retrieved December 11, 2012 from
http://www.selectbs.com/process-maturity/what-is-capability-maturity-model-integration

(n.d.). WHAT IS CMMI?. Retrieved December 11, 2012 from
http://jcse.org.za/cmmi

(n.d.). Capability Maturity Model Integration. Retrieved December 11, 2012 from
http://en.wikipedia.org/wiki/Capability_Maturity_Model_Integration
                                                 

Wednesday, November 21, 2012

What is Quality?



          Watts S. Humprey is known as the “Father of Software Quality”. He was the one who developed the Capability Maturity Model. He earned his Bachelor of Science of in Physics degree from University of Chicago, Master of Science in Physics degree from Illinois Institute of Technology Physics Department, and Master of Business Administration degree from University of Chicago Graduate School of Business. He was previously the Vice President of IBM but he retired in 1986 and joined the Software Engineering Institute located at Carnegie Mellon University in Pittsburgh, Pennsylvania. It is also in that year that the active development of this model began. Due to U.S. Air Force’s request, he began formalizing his Process Maturity Framework which originally aims to help the U.S. Department of Defense in evaluating the capability of software contractors as part of awarding contracts.
          Humphrey used Philip B. Crosby’s Quality Management Maturity Grid as a basis to his framework. What differs Humphrey’s approach from Crosby’s is his unique insight that organizations mature their processes in stages based on solving process problems in a specific order. Thus, although at first his model was intended for the benefit of U.S. Department of Defense, it became a general and powerful tool for understanding and improving general business process performance used by different organizations (e.g. software developers).
           For Watt S. Humphrey, [software] quality refers to achieving excellent levels of fitness for use. It is the result of having good software process management which holds the principle that if the development process is under statistical control, a consistently better result can only be produced by improving the process. And the development process is gauged by maturity levels which is a 5-level process maturity continuum - where the uppermost (5th) level is a notional ideal state where processes would be systematically managed by a combination of process optimization and continuous process improvement. The levels are: Level 1 – Initial (Chaotic) ; Level 2 – Repeatable ; Level 3 – Defined ; Level 4 – Managed; and Level 5 – Optimizing.

PPT Link [Google Docs]: Capability Maturity Model

Sources:
(n.d.). Capability Maturity Model. Retrieved November 21, 2012 from           http://en.wikipedia.org/wiki/Capability_Maturity_Model#Development_at_SEI

(n.d.). Guide to the Software Engineering Body of Knowledge (SWEBOK)Retrieved November 21, 2012 from http://www.computer.org/portal/web/swebok/html/ch11

(n.d.). Watts HumphreyRetrieved November 21, 2012 from http://en.wikipedia.org/wiki/Watts_Humphrey

Humphrey, W. S. (1987). 
Characterizing the Software Process: A Maturity Framework. Retrieved November 21, 2012 from ftp://ftp.sei.cmu.edu/pub/documents/87.reports/pdf/tr11.pdf. 


Wednesday, August 17, 2011

Chapter III link

Chapter III link in insidiousdeath: http://insidiousdeath.wordpress.com/2011/08/17/chapter-iii/

Chapter II (GROUP)

Chapter II

REVIEW OF RELATED LITERATURE AND STUDIES

Parker (n.d.) suggested that the scientists’ basis in measuring time is the movement of heavenly bodies such as the Earth’s rotation on its own axis or the observable changes in sun’s position in the sky. Thus, time is in effect of heavenly bodies’ movements and not of consciousness as suggested by others.

Moreover, according to Pickover Encarta (n.d.), time is classified according to specific condition or effect. It proposed that the commonly used standard time is derived from the 24-equal divisions of Earth’s sphere, otherwise known as the time zones. Furthermore, it also said that dynamical time is based on the Earth’s revolution around the sun together with the motion of the moon and other planets on their respective orbits. Lastly, it defined atomic time, which is considered as the most accurate time, as based from the electromagnetic waves’ frequency that are produced and “absorbed” by particular atoms or molecules under certain conditions. This implies that time is an existence that can be measured and in effect of natural events or occurrences.

To further evaluate the concept of time scientifically, Einstein (as cited in Emerson, 2009) implied in his theory of relativity there is no exact time in which people can base on because time depends on the speed of the object’s motion. In this theory, he stated that how one see or observe the world depends on one’s state motion and is relative to one’s reference point such as object, person or place. He furthermore concluded that an object traveling slowly gets older in a shorter period of time compared to the one which is travelling faster. A person can live up to thousands of years if he/she travels at a speed of light, as Emerson denoted from Einstein’s theory of relativity.

On the other hand, Bergson (1990) contests the idea about time which is “not measurable”. He believes that time is not what observe on our day to day life, like the ticking of the clock, the changing of hours to days, the beating of our hearts and so as everything else in space. Bergson’s idea contradicts to the conventional notions of time as imposed by Einstein and other physicists.

Bergson (1990) added that real time is the experience of a continually occurring event as perceived by an individual. Its indefinite and immeasurable occurrence due to the fact that time cannot be interrupted or categorized into sub domains.

To support his idea, Bergson (1990) stated that the memory in between the past and the present is vital in determining the order of interconnecting events. Without such, one can never find a link between the two different instances. For example, the missing link between the theory of man’s evolution from apes to homo sapiens can never be proven since there is no existing memory that justifies what really happened.

Moreover, Bergson (1990) proposed that time moves in one direction – from past to present to future. We have a glimpse of our future because we perceive it as a product of our current actions. On the other hand, having experienced the past and the present, we achieve absolute certainty. For example, if you are a computer science student, you perceive yourself as programmer in the future, but you can’t change the fact that once in your life, you were a computer science student; we cannot change our past, but we can shape our future.

To complement Bergson’s idea of time based on consciousness, Thomas Mann (n.d.) wrote his understanding of human life into a novel entitled The Magic Mountain. The novel tackles deeply about the relation of time towards every aspect of life such as “illness, religion, world view, life and death”. For him, as presented in his novel, time is something that cannot be measured through distance or space as stated by his character, Hanz, to the character’s cousin, Joachim.

According to Thomas Mann (n.d.), time depends on one’s business. If a person goes to a place just for the first time, he/she feels time as something that runs slowly or normally. However, to those people who keep on doing the same things on the same place in a long period of time, time seems to run faster.

Furthermore, in his novel, Mann (n.d.) implies that there is no time when there is no productivity. Like Joachim, a character in his novel, said that he can’t call his time “time” because he does the same routine everyday and nothing new is produced.

In addition, Mann (n.d.) stated that time changes. Just like when Hanz Castorp arrived, stayed and left, time also did. With Joachim, there is no change in time because he does the same thing everyday. That’s why upon Hanz’ visit, he sees it as a break in the “everlasting monotony” of his place.

To elaborate the concept of time based on consciousness, Thomas Mann (n.d.) stated that we tend to not notice how time changes when we enjoy and love what we are doing if we have someone to do it with even if it’s still the first time we do it in a new place. However, we feel exactly the opposite when we are alone and at the same time, we are in a new place. For example, one person spends his/her summer in the province. Being new to the environment and having no friends at all, time seems to drag as low as a turtle. As what Hanz, a character of Mann’s book Magic Mountain states, “I shall never cease to find it strange that the time seems to go slowly in a new place.”(n. p.) On the other hand, once he/she will have friends to talk to and play with, time seems to run as fast as a rabbit and he/she will not even notice it.

Synthesizing Bergson’s and Mann’s ideas of time, Emerson (2009) stated that experiencing time involves how a movement’s flow is understood. With Bergson’s “concept of the continuity of movement”, he noticed that Thomas Mann partly agreed to this idea and added it in his novel Magic Mountain when Hanz says to his cousin Joachim that time should “flow evenly”, but at the same time, Hanz still accepts that it does not.


Group Members:

Beduya, Lemuel John

Deguit, Mayflor

Lariosa, Lhou Ernestine

Misa, Tatiana Georgia

Peras, Gizelle

Wednesday, August 3, 2011

Notes #6

Trelease’s Observation of Death among Alaskan Indians

Trelease, as cited in Kubler-Ross(1975), observed that death for Alaskan Indians is not the same with common people’s notion that death is like an unexpected thief in the night that no one has been prepared for. On the contrary, Alaskan Indians take an active full participation on their death. It’s as if death is part of the plan for their lives, a choice that was willed and not forced to them. Such participation can be observed on dying Alaskan’s careful planning of his/her death, having celebration of prayers and hymns and bidding goodbye or talking to people they haven’t talked with for a long time. For them, death itself only ends life but not growth of oneself; it is instead the start of the greatest growth of their life ever in understanding, loving and faith.

Source:

Ross, E. K. (1975). Death: The Final Stage of Growth. Englewoods Cliffs, New Jersey: Prentice- Hall Inc.

Entry of: Lemuel John Beduya

insidiousdeath link:http://insidiousdeath.wordpress.com/2011/08/04/notes-6-2/