8/30/16

What the hell is SCM?

At first, I didn't really know what it was or anything about it, but with some google-fu and midnight reading I will share with you my findings about SCM.

SCM stands for Software Configuration Management, sometimes called Software Control Management, it is a framework for organizations to manage software and its changes, updates, errors, versions, tests, and code; all of this in a clean and organized manner.

SCM is the process that defines how to control and manage change.
It is needed with software that involves large organizations and a lot of programmers, it defines who is allowed to make changes, how they make them, and when they can. Software configuration management benefits all the stakeholders in a software project, making their jobs easier. Among the beneficiaries are: developers, testers, support, management, and investors.

Source

SCM consists of four Configuration stages:

  1. Identification
    • Made up of configurable items (CI), that is, the programs that make up the SW project.
    • Baselines are contemplated, they are the status of the CIs at a given point, a version.
    • A baseline must have a complete documentation that includes the capabilities of the software, bugs and testing, and a unique footprint.
    • On each baseline, the CIs are at an specific version-controlled stage.
  2. Control
    • Implementing the approved changes to the CIs.
    • Process to get to a new baseline.
  3. Status Accounting
    • Tracking the changes made from the old baseline to the new one.
    • Describes the current version and how it came to be.
    • The "what's new" section that you see when updating an app in your cell phone, only more detailed.
  4. Authentication
    • Making sure that the previous processes are complete and correct.
    • Testing the software.
    • If the tests are passed, then comes the release.

Source
I think, on the grand scale, that's about it. SCM seems like a good way to manage a project, and, if applied correctly, a tool that enables good software to get to the hands of people and businesses, in order to make the world better.

Sources:
https://www.techopedia.com/definition/24583/software-configuration-management-scm
http://ibiblio.org/gferg/ldp/SCM-OpenSource/index.html


8/26/16

Agile Development

Agile is an ideology for software development that aims towards a practical and more efficient way for teams to make software, the four principles are valuing:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Source
Methodologies that are considered agile are:
  • DSDM (Dynamic Systems Development Method)
    • One of the first agile methodologies (before the "agile" term was used).
    • Centered in teamwork.
    • A common framework in the industry.
    • Probably helped diminish the late-software problem that arose in the beginning of software development.
  • Crystal methods
    • Adaptable to the type of project.
    • Strives towards creating a set of principles that are ad hoc to the project.
    • Many types: crystal clear, crystal yellow, crystal orange...
  • Extreme Programming
    • Continuous and fast software development.
    • Customer oriented, many changes, testing and planning.
    • Feedback is continuous and welcome. 
    • Based in small releases, simple code and design, and good software practices.
  • Scrum
    • Task-oriented.
    • Information transparency.
    • Based on current problems, not predicted ones.
This blog post was written by Enrique García and Katia Chumakova, check out her blog at http://www.katiachumakova.com/


created at TagCrowd.com

Sources:

  • http://www.allaboutagile.com/what-is-agile-10-key-principles/
  • https://www.versionone.com/agile-101/what-is-scrum/
  • https://www.versionone.com/agile-101/agile-methodologies/

8/25/16

About Software Lifecycle

SDLC - Systems development life cycle

It is a framework used by professional software developers to make good quality software on a time-bound and client-oriented context. 
ISO/IEC 12207 defines systems lifecycle processes.

If you are not a reader, you may be interested in this video:



It includes 6 basic steps to develop, maintain, replace or alter software:
  • Planning
  • Defining
  • Designing
  • Building
  • Testing
  • Deploying

There are also more detailed steps for the SDLC:

  • Communication
  • Requireent Gathering
  • Feasibility Study
  • System Analysis
  • Software Design
  • Coding
  • Testing
  • Integration
  • Implementation
  • Operations and Maintenance 
  • Disposition
I will summarize in more detail the steps of the SDLC that is divided in 6 parts:
  1. Planning and Requirement Analysis: It is done between the developing company's experts and the client to determine the specifications and feasibility of a project, there are also risks that have to be taken into account. This includes not only the software aspect, also economic and operational aspects are reviewed.
  2. Defining Requirements: Doing a Software Requirement Specification (SRS) document that includes the clearly defined features, it must be approved by the customer.
  3. Design: The architects define clearly the solution to the problem, based on the SRS, in the Design Document Specification (DDS), it is reviewed by important stakeholders that take into account risks, robustness, modularity, and budget and time constraints.
  4. Building: Programmers code the application according to the DSS, using the tools that they are provided and appropriate high-level languages.
  5. Testing: The software is tested and corrected in order for it to comply to the specifications described in the (SRS).
  6. Deploying: The software is released to its meant environment, sometimes this stage includes field testing to correct and further improve the experience.
These are basic steps, but there's much more to software development than that, there are specific strategies to follow the steps that are standardized. I will post about them later this week.

Hope you learned something from this :)














8/16/16

Software Engineering discussion


Participants, left to right:
Enrique, José Manuel, Frida, José Carlos
We discussed the topic on question and the following things surfaced:

  • It is a engineering branch that is dedicated to make software.
  • It includes developing, testing and maintaining software.
  • Software engineering is involved in design so it could be considered an art, in this aspect, the limit is the software engineer's imagination.
  • It is an applied science, and thus includes a methodology that can be followed in order to be successful.
  • Methodology is not all, there is also the developer's criteria that enables a project to be successful.
  • It can be used for a wide variety of things, from low-level stuff like compilers to big user software.
  • The applications are almost everything, some examples are: medicine, administration, construction, education, governments, etc.


We concluded that software engineering can be basically a methodology, but there a lot of possibilities that can expand the engineer's potential, it is one of the most flexible areas in engineering because it creates solutions to everyday problems, from the most simple to the craziest applications.

8/10/16

Test Post

This is the first post for the TC1019 Fundamentals of Software Engineering course blog. :)