UML

420px-uml_diagrams

UML (Unified Modeling Language) is a standard notation for the modeling of real-world objects as a first step in developing an object-oriented design methodology.”

It was born in 1997, its parents are:

  • Grady Booch’s methodology for describing a set of objects and their relationships
  • James Rumbaugh’s Object-Modeling Technique (OMT)
  • Ivar Jacobson’s approach which includes a use case methodology

Three parents, huh? Well, it’s software engineering, everything is possible. As you could see, the parents are methodologies and techniques, who decided to get together to create a Language! That’s the reason why UML has been so accepted, because it is more adabptable to everyone, while methodologies, occasionally, can be impossible to fit with some companies and people.

Some sources say that it’s not a language, but a set of norms, I disagree with that. Because UML was made to make easier the understanding and communication of a project. like the definition says, it’s a standard who everyone can use. It’s not necessary, but it’s definitely more convenient than using any other model.

The UML uses diagrams to represent objects -yes, diagrams, because we’re engineers, duh-. Some of them are:

  • Use-case diagram
  • Class diagram
  • Sequence diagram
  • Statechart diagram
  • Activity diagram
  • Component diagram
  • Deployment diagram

UML is most commonly used in high level projects, but I think it’s a good idea to start using it in any project so you can understand how it works and to know its benefits.

Source:

 


Elicitation and SRS

15-jobs-that-pay-under-15-an-hour-private-detective-investigators
http://wallstreetinsanity.com/15-jobs-that-pay-under-15-an-hour/

Eliciting requirements is an effort to get information from stakeholders and subject matter experts. Elicitation is not a step, it is a set of techniques that must be applied during the requirements phase of the Software Development Life Cycle. It is common to use the terms “gathering” and “eliciting” to refer to the same process. However, “eliciting more accurately describes the process of revealing not-so-observable requirements”, it consists in a planned and deliberate search, and gathering is more about taking what you see.

Projects tend to fail when the requirements are not well defined, this might happen because people involved in the project dont’t know what the real problem is. Here is a 10 step guide to detect the real problem.

So, you discovered the problem, now the application of elicitation techniques comes to action. The most common and effective techniques are:

  • Interviews: It’s used frequently by business analysts, it has to be one-to-one and open ended questions.
  • Brainstorming: This group technique takes place in two sequential activities. The first part consists in raising as many ideas as possible. The second part analyzes and organizes the ideas.
  • Focus groups: They bring together knowledgeable interested parties to examine a topic. These groups tend to be expensive to make and are used most commonly in marketing.
  • Requirements workshops: They bring together as broad a group of stakeholders, they have to keep the whole group involved.
  • Tests: They can be static or dynamic. Static testing reviews requirements directly, while dynamic testing consists in testing the code with previously designed tests. The effectivity of dynamic testing relies on the quality of the test, if it’s not well developed, the project will fail.
  • Project-related documents: It’s important to do background research that is not specific to the project.
  • Observing: Developers elicit requirements
    requirements_accavdar-e1318187040437
    Continue reading "Elicitation and SRS"

Functional and Non-Functional Requirements

flowchart
http://infomatrix.com/?option=com_content&view=article&id=86

The first step in the Software Development Lifecyle is to define the requirements, and it’s pretty obvious why. You can’t start a project if you don’t know what it is going to be about and how it is going to work. Well, the “what” and the “how” are the Functional and Non-Functional Requirements, respectively.

Functional Requirements

The functional requirements specify what the system should do. Usually, it is easier to define these requirements because it’s about the final purpose of the project.

Types of functional requirements:

  • Interface
  • Business Requirements
  • Regulatory/Compliance
  • Security

Non-Functional Requirements

They specify how the system should behave. The fact that they’re non-functional can make us think that they are not important and can be ignored, but they pretty much define whether the user will like it or not. For example, a functional requirement of food is to feed, but I assume that most people will prefer to eat a chocolate bar than an onion, and that’s because of the flavor, a non-functional requirement.

Non functional requirements fall into many of these catgeories:

  • Accessibility
  • Capacity, current and forecast
  • Documentation
  • Efficiency
  • Effectiveness
  • Quality

It’s important to think about usability to avoid failure, at the end of the day, the user will say if it’s good software or not.

Source


Be Agile!

agile_project_management_by_planbox1

In the beginning of the 21st century, software development reached a point where a lot of projects were failing and programmers started to find many limitations in the traditional waterfall method. That’s why, in 2001, seventeen software developers decided to write the Manifesto for Agile Software Development, which has 12 principles that will help us create our own definition of “Agile Development”:

  1. To satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development.
  3. Deliver working software frequently with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Just like the new trends in organization magement, Agile focuses a lot in team work and constant results. It seems like it’s the perfect method, isn’t it? For me, what Agile is looking for is really hard to reach, however, nothing’s impossible.

Agile development reduces the risk of failure and allows to have more cetainty, visibility and adaptability. Through software development process, clients requirements can change, and the advantage of this method is that it won’t affect that much the project, that’s the great thing about developing in “baby steps-short term goals-.

agile101-software-dev-300x200

The methodologies of Agile Development Software are:

Wait!! More about Software Development?

Nice post Victor !:)

Victor Njr's Blog

There’s more…

There are Software Development Processes that help to plan and manage better the software-development-bannersoftware that is going to be developed. Usually, industries use them to develop and
maintain an application. Each process has its own methodology; and each new process
pretends to be better than the old ones.

The most famous processes are:

  • Waterfall
  • Prototyping
  • Incremental
  • Spiral
  • Agile

Agile vs Waterfall

There are big differences between these methodologies, but at the end developers use both daily. Usually there’s no preference for one or another, you just do what you have to do…

At the end…

We end up with a piece of software that give us some kind of satisfaction when we use it. That is what software has become, a part of our lives that days before wasn’t even planned like that. People change, technology change and we keep updating our world just to improve our lifestyle.

Ver la entrada original 4 palabras más


How to access Spotify Web API

Juanca's Blog

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…

Ver la entrada original 130 palabras más


The Lifecycle of Software (the whaaat??)

There are series of steps to design and develop a software efficiently.

These are the steps:

software-development-life-cycle

Image recovered from xbs software

1. Requirements Analysis

It is important to document all requirements to the software that you want to develop. You need to make interviews and all that stuff. Structure all incoming data, analyze them, consider all technical limitations that may arise on the client’s side, and come out with a ready-to-follow specification to meet the client’s needs. Consider also, the clients budget and time to spend on the project.

2. Design Phase

This involves the creation of a project scope document with mockups, or hand-drawn sketches, and a detailed software development specification.

To create a prototype, you need to figure out the following things:

  • The way the input data will be acquired and processed to produce the desired output data
  • The form in which the output data should be presented

Mockups are sent to…

Ver la entrada original 266 palabras más


Software Development Processes

eb9992b9eb19a2fe53ebd93d3c73ecf1

The Software Developmet Process is also known as Software Lifecycle, I’ve already written a post about it, so you can check it out here.

Basically, it consists in a few steps: requirements, design, coding, testing, deployment and maintenance. This process is pretty much the one that almost every model of software development follows.

A software development process helps to reduces costs, time, errors and makes everything easier, that’s why many companies have decided to use it to develop new projects.

The cool thing about this process is the existence of different models. This way, each company can choose the model that fits better with their employees, politics and standards. Also, it is possible that a company create its own development process, it depends on the purpose of every organization.

Source:

 


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: