UML Developers finally understanding each other.

The Unified Modeling Language or UML for short is a standard graphical notation that is made up of sets of diagrams that illustrate what the software architecture of a certain system looks like, it is easy to read so any developer can take a look at it and have a basic understanding of the project.

The design and structure of the system is modeled with UML, it can be applied to any kind of application, independently of the platform used to build it, it is a tool that helps manage large and complex systems because it brings a clearly visible structure to the architecture and design.

Ola Løvholm - DMSP UML
Ola Løvholm –
DMSP UML

UML’s main purpose it to have a stable and common design language so applications can be build and analyzed by other developers, it is a sort of blueprint to software design and architecture.

One uf the main features is the use-case diagram:
It helps development teams visalize what the functional requirements of a system are and how they are related to each other.

Sources:

The Unified Modeling Language (UML)

An introduction to the Unified Modeling Language

Essentials of Elicitation & Specification

The first step of the Software Development Lifecycle is Functional & non Functional Requirement Gathering , it is the result from the specification of the informal ideas a client has about a product. The goals of this phase are to define the needed software and hardware. It is a really important phase because failures at this stage may increase the cost of development in higher stages to ensure the customer needs.

gerard.rendell - Elicitation
gerard.rendell –
Elicitation

There are two factors to consider:

Initial Input: The idea of how a system will be created considering the needs of the client and defining a problem to be solved.

Desired Output: The requirements must be as specific as possible so the problem that needs to be solved can be completely understood.

Requirements Elicitation is mainly understanding and analyzing all of the requirements a client has for a system. Developers & engineers work closely with clients to understand the problems that need to be solved and what functionality a system should have and what hardware is optimal.

The problem is that clients usually do not have a clear idea of what they want or need and if there are many stakeholders, they will most surely have conflicting ideas. The conditions need to be met for the client to be able to solve a specific problem or achieve a certain objective and it must satisfy specific contracts, standards and specifications.

Requirements Elicitation – basic customer idea and definition.

Requirements Specification – Basic developer design and technical specifications.

Requirement analysis normaly uses one of two models: Dynamic model or Object Model. These specifications use formal (exact mathematical syntax or semanic syntax) or semi-formal notation (like UML).

In general this is a phase of understanding the stated problem that the client has and how it should be Continue reading "Essentials of Elicitation & Specification"

“There is no such thing as freedom without the RISK of failure”

What is a risk? In any field, it is identified as a potential problem. In software development there are many risks that must be assessed. Each project wants to be differentiated in one way or another and this creates certain levels of uncertainty because of factors like technological advancements & quality levels. These risks may compromise the success of a project and it is very important to understand the probability and scope of these risks.
To generate a successful project a project manager must identify, assess, prioritize and manage all of the mayor risks that may be encountered during development.
There is a lot of guesswork involved in risk management and crisis-management must be performed to contain the possible losses caused by the potential problems.
The following tasks must be performed:
• Identify risks and their triggers
• Classify and prioritize all risks
• Craft a plan that links each risk to a mitigation
• Monitor for risk triggers during the project
• Implement the mitigating action if any risk materializes
• Communicate risk status throughout project
There are five main areas in software risk management:
• New, unproven technologies
• User and functional requirements
• Application and system architecture
• Performance
• Organizational
Risk Management in Software Development and Software Engineering Projects

Is there anything more beautiful than crystals?

The Crystal Methodologies are a set of Software engineering methodologies that derive from Agile Sofware Development. The main idea of their creator (Alistair Cockburn) is to meet customer needs and have aligned team goals.
This model focuses on:
-Interaction
-Communication
-Community
-People
-Skills
A main idea of the model is to consider development as a game to generate creativity in all of the participants. There must be communication density, system criticality and project priorization. There are two main assumptions:
1. Teams work together integrating and optimizing.
2. Projects are unique and dynamic and need to be designed based on customer specifications.
These are the types of Crystal Models:
3. Crystal Clear
4. Crystal Yellow
5. Crystal Orange
6. Crystal Orange Web
7. Crystal Red
8. Crystal Maroon
9. Crystal Diamond
10. Crystal Sapphire

Sources:

Four Variants of Agile Development Methods

The Software Development Process

Software Development Processes are the basic models that give us a rough guideline on how to organize all of the work involving the creation of a software product.

All of the methodologies are based on the Software Development Life Cycle.

Paul Downey  Development process
Paul Downey
Development process

Here are some of the main approaches:

WATERFALL ( read a bit more… )
A linear model that follows a sequential flow, work is split into many phases and development happens first in one phase, gets completed and then moves to the next phase, the phases don’t overlap.

This was the first approach invented, it is very straight forward and easy to understand. This process works best for projects that do not change requirements in late stages of development because it is very hard to make changes and implement new features after early stages.

PROTOTYPING
This model focuses on creating protoypes for the client so he/she gets a better idea of how the requirements they gave are being implemented. This is a good model for testing and reduces the misunderstanding gap between developer and client.

Some types of prototyping methodologies are:
-Throwaway Prototyping
-Evolutionary Prototyping
-Incremental Prototyping

Although it is better for user involvement it can also lead to confusion over the protoypes and the final product.

SPIRAL
This method involves combining design and prototyping. This model is used mostly for expensive and complex projects, these project is composed mostly of small waterfall models, the phases go in the same order, and then prototypes are built and simulated.

This model is good for budget estimating and issue discovery at early stages of development, but it also involves a lot of time and high costs and has quite limited re-usability.

AGILE or EXTREME PROGRAMMING (read a bit more… )

OTHERS

-Lightweight Methodologies
-Rapid Application Development
-Code Continue reading "The Software Development Process"

APIs, the new way of life.

APIs or Application Programming Interfaces are the core of our daily lives. We use these interfaces every day for most of the things we do, but… what are they?

APIs basically allow applications to communicate with other applications.

Every time we visit a website or application we leave a digital footprint on them that helps them evolve based on our experience. With the innovation of all digital things, websitesd and applications have evolved to being generated through development software and software as a service platforms.

Data Bases have allowed websites to become applications and have encouraged people to create their own content instead of just viewing it. Site content is now stored on many different databases, some you may own and some you may not and some may be public sources and some may be private.

There are a vast variety of widgets that can be implemented in our phones, computers or other devices to make our lives easier, we rely on them for practically everything.

Soapi1

img11urces:
http://101.apievangelist.com/

Waterfall Method Basics

The Waterfall Model was the first Software Development Process ever created. It is a linear model of the life cycle development model and uses no iterations, this makes it very easy to understand and use. This method requires every phase to be complete before being able to move to the next phase, there can be no overlapping. The success of this model relies on very good planning and documentation.
This model is kind of the opposite of the Agile Model.
The phases:

img10

1. Requirement Gathering & Analysis: Ask the client what their needs and expectations are.
2. System Design: Requirements for the System and Hardware specification to define overall architecture.
3. Implementation: Program is developed in small units and tested (Unit Testing).
4. Integration and Testing: All units are put together and tested for faults and failures.
5. Deployment: After functional and non functional testing, the product is delivered.
6. Maintenance: Regular updates and issue resolving.

This model is called the waterfall method because the each phase cascades into the next one and there is no overlapping.
Advantages: Easy to understand and manage because of how specific each phase is. It allows a lot of control and departmentalization, scheduling and deadlines because of its strict order.
Disadvantages: It allows for very little revision and correction, it is very hard to go back to a previous stage after it has been completed. If documentation is not good it is very hard to maintain the product. This method has high amounts of risk and uncertainty and does not allow for flexible requirements.

Here is a little video on Agile vs Waterfall for better understanding.

Sources:

http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm

The life and tails of the Software Development Life Cycle

Some people think that software development consists of only coding, but it is a way more complex Software development has moved from being a singe programmer doing a project, to very complex projects that require teams of developers to work on the same project and return a valuable product.

This life cycle makes sure that good software is built, every single phase is a complex process that requires a lot of time and work.

There are many types of Software Life Cycles, like agile or the waterfall method, but most of them follow a few basic phases.

img9

1. Requirement Gathering and Analysis:
The clients must provide a set of functional and non-functional requirements for a program, these requirements must contain the business needs and specifications for the project. After gathering the requests, they need to be analysed for validity and possibility to be incorporated into the system, when this is done it becomes a sort of guide to work by and moving to the next phase is optimal.

2. Design:
This phase is centered on the system being planned out based on the requirements that were gathered and analysed during the first phase. During this phase the hardware to be used is defined. The system architecture must be defined and a test strategy needs to be developed to use later on.
Part of the design process is risk analysis.

3. Implementation/Coding:
When the system is designed, then comes the coding & unit testing process. Work should be divided into parts or modules and the code is the the developers main task. This is the longest phase and many enhancements may be needed so developers need to be flexible. The output of this phase is the testing phase input.

4. Testing:
Code must be tested against the requirements to see if Continue reading "The life and tails of the Software Development Life Cycle"

Wait!! More about Software Development?

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.

 

Resources:

https://www.versionone.com/agile-101/

http://www.tutorialspoint.com/sdlc/sdlc_overview.htm

https://www.vikingcodeschool.com/software-engineering-basics/a-brief-history-of-software-engineering

 


There’s a cycle for Software too…!!!

I don’t know why everything in this life has a cycle, but anyway, I will talk about another cycle in this blog. The Software Development Life Cycle! ??????

sdlc_stagesThis cycle is used in the software industry to develop high quality products and at the same time satisfy the client. Basically it consists on planing ahead everything, so the work could be done easily.
The basic steps are:

  • Planning: it shows only the technical approaches of the future program.
  • Defining: this process meant to document every requirement.
  • Designing: as the name said, it’s to design the architecture of the software.
  • Building: here is where the developement starts, by starting to build the software.
  • Testing: by testing the software, you will have an answer and opinions of it.
  • Deployment: finally you deliver the product and maintain it.

 

Want to know more about software development? CLICK HERE

 

Resources:

http://www.tutorialspoint.com/sdlc/sdlc_overview.htm

https://www-01.ibm.com/software/support/lifecycle/