Testing: a critical phase in SD.

Software testing is a phase of the Software Development Life Cycle that focuses on executing a program and finding bugs. The process should validate and verify that the program meets the functional and non-functional requirements gathered in the first stage of the process.
During testing, the developers should find out if the program meets the technical and business needs that should have guided the design and coding phases. The program should work the way it was expected to and should be able to be implemented in the next stage.

Testing can be done as a process rather that a unique activity. It should take place during the whole software life cycle in small steps, to prevent defects in the code and to verify that the design is being implemented correctly.

Testing must be planned so reports and progress can be documented and the status of a program can be defined and updated. Preparations must be made by selecting conditions and designing test cases.

Static testing can be done without executing the code and it is used to verify the source code and static analysis.

Dynamic testing is done when the code is executed so results can be demonstrated. It is done during validation, some examples are unit testing, integration testing and system testing.


Uploaded by Guru99

Evaluations must be done during the testing phase to check that the needed criteria was met and whether the software passes the needed tests and can now be launched.

Software testing is a necessary part of software development because everyone makes mistakes (we are human after all) and they should be corrected because they may lead to unnecessary risks and expensive corrections. It is good to have someone else check these mistakes because they are more likely to spot these mistakes than the original

?
Continue reading "Testing: a critical phase in SD."

Software Architecture

Software architecture (not to be confused with architecture design) is mostly the externally visible components of a system.

In this phase of the Software Development Life Cycle the main concern is “what” a system should do while software Design is about “how” a system achieves its goals.
Architecture is a higher level of abstraction and it scopes all of the system, not just the modules like in the design.

Architecture is the blueprint for building the design, it aids in understanding how a certain system must behave, it must meet the technical and operational requirements. The structural elements and interfaces of the system are selected to compose the project and they are separated into modules that must later be designed.

Architecture is important because all software must have solid foundations. Common problems or failures must be detected so long term consequences can be avoided.

There are some key things to consider when building a systems architecture:

-User Empowerment
-Market Maturity
-Flexible Design
-Future Trends

Here is a video to understand the difference between software design and architecture:

Uploaded by Software Architect CA

Some software architecture styles are:

-Structure (component-based, layered)
-Shared Memory (data-centric, rule-based)
-Messaging (event-driven, asynchronous messaging)
-Adaptive Systems (plug-ins, Microkernel, reflection)
-Distributed Systems (2-tier, 3-tier, n-tier, peer2peer)

Sources:

Difference between Software Architecture and Software Design

What is Software Architecture?

Software Development Life Cycle

development_life_cycle
https://airbrake.io/blog/insight/what-is-the-software-development-life-cycle

SDLC describes phases that provide a model of software cycles and management. Each phase produces what’s needed for the next phase.

The phases of SDLC are:

  1. Requirement gathering and analysis: This phase is about focusing on stake  holders and business. You must ask: who is going to use the program? how are they gonna use it? what data should be in the system?
  2. Desing: Based on the requirements from the previous phase, this one consists in defining the software architecture, such as the software and hardware requirements.
  3. Implementation/Coding: This is the most important phase and the longest one.
  4. Testing: In this phase you check if the product was made according to the requirements.
  5. Deployment: The project is delivered to the user. This is a beta testing, the user will evaluate the system and find any errors or bugs. Then the developers will debug the program and finally have the official product.
  6. Maintenance: Taking care of the software.

The models of SDLC are:

  1. Waterfall: This is the traditional model, it consists in finishing one phase to being with the next one..
  2. V-Shaped: Is similar to the waterfull, but focuses more in the testing phase.
  3. Incremental: The cycle is divided in iterations. The software development begins in the first iterarions.
  4. Prototyping: Consists in creating several prototypes of an application.
  5. Spiral: It combines the waterfall and prototyping models.
  6. Extreme programming (Agile): It uses the incremental model, also it is based on the collaboration of cross-functional teams.

I think developing software based on these phases is very important to create good quality projects.

Source:


What about the waterfall method?

Briefing:

Known as linear-sequential life cycle model, the waterfall method was the first process model to be introduced. Basically, no further phase can begin if the previous one hasn’t finished. This means that phases never overlap each other.

Model design:

To ensure the success of the project, the waterfall method was the first SDLC to be used. As a Software Development Life Cycle, it divides the process into phases, where the outcome of each phase works as an input for the next phase.

sdlc_waterfall_model

1. Requirements needed for the software to be developed.

2. Requirements are studied, and designing a system.

3. Inputting the design of the system, programs (or units) are created

4. All units are combined into a single system to test the software system.

5. The product is released into the market for customers to buy.

6. Release patches to fix issues in customers systems, enhance the functionality of the product.

Greatest benefits:

It is very simple to use and document. Also, each phase has a specific product and review process. Clearly defined objectives, goals, milestones, purposes, etc. Processes are easily arranged. Each phase is completed one at a time, which ensure success for that specific phase.

References:

  1. http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm

Software Development Life Cycle

In this world, things tend to behave as cycles. We have a new president every 6 years, which it seems, does no difference, but we go through the same process. Every year we start with great promises, and as soon as time goes, we forget them.

Software development is not an exception. Why? Because even the best developed program can fail, not because it’s bad, but because people’s needs change. This scheme tries to generalize development in general: not focusing on details such as roles, time lapses and more. Instead, it breaks software development into 5 simple steps (some sources believe 6 or even 7):

  • Planning: What do you need? How will you develop?
  • Design: Are we using NoSQL this time? Is RoR better than Django? Is a binary tree better than a hash table?
  • Implementation: Coding, coding, coding…
  • Testing: Not only PEBCAKs tend to happen. Let’s prevent the ones in our side.
  • Evolution: This might be the hardest step to explain. Basically, software prepares for the next cycle.

One can notice this pattern in the waterfall method such as in agile development.

flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license
flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license

Software Lifecycle – Waterfall Method

If you remember last week's Software Lifecycle post, at the end I wrote that there are methodologies to follow the steps defined in the SDLC.

Today in this TC1019's express blog post, I will write about the Waterfall Model (WM), a software development methodology. This is a very simple topic.

The WM is called like that because each step is executed lineally and individually, with the output of one step being the input of the other, if you put it in a diagram, it would look like this:
Source
Hence the name waterfall method, it is the most basic and widely used model, also the first one to appear. Its application is recommended when the software requirements are well defined, the project is short and customer input is not usually required. The software definition must be stable.

Here are the advantages and disadvantages of this model:

Advantages
Disadvantages
  • Simple and easy
  • Well-defined stages and deliverables
  • Non-overlapping phases
  • Good for small and well-understood projects.
  • Once finished, the application cannot be changed easily.
  • The product is delivered at the end, no minimum viable product to test.
  • Not good for complex and long-running projects.
  • Specification changes are not easily incorporated.

Hope you learned something today :) 

Sources:
http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm
http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/




Software Lifecycle – Waterfall Method

If you remember last week's Software Lifecycle post, at the end I wrote that there are methodologies to follow the steps defined in the SDLC.

Today in this TC1019's express blog post, I will write about the Waterfall Model (WM), a software development methodology. This is a very simple topic.

The WM is called like that because each step is executed lineally and individually, with the output of one step being the input of the other, if you put it in a diagram, it would look like this:
Source
Hence the name waterfall method, it is the most basic and widely used model, also the first one to appear. Its application is recommended when the software requirements are well defined, the project is short and customer input is not usually required. The software definition must be stable.

Here are the advantages and disadvantages of this model:

Advantages
Disadvantages
  • Simple and easy
  • Well-defined stages and deliverables
  • Non-overlapping phases
  • Good for small and well-understood projects.
  • Once finished, the application cannot be changed easily.
  • The product is delivered at the end, no minimum viable product to test.
  • Not good for complex and long-running projects.
  • Specification changes are not easily incorporated.

Hope you learned something today :) 

Sources:
http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm
http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/




Software Development Life Cycle

sdlc_-_software_development_life_cycle

I just found out that the Software Development Life Cycle has six different phases. I’ll explain them below. The Life Cycle of the software is employed while the software is in its development process. It is also known as “Software Development Process Models”. The phases of the Software Development Life Cycle are the following:

  1. Requirement gathering and analysis
  2. Design
  3. Implementation or coding
  4. Testing
  5. Deployment
  6. Maintenance

(Retrieved from http://istqbexamcertification.com/what-are-the-software-development-life-cycle-sdlc-phases/ ).

  1. Requirement gathering and analysis:

It’s the process in which information regarding the project is investigated. They try to answer these questions to complete the information: Who is going to use the system? How will they use the system?  What data should be input into the system?

2. Design:

System Design creates the draft of the project according to the specifications that were retrieved in phase 1. It is used as a model in order to be used in the following phases.

3. Implementation or coding:

With the new model, software engineers start to code. They are divided in teams in order to fill the different areas of coding.

4. Testing:

When code is finished, the testing phase starts. Here, they can track bugs or see if they followed all the requirements established in phase 1.

5. Development:

When testing phase finishes, the product is delivered to the customer.

6. Maintenance:

Customer finds some bugs and the team needs to give maintenance to the product constantly.

 

 


There’s a cycle for Software too…!!!

I don’t know why everything in this life has a cycle, but anyway, I will talk about another cycle in this blog. The Software Development Life Cycle! ??????

sdlc_stagesThis cycle is used in the software industry to develop high quality products and at the same time satisfy the client. Basically it consists on planing ahead everything, so the work could be done easily.
The basic steps are:

  • Planning: it shows only the technical approaches of the future program.
  • Defining: this process meant to document every requirement.
  • Designing: as the name said, it’s to design the architecture of the software.
  • Building: here is where the developement starts, by starting to build the software.
  • Testing: by testing the software, you will have an answer and opinions of it.
  • Deployment: finally you deliver the product and maintain it.

 

Want to know more about software development? CLICK HERE

 

Resources:

http://www.tutorialspoint.com/sdlc/sdlc_overview.htm

https://www-01.ibm.com/software/support/lifecycle/


Waterfall Development

Just as ASD (Agile Software Development), the waterfall model for software development gets the job done. The question is: How?  Unlike ASD development, this methodology is sequential, you can’t skip one step just like that, you’ll need thousands of reasons to do it. Waterfalls always flow from top to bottom, and it is the same way in the technical concept.  There are five main stages in the waterfall methodology:plainicon-com-45868-512px

  • Requirements
  • Design
  • Implementation
  • Verification
  • Maintenance

As you can see, the stages are basically the same as in ASD. But the difference is that it is sequential. In this context, sequential means much more than just a structure. It paves the way of the development. I consider this methodology to be excessively sequential. When an stage is over or completed, once you step on the next phase, you never go back. That means that in order to step into the design phase, the project requirements must be heavily specified, because as I said, there is no turning back.

There are a few situations in which is better to use Waterfall methodology, according to Base36 Inc., these are the top three situations:

1. When there is a clear picture of what the final product should be.

2. When clients won’t have the ability to change the scope of the project once it has begun.

3. When definition, not speed, is key to success.

Credits to: PlainIcon.com and WallPaperSafari.com