Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCTION....................................................................................... 3
2.1
2.2
2.3
2.4
2.5
3.1
Traditional ......................................................................................................... 7
3.2
Agile .................................................................................................................. 9
4
4.1
SOFTWARE LICENSES.............................................................................. 12
Non-Open Source licences.............................................................................. 13
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
Introduction
The main purpose of this document is to do an overview of the computer software and
their characteristics.
Several issues about life cycle of software, frequent troubles of software development
process, software benefits and productivity enhancement will be covered, in order to
show the different alternatives that CAAN has to take into account to build MIS
architecture and the decisions to be taken.
IEEE Std. defines software like "the collection of computer programs, procedures,
rules, and associated documentation and data", concerned with the operation of a data
processing system.
Software is also defined as a set of three components: programs, data and
documentation.
Programs: this component provides the required functionality and the performance
when the program is run.
Data: this component involves the necessary data to manage and test the
programs and the required structures to maintain and manipulate those data.
Documents: this component describes the operation and use of the program.
Basically, software is a set of programs, which provide the required functionality, the
related data and documents. Therefore, software is a logic element, completely
different to hardware. Software is developed; it is not produced, in the classic way.
Each software is different from each other, because each one is developed under the
unique customer requirements. Therefore, each software needs to be built using an
engineering approach.
Building a software product involves understanding what is necessary, designing the
product that fits the requirement, implementing the design using a programming
language and verifying that the product fits the requirements. All these activities are
handled by a team working in a coordinate manner. The main resource to make a
software product is the persons. The working team has to work in a coordinated way
and have to share a common project. A good communication in the team is needed.
It is important to mention, that the software is not damaged but is deteriorated. During
the products life, it can be changed because of the maintenance. With these changes
it is possible that new defects could be created. Because of those changes, the
software is deteriorated.
The next section will show the life cycle of software and the process to develop a
software product.
Methodology
A methodology is a framework that is used in software engineer to determinate the
structure, plan and control the process of developing software to improve the quality of
final product, and it also helps project managers and software developers in delivering
project on time, within the budget to meet the customer requirements.
The methodology framework includes policies, procedures, methods, tools,
technologies and documentation which help each activity of the software life cycle. This
framework is also a philosophy of software development with an approach of its
process.
Every approach acts as base of a specific framework to develop and maintain software.
Several software development approaches have been used. Some examples are
waterfall, prototyping, incremental, spiral, RAD and extreme programming.
The benefits of a methodology in the process of software development are:
3.1 Traditional
This methodology is based on sequential steps to be followed in the development
process. These steps are requirements definition, implementation, testing and deploy.
An initial documentation of stable requirements is required, and is not allowed to reach
next steps until the previous ones have been completed, in a sequential manner.
The aim of this discipline is to make the software more predictable and more efficient. It
is said that this type of methodology is very inflexible and is not change-oriented,
besides it can take longer time for the software development.
The features of this discipline are as follows:
Completed Documentation: The main topic is the design. During this step all
customers requirements are detected and collected. It needs to have the
requirements before starting the implementation. Predictability is very important
to be able to achieve all requirements. All of these requirements have to be
documented.
Process Oriented: Processes are defined involving certain tasks that must be
performed by the managers, designers, programmers, testers
Tool Oriented: Project management tools, code editors, compilers, etc. must
be in use for completion and delivery of each task.
This kind of methodology is based on fixed steps. In fact, the most important principle
is that the requirements listed in the first step will never change along the project.
There are some methodologies that follow this approach such as Waterfall,
Prototyping, Incremental, Spiral Model and Unified Process.
3.2 Agile
This methodology appears by the need of business community to have rapid software
development process. Thanks to the light process, the customer could see frequent
pieces of functionality.
Agile methodologies are known for being cheaper, faster, and quicker to respond to
changing market demands, as compared to the slower but steady, sequential process
of the traditional methods.
Software team takes importance on the success of development process, where team
composition is cross-functional and self-organizing without considering any corporate
hierarchy. Team members take responsibility for each iteration requirements.
One of the most important principles of these kinds of methodologies is that they have
been born completely change-oriented. Therefore, anyone of them is ready for any
changing requirements given.
Modularity: The processes are divided into activities to develop the process.
Iterative: The philosophy of this methodology is focused on the fact that we get
things wrong before we get them right, so it is based on short cycles. It is
normal that a cycle or iteration do not finish the element 100%, so a new cycle
starts. Cycles are repeated any time until the element is finished correctly.
Time bound: Iterations are considered like time unit, so the schedule is based
on these iterations. As it is normal that changes happened, all activities of a
process in a single iteration are not scheduled. Only the needed activities to
achieve the set goal are scheduled at the beginning of the iteration. These
activities can be rescheduled if they cannot be completed in the estimated time.
Adaptive: it is considered that changes are normal even good; the agile
methodology is focused on making changes in the best way, it is ready for
changing.
Incremental: a process does not build the whole system, it is divided into
increments. Each increment is tested independently; when an increment is
completed and tested, it will be integrated into the system.
There are several agile methodologies. The most used are RAD and Scrum.
can correct the product to fit what he wants. Although with this kind of agile
methodology it is possible to lead any kind of project, it is more suitable in short
projects.
The consequence of using scrum framework, and its model based on releasing
software frequently, is that the team takes responsibility of the tasks and
undertakes them in an iterative way in defined time periods or sprints, improving
the software developing productivity.
There are several tools to measure how the project is advancing, between the
dates defined in every sprint and in whole project. Some of them are Burn
Down Chart or the Visual Management Boards.
4 Software licenses
The software license is a kind of contract, which specifies all the rules and conditions of
usage of a particular program. Mainly, it stipulates the scope of use, installation,
reproduction and copying of these products.
Ingeniera y Economa del Transporte, S.A.
A typical software license grants permission to use one software copy or more. If a
user does not have permission and uses the software, he will do a copyright
infringement of the software owner's exclusive rights under copyright law.
There are two types of software licenses: proprietary licenses and free and open
source licenses. The differences between them are significant in terms of end-user's
rights and obligations.
In the next section, the terms of non-open source or proprietary license and open
source license are explained.
Maintained by an enterprise: in that case it is very common that you can use the
code free of cost but you must pay for services, like consulting services,
coaching or certification.
Maintained by the community: in that case there aren't any company behind it.
The software is totally maintained and evolved by a software developers team,
self-organized that they don't earn money directly with this. They just get
recognition. The services and software support with this license is provided by
the online community network via forums and blogs.
The consolidated open source projects are as reliable as non-open source projects.
These projects are totally tested by the developers community and they also have
installed it in every kind of companies.
Some successful open source products are Linux operating systems, Apache software,
MySQL data base, Java Virtual Machine, Libre Office, to mention but a few.
6 Kinds of software
There are several kinds of problems that enterprise software applications solve.
On this chapter, the most common enterprise application will be described in order to
explain the solutions that they offer to these common problems
This system allows managing, under a standard format, the information of the server,
reducing the management cost of the web page comparing with a static web, where
each change in the design has to be made in all web pages, as well as any time that is
necessary to modify content, it is necessary to change the layout of html page.
In addition to that, this type of system allows the technical users to manage webs
platforms in a user friendly environment.
The main objective of ERP is to facilitate the flow of information between all business
functions of the organization and manage the connections.
ERP Systems are divided into many enterprise software modules that are individually
purchased, based on the specific needs and technical capability of each organization.
The modules can be financial accounting, management accounting, human resources,
manufacturing, supply chain management, project management, customer relationship
management, data services and access control.
The features of an ERP are as follow:
With an ERP solution, employees have access to accurate information that enables
them to make better decisions faster. Also it helps to eliminate redundant processes
and systems, lowering the cost of doing business.
It is important to mention the advantages and disadvantages of an ERP. Some of the
benefits are improving productivity and corporate financial performances, improved
business forecasting as well as organized work flows. On the other hand, the
disadvantages include the need of an extra budget for the consolidation of all the
databases and the need for the development of an efficient re-engineering business
plan.