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"

Software Configuration Management Goodies:)

The purpose of Software Configuration Management is to establish and maintain the integrity of the products of the software project throughout the project’s software life cycle. Software Configuration Management involves identifying configuration items for the software project, controlling these configuration items and changes to them, and recording and reporting status and change activity for these configuration items.
img8
The first SCM was used in 1950 and was made by hand on cards or tapes. Now there are a lot of SCM implementations like Plan Change Documentation, Source Safe, Vertical Sky and Git.

PROCESS:

Identification of object in a software configuration
Version control
Change control
Configuration Auditing
Reporting
14182078_703019349845848_2043562261_n

ADVANTAGES

Reduced redundant work
Effective management of simultaneous updates
Avoids configuration-related problems
Facilitates team coordination
Helps in building management; managing tools used in builds
Defect tracking: It ensures that every defect has traceability back to its source
DISADVANTAGES

A file that has changed many times is going to consume a lot of unnecessary space because all the changes are going to be stored.

EXAMPLES:

Git
Trac
Visual Source Safe
Microsoft visual studio 2010
ALM
Harvest
AccurRev
ClearCase
Set-Liber
14151778_10154603056470864_510703679_o

José Manuel Nuño Salazar
José Carlos Peñuelas Armenta
Frida A. Díaz Medina
Ekaterina Chumakova

Non-functional? Not really.

First of all… What are requirements? They are specified conditions that are demanded by clients or stakeholders in the creation of a project.

Functional Requirements:

The logical aspects of a product, system or software are defined as functional requirements. In other words, what does it need to do to function?

Non-Functional Requirements:

nfr-non-functional-cart-before-horse

These requirements are not Non-Functional at all, they focus on quality factors and effectiveness. These factos are what guve value to the software and make the functional requirements function appropriately.
Some non-functional requirements may be:
-Usability
-Availability
-Reliability
-Flexibility
-Supportability
-Performance

Requirements are interchangeable depending on the type of project that must be built. Some software may not be able to limit what functionalities are categorized in which type of requirements.

When a software programmer starts out a project, normally the client has and idea of what functionality they want their software to have, but it is very common to forget about non-functional requirements or as some people call them “Quality Factors”. Both of these are a type of “High-Level” design.
For a product/system both of these type of requirements must match the business requirements of the market.

difference-between-functional-and-non-functional-requirement

Sources:
http://searchsoftwarequality.techtarget.com/answer/Differentiating-between-Functional-and-Nonfunctional-Requirements

http://searchsoftwarequality.techtarget.com/answer/Functional-vs-non-functional-requirements-what-is-the-difference

http://expertbusinessanalyst.com/tag/difference-between-functional-and-nonfunctional-requirements/

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

 


To be ethical or not to be ethical, that is the question…

Sometimes we forget that software engineering, as any other profession also has some rules and a code to live & work by. Any professional, free lancer or even a student should implement some basic rules in their work.

PUBLIC

Software engineers should act in a way that benefits public interest.

CLIENT & EMPLOYER

Acting according to the best interest of the client/employer which is according to public interest.

PRODUCT

Always try to meet the best professional standards.

JUDGEMENT

Maintain independent integrity in their projects.

MANAGEMENT

Software development and mantainance should always be managed in an ethical way.

PROFESION

Engineers should always improve the profession in an ethical way.

COLLEAGUES

Software engineers must be fair and collaborative with their peers

SELF

Software engineers must maintaing a constant learning attitude and maintain the ethics in their work.

Agile: eliminating the fear of due-dates.

Agile is a type of project management & team development methodology.

Iterative, work a while, check if stuff works, change what needs to be changed, then start again, otherwise called a sprint.

Opposite of waterfall technique, instead of making one giant blueprint, you revisit the plan many times to make changes.

Time Boxing: work is planed by time, not by features. Time is important, this methodology focuses on delivering projects on time, and implementing all of the possible features we can in that time, opposite to implement all of the features, and not caring if the project is late.

Very collaborative, everyone involved in the project is constantly talking to each other, not working on their own and just presenting what they have done.

img3

Some of the basic things that are implemented are:
Scrum (Self-organizing cross-functional teams.Participants: Team, Scrum Master, Product Owner.)

Extreme Programming (Stressing customer satisfaction).

So basically agile development is based on getting things done in the time they need to be finished, not on implementing eeeeevery single feature a boss may be asking for during a project, without forgetting about quality.

Image Source
Image Source

What is Agile Development (Part 1): What is Agile Development?

Agile and the Seven Deadly Sins of Project Management | Mike Cohn | Better Software West