Software Lifecycle (title not final)

A software lifecycle are the various parts or phases that a software project may go through. A software methodology is a tool used to achieve the goals of the project in a specified order. CMS has a very detailed post about the most popular methodologies. They do mention that choosing a methodology is to be decided on a per project basis since a software methodologies aren’t one size fits all.

The first mentioned method is called Waterfall. The main aspect of Waterfall is its linear approach. In a linear methodology each step of the process comes after the last one is done. This is the reason the waterfall method relies heavily on good planning since once, you are done with something, you aren´t supposed to go back.

“Almost” done………………Math exam


Software Configuration Management (SCM)

Originally at: https://hermesespinola.wordpress.com/2016/08/30/software-configuration-management/

Statistics:

  • 53% of software projects overrun their schedules and budgets
  • 31% are cancelled
  • Only 16% are completed
  • Projects made by large American software companies approximate to only 42% of clients’ requests.

Source: Keyes, J. (2004). Software Configuration Management. Boca Raton: Auerbach

SCM basic tasks:

Development and production of:

  • Configuration identification
  • Configuration change control
  • Configuration status accounting
  • Configuration auditis

Integration: consists on putting together the individual software parts in one single big project.

Types:

  • Merge: parallel development on the same stuff
  • Assembly: development of different pieces

Software Configuration Management started in the 1950s, when configuration management, that was used for hardware and production control, was applied in software development.

Nearly all components that comprise modern information technology, such as Computer Aided Software Engineering (CASE) tools, Enterprise Application Integration (EAI) environments, Extract/Transform/Load (ETL) engines, Warehouses, EII, and Business Intelligence (BI), contain a great deal of metadata as well as his own repository and designer. That’s why metadata CM activities must be used in order to have effective information management.

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 ítems.

Configuration Management is practiced in one or another form as part of any software engineering project where several individuals or organizations have to coordinate their activities.

Software Engineering Institute. Capability Maturity Model Integration, Version 1.1 CMMI for Systems Engineering and Software Engineering (CMMI-SE/SW, V1.1) (CMU/SEI-2000-TR-018, ADA388775). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2000.

The reason for using SCM system is to keep track of the changing entities

Continue reading "Software Configuration Management (SCM)"

Agile and others.

Agile is a software project methodology that officially started in 2001. One of the main points of Agile is that you start fast and shift your plan as needed as you go. Agile is mainly intended for projects without easily identified goals. This way, you can get to work quickly, and adapt as you go. One of the most important documents about Agile is its manifesto, which can be found here. The document starts with:

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

The document also lists the main principles that are followed by Agile. These show how Agile can be different from other methods. Personally, the ones I found the most interesting were the focus on teamwork, welcoming change (even in late stages of the project), and that working software is a measure of progress. I think those points are a great example in how Agile is about getting things done without wasting too much time with planning.

A very popular kind of Agile development is Scrum. Scrum is a very well defined methodology to get things moving quickly. There are 3 main actors in Scrum, the programmers, the Product Owner, and the Scrum Master. The Scrum Master isn’t a boss, he is the one who chooses what work needs to be done. Tasks in Scrum are written in cards and each one contains a small and fast project. Cards can have different priorities to keep focus within the

Continue reading "Agile and others."

Ethics and Software

As with other professions, there´s a set of rules that you are expected to follow as a software engineer. These rules aren´t something forced upon programmers, but they should be followed for those looking to be good ones. There are two main documents that try to list what rules should be followed by  every software engineer. These are the ACM Code of Ethics and the Computer Society Code of Ethics.The ACM Code of Ethics has 8 main sections, where each one refers to a different aspect of a programmer´s job. Here’s a brief summary from their website:

  1. PUBLIC – Software engineers shall act consistently with the public interest.
  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.
  3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
  4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.
  5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
  6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
  7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.
  8. SELF – Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Opinion pending.