Software Quality Testing

Quality is not only for handcrafts and arts, it is also involved in software engineering. Apparently, quality might be something quite immeasurable, but in reality, there are several ways to measure it in software. To accomplish this, there are mainly two methods for testing quality: defect and attributes. The latter being the most popular.

The defects approach is focused on determining the quality by counting the amount of defects, failure or lack of requirements. They are measured by their severity, likeliness to happen, and damage implications of the defect.

On the other hand, the attributes method focuses more on features and development quality itself. This method takes into consideration five main software characteristics:

  • Effectiveness
  • Efficiency
  • Satisfaction
  • Safety
  • Usability

Each one of them provides an insight on how each category performs throughout runtime process.

Software Quality Testing is one of the most important steps before releasing a new product. This phase marks the success of the product, because the testers are commonly the end user.


What is SCM?

Great post about SCM

Julia

barcelona-sprint-1What

Configuration management refers to a discipline for evaluating, coordinating, approving or disapproving, and implementing changes in artifacts that are used to construct and maintain software systems.
According to the
Technopedia
SCM helps in i
dentifying individual elements and configurations, tracking changes, and version selection, control, and baselining. One of the most widely used SCM is
Git
, created by Linus Tovalds in 2005.

Why

How
• Identify and store artifacts in a secure repository.
• Control and audit changes to artifacts.
• Organize versioned artifacts into versioned components.
• Organize versioned components and subsystems into versioned subsystems.
• Create baselines at project milestones.
• Record and track requests for change.
• Organize and integrate consistent sets of versions using activities.
• Maintain stable and consistent workspaces.
• Support concurrent changes to artifacts and components.
• Integrated early and often.
• Ensure reproducibility of software builds
(Pearson, https://www.pearsonhighered.com/samplechapter/0321200195.pdf)

figure_08Why is…

View original post 92 more words


Software Requirements

As in every task or homework, and even a hobby, there are requirements to follow. However, in software development, we have two main type of requirements: functional and non-functional. The concept is defined within itself, but instead of going meta, I’ll explain it for you.

Functional requirements are requests for specific functions or features, and non-functional requirements are additional characteristics for the software such as added security, efficiency and some other features that might be useful.

If you still have questions, do not hesitate on watching this cool video from Udacity tutors.


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


Software Development Processes

A software development process or life cycle is a structure imposed on the development of a software product. There are several models for such processes, each one of them describing an approach to a variety of tasks or activities that take place during the development process. There are different points of view depending on the customer’s and project needs.

For example, the Capability Maturity Model, is focused on how mature the software is. Then there is the agile development process, which I described here. Another one is called the waterfall process, which you can read in here, too.

There are tons of SDPs that you can use in order to successfully complete a project. You can choose between them by establishing priorities depending not only on your customer, but also taking into account you and your team’s working style.


Agile Development

In 2001, 17 software developers met at Utah to put together ideas they had on lightweight development methods. They agreed on 12 Principles that turned into “The Agile Manifesto”.

Agile software development is about doing things based in short term plans instead of spending a lot of time planning a big strategy. According to the Agile Manifesto individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan.

Scrum is the most common approach to agile development. It’s an alternative to the traditional waterfall method, as each process isn’t dependant on its previous process. All processes happen at the same time, quickly and in an interconnected, multifunctional matter. Then, after all processes are done, analysis and conclusions are reached and a whole set of new interactions can start.

If you want to know more about scrum you can watch the following video:

Agile development provides a way to know the direction of a project THROUGHOUT the development cycle, not before.

By: Carlos Martell and Lucía Velasco.


Agile Software Development

Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto.
Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context.

  • The satisfaction of the customer must be guaranteed throughout all the development process.
  • Change is a key of the ASD, developers must be capable of changing and adapting to the customer’s needs.
  • Deliver new releases frequently.
  • A friendly environment must be present between business people and the devteam.
  • Promote motivation among all individuals involved.
  • In order to be efficient, the communication must be face-to-face.
  • Progress is measured by stable and working releases.
  • There must be sustainable development by keeping a constant pace between sponsors, developers and users.
  • There is constant attention to provide technical excellence.
  • Keep things simple.Period.
  • The devteam must be sustainable and self-organizing.
  • Everyone involved learns from their mistakes and move on.

As everything in this world, ASD was criticised. There was an anti-agile movement called the Dark Manifesto for ASD. You can read it here.

It was also heavily criticised by Aaron Gray because of the working environment of ASD, in this critic, the author establishes that people is not always willing to work, or the team might not be so motivated to work in a team, and rather prefer to work alone.  The biggest argument is that programming or coding is not measurable, because of the environment uncertainty.

Written by Miguel Cabral and Juan Pablo Ramírez

 

 

 


The Software Lifecycle

As everything in this planet, software also has a certain lifecycle. It is commonly composed of five main stages. Each of the stages has an specific purpose. There are several diagrams of the software lifecycle, most of them have more than five stages. But the way they are categorized, results in the five main categories. Which are the following:

  • Analysis of requirements:
    • This phase involves the relation between the development team and the customer. During this phase the project team builds a quick draft according to the customers’ needs.
  • Design
    • During this stage of the cycle, the project team is in charge of establishing requirements, protocols and more technical stuff. It also involves the planning of the following stages troughout a timeline based on customers’ requirement.
  • Implementation
    • This is where most of the projects takes place. Troughout this stage, the software is being built and, sometimes, shown to the customers in order to show progress and also to check that everything is in order.
  • Testing
    • When implementation is finished, tests must be held in order to check that it complies with every initial requirement. During these period, there are two main testing stages, alpha and beta testing.
      During alpha testing, the software is only deployed locally with the dev-team. Once the software finishes with the alpha testing, it proceeds to beta testing. The latter involves a public distribution of the software, during these tests, the release is much more stable, but it is intended to obtain more feedback about bugs, and overall performance.
  • Evolution
    • In this last stage, the software is updated with new features or bug removals. This evolution must be in accordance the different growing requirements of the customer.

It is really important that these five steps are repeated the way a cycle does. Every evolution or a new

sdlc-gone-wrong
Continue reading "The Software Lifecycle"

What is software engineering?

Web

Image from: http://www.emarketingeye.com/senior-software-engineer-software-engineer-job-code-eme0018.html

What is software engineering?

  • Software Engineering is applaying the principles of the engineering to the software development. Institute of Electrical and Electronics Engineers (IEEE).
  • Software Engineering for me is  resolving problems developing software efficiently and satisfy all the requirements that the people want.

Is it a craft or an engineering discipline? Neither? Both?

  • I think that it can be both, because you combine the problems and the creativity to resolve that problems that include hardware, math, science, etc. I think that developing sotware is like making poetry.

 

 

 

links to the information:


Ethics & computer engineering

According to one of the most recognized organizations among software and engineering, the ACM (Association for Computing Machinery), the interests develpers have must meet public interests. Relationships between these two must always have consistency meet public interests as well. Besides this, the product being under development should always be based on professional standards as possible.

Integrity is a key element, engineers work should maintain integrity and independence.

coding macbook

 

Besides this, we had a disscussion in class, which will be linked at the end of this post for more information.

Main source here

Class Discussion