Software Development Processes

Processes VS life cycles

Software Development Processes are often confused with software life cycle; and although, it is a series of steps to follow, processes is referred to as all the approaches or models for different types of tasks.

Activities & Steps:

  • Requirement analysis: Mostly analyzing requirements for desired product or software: skills, money, etc.
  • Specifications: Precisely describing what a software is to do.
  • Software architecture: Abstractedly representing the architecture of a software system.
  • Implementation: Actual coding, and implementation of architecture.
  • Testing: Testing the code, or codes.
  • Documentation: In order, to create a safe maintenance ambiance for the software.
  • Training and support: Develop training classes for intended users, so that the software is not new for them, and they notice the transcendence of the system.
  • Maintenance: Enhancing, upgrading, and deleting bugs mostly.

There are several models and methodologies that try to improve quality, and productivity.

Examples of methodologies:

  1. Waterfall processes (Soon blog about this method)
  2. Iterative processes (Soon blog about this method)

2 hours long tutorial explaining more about this topic, and about more methodologies.


What is SCM?

Great post about SCM



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
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
, created by Linus Tovalds in 2005.


• 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

figure_08Why is…

View original post 92 more words

Software life cycle

What is software life cycle?

To develop the desired software product, a certain series of steps need to be followed. These steps are known as the Software Development Life Cycle (SDLC).

These steps are:

Communication: The user initiates the process, where he contacts a software developer to request a specific software product.

Requirement gathering: The software development team tries to gather all possible information on requirements for the product by contacting stakeholders.

Feasibility study: The teams start plans for software process, and determine if the solution is practically, financially, and technologically possible by analyzing most possible algorithms.

System analysis: Developers try to come up with the best model for the product.

Software design: This is the moment when the designing of the product begins, combining the analysis, and the requirement knowledge.

Coding: This is the programming stage, where the software design is implemented.

Testing: At this point it is very important to review the code for all possible existing errors. It is one of the most important phases.

Integration: Include all needed data to implement the software product.

Implementation: This means to install the software and actually run the product on user machines.

Operation & Maintenance: Further analysis of the product needs to be done to improve the efficiency of the product and avoid more errors.

Disposition: If software becomes obsolete, this process needs to eliminate or archive all data regarding to the product, or if possible upgrade totally the product.



Be an agile software developer

What is agile software development?

“Agile Development” is an umbrella term for several iterative and incremental software development methodologies.

There are many methodologies: Extreme Programming XP, Scrum, Crystal, Dynamic Systems Development Method DSDM, Lean Development, and Feature-Driven Development FDD. Each one of them has a unique characteristic; however, they all share the same approach to the incorporation of iteration and feedback that helps to improve and deliver a final software system.

What does that mean?

Software development is taken more seriously because, to develop a software system, these methodologies involve continuous testing, planning, integration, and evolution of software. These methodologies force people to collaborate and make decisions together in a more efficient, and effective way.

This isn’t new, however:

These practices have been around for several years. Basically, these methodologies have packaged and implemented various management, engineering, and customer aimed practices to help, and guide teams into making quick and efficient solutions. Planning and delivering. This trend has been evolving and improving constantly.



The beginning of Software Enginnering

It began in the late 50’s and the early 60’s as computers were introduced to universities and research institutions. Computers quickly became indispensable for many, and programming soon became an activity under appeal. Programming, however, had no interaction with a computer, programmers would give the program to a dispatcher, who queued the programs, and the results came hours or days later.

Coding was almost too difficult, and, in order to ease this process, formal notations were created. These notations are now known as programming languages. The first one was Fortran by IBM in 1957, followed by Algol in 1958, and Cobol by the US Department of Defense in 1962.

Computer capabilities had grown, and with it, programs and programmers demands; henceforth, a friendlier programming language was created known as PL/1. Programming languages and compilers became a principal cornerstone of computing science. [1] C was created to be capable of doing software development in UNIX. That’s how programming took a leap backward, where languages were gaining high level features, but C is only higher level than assembly code.

Ever since, different compilers and programming languages have been created, with different methods, and objectives. Procedural, modular, and object-oriented languages are some of the most known ones. For example, Java, Ruby, C, C++, HTML, Python, etc. and software engineering has grown exponentially. It has grown to a point where future expects lots of software engineering contributions.

Software Engineering has been so important that it is not only considered professionalism, but also art or craft.



The art of Software Engineering

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler

Technology and scientific knowledge has increased for the past centuries, and with it, the engineering field has acquired several disciplines based on the needs of these technologies. Software engineering is one of the latest disciplines; furthermore, it is different because professionals are not building a tangible structure. It is as important, though, as most technological equipment used in daily life require software. In fact, software impacts most aspects of our lives; for example, banks platforms, and businesses trust software programs.[1]

Software engineering is not just programming, it involves a series of steps priori and posteriori of programming. When a project is required there’s research to be done about the requirements of it, creation of algorithms to follow by the program, followed by the actual coding process, which needs comprehension, logical thinking, machine language knowledge, and programming abilities; finally, there’s validation and maintenance to the program, as it needs to keep running.

The question is, is it a discipline or an art? Most software engineers consider their labor as art [2]; however, software engineering is both of them, it is a discipline as all other engineering branches, which are considered as professionalism. Simultaneously, it is an art because there are no limits when developing software. Limits exists when the physical unit is not capable of supporting the virtual one; however, everyone can create their unique piece of software.



[1]: Software engineer insider

[2]: Steve McConnell