Showing posts with label software engineering. Show all posts
Showing posts with label software engineering. Show all posts

Thursday, February 18, 2016

[System Engineering] Availability Short Tutorial

For life-critical systems, we usually want to know the quality of service of the system. Among of the metrics, one commonly used is Availability. 

What is Availability?

Availability is a probabilistic metric to measure the percentage that a system is available in a period of time. On the contrary, unavailability is the percentage that a system is not available in a period of time.

How do we calculate Availability?

Since we want to calculate the availability, we need to understand that how much time does the system provide the service.

First let’s define two terms, MTBF and MTTR.

MTBF: Mean Time Between Failure
This is the metric to measure the period of time between two consecutive system failures.

MTTR: Mean Time To Repair
This is the metric to measure the period of time to repair the system from the failure to be back on the service.

The unit of MTBF and MTTR can be a minute, hour, day or any other unit for a period of time.

So, the Availability can be calculated:

                              Availability = (MTBF) / (MTBF+MTTR)

That is the fraction of the time that a system can provide service for a period of time including the time to provide the service and the time to repair the system.

Based on the definition of Availability,
                              Unavailability = 1 - Availability = 1- (MTTR) / (MTBF+MTTR)

How to increase Availability?

As you can see from the definition of Availability, we can either manipulate MTTR or MTBF to increase Availability.

Intuitively, if we decrease the time to repair, MTTR, say MTTR equals 0, then the Availability becomes 100%

                                   MTTF / (MTTF+0) = 100%

That's pretty awesome! However, we understand it is not possible in the real world.

On the other hand, if MTTR remains the same, we increase the MTBF, the impact of MTTR could be even smaller in comparison to MTBR.

To increase the Availability, you can either
     (1) Increase MTBF (make the system more reliable by testing or adding redundancy)
   
     (2) Decrease MTTR (shorten the time to repair)

Summary:


  • Availability is a probabilistic metric to measure the percentage that a system is available in a period time.
                              Availability = (MTBF) / (MTBF+MTTR)

  • MTBF and MTTR
  • Increase Availability by increasing MTBR and decreasing MTTR 

Saturday, December 12, 2015

[Software Engineering] Use Cases versus Requirements - Which one do you need?

Use case and Requirements are used to specify what need to be done in a system but are slightly different.
Use case usually described the need of some people with the sentence:
“As a user, I can…”

On the other hand, requirements usually describe the behavior or criteria a system should provide and the sentence is started with
“The system shall provide…"

The major difference is the perspectives. A use case is used to capture the user’s need. Requirements are used to specify the system’s intention.

In agile development, people use the User Story as the form to describe the system behavior. However, this might be not enough for a developer to implement the system. Think about a user story of an ATM system as below:
“As a user, I can withdraw the cash after login the system successfully”

This user story does not capture the details. Of course, there are other user stories of the ATM, but the point is that user story might not capture enough details from the user’s perspective. The user stories or use cases are needed to be further analyzed to have implementable requirements.

My opinion is that you need both use cases and requirements. Use use cases to capture the user’s need and analyze the use cases to get requirements (both functional requirements or quality requirements). Focus on translating the use cases to the right and implementable requirements. Then, you will have a solid foundation of a successful project.

Labels