Software Development Processes

220px-waterfall_model-svg

Software Development Processes is a set of steps that a software program goes through when developed.

First in the software development process, the requirements phase outlines the goals of what the program will be capable of doing. Next, the design phase covers how the program is going to be created, who will be doing what, etc. The implementation phase is where the programmers and other designers start work on the program. After the developers have a working copy, the testing and verification step can begin to help verify the program has no errors. During the testing phase, problems found are fixed, until the program meets the company’s quality controls. After the program’s development, the documentation phase on how to use the program can be completed. Finally, maintaining (updating) the program must continue for several years after the initial release.

A software development process makes everything easier and reduces the amount of problems encountered.

Software Development processes models:

The waterfall model: This is the classic SDLC model, with a linear and sequential method that has goals for each developmentphase. The waterfall model simplifies task scheduling, because there areno iterative or overlapping steps. One drawback of the waterfall is thatit does not allow for much revision.
Rapid application development (RAD): This modelis based on the concept that better products can be developed more quicklyby: using workshops or focus groups to gather system requirements; prototyping and reiterative testing of designs; rigid adherence to schedule; and less formality of team communications such as reviews.
Joint application development (JAD): This modelinvolves the client or end user in the design and development of an application,through a series of collaborative workshops called JAD sessions.
The prototyping model: In this model, a prototype (an early approximation of a final system or product) is built, tested,and then reworked as

Continue reading "Software Development Processes"

Ethics in software engineering

El desarrollo de software se ha vuelto algo fundamental en la actualidad; los ingenieros de software al ejercer su profesión pueden hacer un beneficio o dañar a la sociedad con el mal uso de esta, o hasta permitir que la sociedad se haga daño. Para garantizar que la ingeniería de software sea una profesión respetada se creó “Software Engineering Code of Ethics and Professional Practice”.

Este código tiene ocho principios relacionados con las conductas que los ingenieros de software deben tomar para ser profesionales; las cuales se fundamentan en las características humanas que debe de poseer y las personas que se ven afectadas en la toma de decisiones del profesionista.

Los ocho principios son los siguientes:

  1. Sociedad. Los ingenieros de software actuarán en forma congruente con el interés social, así como estar motivado a ofrecer voluntariamente asistencia técnica a buenas causas y contribuir a la educación pública relacionada con esta profession.
  2. Cliente y empresario. Los ingenieros de software actuarán de manera que se concilien los mejores intereses de sus clientes y empresarios, congruentemente con el interés social.
  3. Producto. Los ingenieros de software asegurarán que sus productos y modificaciones correspondientes cumplen los estándares profesionales más altos posibles.
  4. Juicio. Los ingenieros de software mantendrán integridad e independencia en su juicio profesional.
  5. Administración. Los ingenieros de software gerentes y líderes promoverán y se suscribirán a un enfoque ético en la administración del desarrollo y mantenimiento de software.
  6. Profesión. Los ingenieros de software incrementarán la integridad y reputación de la profesión congruentemente con el interés social.
  7. Colegas. Los ingenieros de software apoyarán y serán justos con sus colegas.
  8. Personal. Los ingenieros de software participarán toda su vida en el aprendizaje relacionado con la práctica de su profesión y promoverán un enfoque ético en la práctica de la profesión.

Este Código ha sido redactado por

Continue reading "Ethics in software engineering"

Ethics in software engineering

rightandwrongdecisions

Software engineering ethics are a subset of engineering ethics and professional ethics applied to the design and development of software systems.

The ACM/IEEE-CS Code of Ethics and Professional Practice have a standard for teaching and practicing software engineering. In this code they have eight important principles  witch are Public, Cient and employer, Product, Judgment, Management, Profession, Colleagues, Self.

in the sort version of the Code of Ethics these are the definition for the principles.

1. PUBLIC – Software engineers shall act consistently with the public interest. (You accept the full responsibility of the work that you do, You have to be honest)

2. CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. (You have to talk with your client and employer, do not cheat, because you make a bad reputation)

3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. (Don’t copy the code of someone else, don’t lie about it)

4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.(selects what is best and do not go above others)

5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.(If you are the leader of the develop team, be the ombudsman, do not lie, cheat, only be a good person)

6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. (Don’t create problems for the community, because the other people will think that the programmers are bad and don’t work)

7. COLLEAGUES – Software engineers shall be fair to and supportive of their

Continue reading "Ethics in software engineering"

History of software engineering

newlogo

The term software engineering begans in the 1960s. Writing software has envolved into a profession concerned with how best to maximize the quality of software and how to create it.Emergence as a profesion: by the early 1980s, to stand beside computer science and traditional engineering. In the software crisis of the 1960s, 1970s and 1980s, which identified many problems of software development. many of the projects ran over budget and schedule, a buch of project caused loss of life.The software crisis has been fading from view, because it is psychologically extremely difficult to remain in crisis mode for a protracted period.

Solving the software crisis was paramount to researchers and companies producing software tools.the cost of owning and maitaining software in the 1980s was trwice as expensive as developing the software. The rise of the internet led to very rapid growth in the demand for international information display/e-mail systems on the World Wide Web.

With the expanding demand for software in many smaller organizations, the need for inexpensive software solutions led to the growth of simpler, faster methodologies that developed running software, from requirements to deployment, quicker & easier. Software engineering is a young discipline, and is still developing.

 

 

More info: https://en.wikipedia.org/wiki/History_of_software_engineering


Waterfal Method

software-development-life-cycle-6-6381

 

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.

The sequential phases in Waterfall model are:

  • Requirement Gathering and analysis
  • System Design
  • Implementation
  • Integration and Testing
  • Deployment of system
  • Maintenance

Advantage

The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one. Each phase of development proceeds in strict order.

Disadvantage

The disadvantage of waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.


What is Software Engineering?

tagcloudsoftwareengineering4

What is Software Engineering? Video

The engineering field has taken on many new disciplines as our scientific knowledge has grown. The latest discipline is software engineering. According to the Institute of Electrical and Electronics Engineers (IEEE), software engineering means applying the principles of engineering to the software development field. Software engineering differs from other branches of engineering in that professionals are building an intangible structure and not a tangible one. It is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product.

When software projects require engineering, the process begins long before the product is designed – and it continues long afterward. It begins with a thorough study of the software requirements. Some requirements involve the functions the program needs to carry out. The program may, for example, need to verify that a user is authorized to access it. Other requirements involve constraints, for example, systems already in place.

The next stage is software design. This involves creating algorithms, or instructions for the computer. The actual coding process may be completed by software engineers, who have comprehensive training, or by programmers who are versed only in coding.

software-engineer-job-description

 


APIs

APIs (Application Programming Interfaces) allow interaction between applications or websites. Most of the current webpages have APIs and sometimes we don’t even notice that.

While having this type of “relationship” among websites,these are being enriched Untitled-2-02.pngwith the connection and interaction as the content interlinks and relates seamlessly.

At Kin Lane’s site, 101.apievangelist.com, there is ia huge explanation and analysis of the most commonly used websites back in 2014, which most of them are still part of the daily life of a tech-average person. He shows these sites have APIs working throughout the whole sites.

What is really interesting is how this analysis at some point may start to be obsolete, since most of the websites/apps that he describes have evolved and been modified already. Take a look at the following picture for example, Instagram back in 2014 compared to nowadays Instagram.
ig 14vs16

Almost everything has changed in the user interface that Instagram had compared to what it offers right now. Even the font has been tweaked a little.

What’s important about this is that back in 2014 and now in 2016, APIs were used throughout the web without any problem letting users experience a much easier way to interact with others and explore the internet universe.

Read more

 


Software lifecycle

macbook-apple-imac-computer-39284

When thinking about anything related to life, there’s always a beginning and an end. Software development isn’t any different from that idea. While software is being created, its lifecycle is barely starting.

Software life cycle models describe phases of the software cycle and the order in which those phases are executed.

Software development has stages through the entire process and sequences that are followed step by step in order to fulfill with satisfaction the whole project. Some of these stages are:

  • Requirement gathering and analysis
  • Design
  • Implementation or coding
  • Testing
  • Deployment
  • Maintenance

Although disappearing or dying isn’t part of that list, I would include that as the final step on the lifecycle of any kind of software since there will always be other that will replace the existing ones and make those obsolete.

If you’d like to read more on this topic, I’ve found some interesting sources to have other approaches on this topic.

Source 1    Source 2

Source 3    Source 4

 

 


Software Configuration Management

In this article, the software engineering  discipline called Software Configuration Management (SCM) will be explained.

pexels-photo-89724

So, what is the SCM?

It is a software-engineering discipline comprising the tools and techniques through processes and/or methodologies that a company uses to manage change to its software envirnoment. Good practices among the software development area define the SCM. For all of the software projects that are under development or in a more advanced phase, enhancement on the reliability and quality of software is made by:

• Providing structure for identifying and controlling documentation, code, interfaces, and databases to support all life-cycle phases

• Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy

• Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.

There are some practices suggested when working under a SCM:

  • 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.
  • Integrate early and often.
  • Ensure reproducibility of software builds.

But, how did all of this started?

All this information was based on Pearsonhieghered, from the first chapter on their called “Sotware Engineering”, by Ian Sommerville.