Software Requirements…and stuff

As easy as it sounds, software requirements are requirements for software. But let’s dig a little bit deeper. Requirements are not only the functions required, actually this might be the least of the concerns in terms of requirements.  Requirements must surpass all of the client’s expectations.

There’s even a science in charged of this analysis; and it is called Requirement Engineering  its goal is to develop a very very very special and important document called the System Requirements Specification.

It involves mainly four steps, although there are text that claim it to be more than that and they are:

  • Feasibility Study:  This is the initial stage. In this one, the requirement engineer must meet the client in order to talk about the general expectations. Then, he produces a very wide and thorough analysis on the possible constrains, implementation cost, and objectives. It also explores the technical aspects of the project wit the future always in mind.
  • Requirement Gathering: This is the solid, concrete and full list of requirements. Usually, this list contains the explicit requirements and specifications of the project.
  • Software Requirement Specification: This is the formal and official document I talked about in the introduction. This is a natural language document in which all the interactions must be stated. And by all, I mean it. Every single interaction between hardware and software must be in there. Cross-plattform specification, security, limitations, maintainability must be there too.
  • Software Requirement Validation: All the previous was never validated nor analyzed. In this stage, the document is impressively analyzed. All variables are taken into account, feasibility, ethics, security, ambiguities, cost and many others. This is the most important stage, because what is stated in this final revision is what devs are going to work with.

There are several types of requirements, (mainly two, read more

Continue reading "Software Requirements…and stuff"

Software Architecture

 

 

Software Architecture is the way software solutions are structured for all the project itself. Software architecture takes into account all of the aspects. It takes into account performance, security, quality and plenty of other stuff including the requirements asked by the client. Just as in a house or a building, software must have solid foundation. Not taking into account all of the requirements can lead to expensive delays. Delays might be the best-case scenario, because sooner or later, it’s going to be fixed, but if engineers just ignore the  requirements, this can lead to unhappy customers that have poor, lame, and unstable software. Also, your job might be in a risk.

When designing the blueprints of the software you must take into consideration three things, the final user, the company goals, and the platform itself. ic350999And most important, they all have the same weight while taking decisions. There are no biased decisions in this topic. They all weigh the same because each one impacts the others in a certain way. For example, if the system is more complex, we might need the final user interface to be even more friendly due to the business requirements.

When designing the structure, the developers might want to take a look to the following questions.

  • How will the users be using the application
  • How will the application be deployed into production and managed?
  • What are the quality attribute requirements for the application, such as security, performance, concurrency, internationalization, and configuration?
  • How can the application be designed to be flexible and maintainable over time?
  • What are the architectural trends that might impact your application now or after it has been deployed?

When the project team has all of these answered, now, it’s time to begin. Once we all know all of the project

Continue reading "Software Architecture"

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.