What is software architecture?

Software 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 (Microsoft, 2009).

Systems should be designed with consideration for the user, the system (the IT infrastructure), and the business goals. For each of these areas, you should outline key scenarios and identify important quality attributes (for example, reliability or scalability) and key areas of satisfaction and dissatisfaction. Where possible, develop and consider metrics that measure success in each of these areas (Microsoft, 2009).
wk_archt_rt
(IBM, 2010).

This short video will show you how architects focus on failure risks and build models that allow them to reason about their designs.

References:

IBM. (20 May 2010). Role: Software Architect. Retrieved from: http://files.defcon.no/RUP/process/workers/wk_archt.htm

Microsoft. (October 2009). Microsoft Application Architecture Guide. 2nd Edition. Retrieved from: https://msdn.microsoft.com/en-us/library/ee658098.aspx


What is software design?

Software design is a process of defining the architecture, components, interfaces, and other characteristics of a system or component and planning for a software solution. After the purpose and specifications of software is determined, software developers will design or employ designers to develop a plan for a solution (archive.cnx.org, n.d).

Developing software involves many important steps and phases, just as any product does. The product’s efficacy, the customer’s satisfaction, and the cost-effectiveness are all as important as they are for any developed hardware product, and are likewise reliant on a multi-stepped and sometimes complicated process. The actual design, which can be thought of as a blue print, cannot begin until the requirements are determined. Software requirements documents help determine what the software must accomplish. After this step, the actual design is done, and then the coding can take place, after which testing, debugging, and maintenance occur (“Software design”, n.d., para 1).

archive.cnx.org

We can see software design in three main levels:

  • Architectural Design – The architectural design is the highest abstract version of the system. It identifies the software as a system with many components interacting with each other (Tutorialspoint, n.d.).
  • High-level Design-  Focuses on how the system along with all of its components can be implemented in forms of modules. It recognizes modular structure of each sub-system and their relation and interaction among each other(Tutorialspoint, n.d.)..
  • Detailed Design- It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules(Tutorialspoint, n.d.).

Software Architecture & Design | Udacity

References

archive.cnx.org. (n.d.) Software Design. archive.cnx.org. Retrieved from: http://archive.cnx.org/contents/ac67c233-feb5-45fa-a49d-078899b6408b@3/software-design

“Software design”. (n.d.) What Do Software Designers Do? & How Does

Continue reading "What is software design?"

Unified Modeling Language (UML)

UML is a modeling language used in software engineering that helps by providing a standard and organized way to visualize the design of a system. It was created with the intention of standardizing the diverse notational systems of software design.
uml_logo
Large applications must have a great structure so they can work succesfully under stressful conditions; they should enable scalability and high level security. Also their structure should be simple enough so that any programmer can be able to address any given problem within the code without having to learn how to give specific maintenance to that certain piece of code, also it enables code reuse.
UML’s capability to adapt allows you to use it in code programmed in any type of programming language, operating system, combination of hardware and network. It is specially useful in languages such as C++, Java and C#; but it works as well with COBOL, VB or Fortarn.
“Some tools on the market execute UML models typically in one of two ways: some tools execute your model interpretively in a way that lets you confirm that it really does would you want but without the scalability and speed that you need in your deployed application. Other tools […] generate program language code from UML, producing most of a bug-free, deployable application that runs quickly if the code generator incorporates best-practice scalable patterns […]” (Object Management Group, 2005).
With UML you can model:
– Structure Diagrams
– Behavior Diagrams
– Interaction Diagrams
2000px-use_case_restaurant_model-svg
If you want to start a UML based project you have to follow 3 simple steps:
1.- Select a Methodology (There are many types of methodologies; there are probably some that fit with what you want to do but others that don’t. It is important to pick the right one)

Software requirements

The software requirements are description of features and functionalities of the target system. Requirements convey the expectations of users from the software product. The requirements can be obvious or hidden, known or unknown, expected or unexpected from client’s point of view (Tutorialspoint).

For assessing user requirements, an SRS (Software Requirement Specification) document is created whereas for coding and implementation, there is a need of more specific and detailed requirements in software terms. The output of this process can directly be used into implementation in programming languages (Behera).

srs

 

References:
Tutorialspoint.(n.d.). Software Requirements. Retrieved from: https://www.tutorialspoint.com/software_engineering/software_requirements.htm.
Behera, H.S. (n.d.). Lecture Notes on Software Engineering. Retrieved from: http://www.vssut.ac.in/lecture_notes/lecture1422914635.pdf.
Borlandvideo. (21 May 2009). Requirements Definition: Bringing Software Requirements to Life. Retrieved from: https://www.youtube.com/watch?v=fHjc3cJ6m00.


How to access Spotify Web API

This week in #TC1019 class we will be talking about APIs; they are, as API Evangelist said:

At their most basic level, allows applications to talk to other applications, but they are so much more than this when you begin to explore the world of APIs further.

Kin Lane, the author, made an exceptional work writing down why these programs are important for our actual life and for the future. In his book “API 101” situates the topic and explain their many functionalities.

Just to give an example of how quickly can we (or at least a beginner of programming) can access an API of a popular website. Spotify is a leading music streaming provider, which allows users to listen to music using an internet connection.

On its web page, you can find on the bottom a section called “communities” and a link of the developers front page. There you can find an access for the Spotify Web API explanation

Captura de pantalla 2016-09-06 a las 9.22.48 a.m.

You can look for examples or you can read the well-documented information of the web API. If you want action right now, simply copy these lines of code I made:

<!doctype html>
<html>
<head>
<meta charset=”UTF-8″>
<title>JSON</title>
https://code.jquery.com/jquery-1.10.2.js
</head>
<body>

$( document ).ready(function() {
$(“#artista”).keyup(function(event){
if(event.keyCode == 13){
$(“#buscar1”).click();
}
});
$(“#buscar1”).click(function(){
var artista = $(‘input:text[id=artista]’).val();
document.getElementById(“artista”).value=””;
console.log(artista);
$.getJSON( “https://api.spotify.com/v1/search?q=”+artista+”&type=artist&#8221;,
function(datos){
var imagen = ““;
var nombre = datos.artists.items[0].name;
$( “#nombre” ).html(nombre);
$( “#imagen” ).html(imagen);
});
});
});

<center>
<h3>Ingrese el nombre de un artista</h3>
<input type=”text” size=”35″ id=”artista”><br>
<button id=”buscar1″>Buscar</button>
<br>
<h1>

</h1>

</center>
</body>
</html>

Save the file as .HTML and you will have a page where you can find any artist on the Spotify data base.


Waterfall method

The waterfall model is a sequential design process, often used in software development processes, where progress is seen as flowing steadily downwards (like a waterfall).

forest-trees-waterfall

Waterfall projects value:

  • Processes and tools over Individuals and interactions;
  • Comprehensive documentation over working products;
  • Contract negotiation over customer collaboration;
  • Following a plan over responding to change.
large
Diagram made by BBC Bitesize

The Waterfall method does have certain advantages, including:

  • Design errors are captured before any software is written saving time during the implementation phase.
  • Excellent technical documentation is part of the deliverables and it is easier for new programmers to get up to speed during the maintenance phase.
  • The approach is very structured and it is easier to measure progress by reference to clearly defined milestones.

Unfortunately, the Waterfall method carries with it quite a few disadvantages, such as:

  • Clients will often find it difficult to state their requirements at the abstract level of a functional specification and will only fully appreciate what is needed when the application is delivered.  It then becomes very difficult (and expensive) to re-engineer the application.
  • The model does not cater for the possibility of requirements changing during the development cycle.
References:

What is SCM?

Check out the Julia’s blog about Software Configuration Management that I collaborate with

Julia's Blog

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 Pioneer: Tim Berners-Lee

bernerslee-404_682192c

“The Web is now philosophical engineering. Physics and the Web are both about the relationship between the small and the large”
– Tim Berners-Lee
Sir Timothy John Berners-Lee is an english computer scientist who was born on June 8th 1955. Timothy Berners-Lee, best known as TimBL, studied a physics degree in Oxford University to then start working as an engineer for CERN, where he noticed there was an issue in the way they shared information.

Agility on Methodology

Being agile means developing the capability to respond in a creative and successful way to sudden change in any type of environment, even if it is in the worst case scenarios.

In order to put this skill into practice, you can follow the twelve principles behind the Agile Manifesto. First of all, it is an obligation to give the client substantial maintenance which implies giving constant delivery and high quality software. One of the strongest points of this methodology is about being able to obtain and digest constructive reviews from your clients by which you can create a logical and descriptive improvement. It is important to, no matter what, get the job done; you and your whole team must be motivated enough to push your limits and accomplish whatever you want.

“Working Software is the primary measure of progress”

Each process must be self sustainable; you must have in consideration a global image of the work, this turns into a great idea, but it is more important to keep a constant pace among your work. In this methodology, simplicity means the art of maximizing the amount of work not done.

aglie2

Agile Manifesto

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan