What is software architecture?

example:

 

Architecture.jpgSoftware application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.

Like any other complex structure, software must be built on a solid foundation. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long term consequences of key decisions can put your application at risk. Modern tools and platforms help to simplify the task of building applications, but they do not replace the need to design your application carefully, based on your specific scenarios and requirements. The risks exposed by poor architecture include software that is unstable, is unable to support existing or future business requirements, or is difficult to deploy or manage in a production environment.

History of software engineering

Eng.pngFrom its beginnings in the 1960s, writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it.

How best to create high quality software is a separate and controversial problem covering software design principles, so-called «best practices» for writing code, as well as broader management issues such as optimal team size, process, how best to deliver software on time and as quickly as possible, work-place «culture», hiring practices, and so forth. All this falls under the broad rubric of software engineering.

You’ve probably heard of the first widely used programming language — IBM’s Fortran — which was released in 1957 for mathematical and scientific computing. Another, Cobol, was released by the US Department of Defense in 1962 for use in business applications.

Over the following decades, the discipline of programming saw a familiar tension between the scientific thinking of academia, which tended to seek idealized solutions to engineering challenges, and the practical needs of an industry faced with real-life time and cost pressures (and bloated code bases). The early 70’s saw the emergence of key ideas in systems thinking which allowed engineers to break these giant projects into modular (and much more manageable) pieces that communicated via interfaces.

Agile Software Development

Diego Armando Gracia Hinojosa

German Daniel Treviño Taboada

Agile

Este método se enfoca en construir un producto que es capaz de mejorarse constantemente en contrario  a productos que se hacen una vez  y son estáticos y no mejoran. Se agrega flexibilidad y la manera en que lo hace es mejorando un producto hasta tener un demo y sacarlo para recibir feedback de los usuarios y así poder seguir mejorando.

Los requisitos para mejorar un software tienden a cambiar, los usuarios tienden a pedir una característica que a la larga dejan de usar y esto logra ser algo malo ya que es perdida, pero siempre puede verse como que se están tomando en cuenta las ideas.

Otra característica buena que tiene es que hay muy buena comunicación entre quien esta creando el software y quien es el dueño de este. Todo esto con el fin de llegar a dar un buen producto, y , gracias a esto logra que el tiempo para mejorar el producto sea mucho mas hábil y con facilidad.