Unified Modeling Language (UML)

UML specification defines two major kinds of UML diagram: structure diagrams and behavior diagrams.

uml-diagram-types1

Structure diagrams show the static structure of the system and its parts on different abstraction and implementation levels and how they are related to each other. The elements in a structure diagram represent the meaningful concepts of a system, and may include abstract, real world and implementation concepts.

In UML you design diagrams that can contain different elements of the software, for example, the most common is the one where you write the name of the class, its attributes and its methods. But it all depends of the diagram you use. In UML there are many different diagrams with different uses and elements that you can write.

Is not necessary to become an expert of UML because is not actually a must for learning actual coding, but is important to know about it because it helps in the design part of software. Creating an UML diagram is like drawing a sketch, is not that important and is unnecessary to put much effort on it, just with understanding the idea is enough.

There are many UML diagrams (13 to be exactly) so in the next section there are only the three most important.

Benefits of using UML:

  • Improves development time
  • Establishes concepts and executables
  • Creates a modeling language used by humans and machines
  • Improves support and control for project management
  • High reuse and reduced costs
  • Models systems using object oriented concepts

16606559137_dba0bba7c1_z

 


JUnit

JAVASOFT VP JAMES GOSLING SLAPS PIE ON GATES IMPERSONATOR

James Gosling slings a pie in the face of a Bill Gates impersonator.

Software testing is actually something that we have always done since we learned how to program, we have used it homework and projects from program classes, for example, in fundamentals of programing and POO. The purpose of testing is to verify that your program o software is doing or it does exactly what is intended to do and also to look for bugs that happens on particular cases.

“JUnit promotes the idea of “first testing then coding”, which emphasizes on setting up the test data for a piece of code that can be tested first and then implemented”

In java, JUnit is  used as a library by importing the necessary classes an then creating a constructor of the test and implementing methods that call an instance of the class you want to test that are used to execute specific method of the tested class. The goal for each of those testing methods is to assert the expect behavior comparing the the expected value and the actual value. You can use any data type: from data primitive (such as int, char, float, etc.) to arrays of any type, any objects and nulls.

A Unit Test Case is a part of code, which ensures that another part of code (method) works as expected. To achieve the desired results quickly, a test framework is required and JUnit is perfect for that.

A formal written unit test case is characterized by a known input and an expected output, which is worked out before the test is executed. The known input should test a precondition and the expected output should test a post-condition.

There must be at least two unit test cases for each requirement − one positive test and one

Continue reading "JUnit"

Requirements Elicitation and Specification

roll-the-dice-craps-board-game-points-122427.jpeg

Elic… what? that sounds complicated. Well, it actually isn’t. I’ve talked about functional and non-functional requirements before, but this is something completely different.

As you may remember, the first step of the SDLC is collecting infomation, requirements elicitation and specification are part of this step.

Requirement elicitation, is actually the first thing you have to do in the software life-cycle and is the practice of finding out what the customer or user wants. In an informal concept, is more like a wish list of requirements. But there are many problems that are almost impossible to avoid because it depends more of the customer, for example: he doesn’t know exactly what he wants, he thinks that some specifications are obvious or his needs changed and want the software to do something else.

Requirements elicitation practices include:

  • Interviews
  • Questionnaires
  • User observation
  • Workshops
  • Brainstorming
  • Use cases
  • Role playing
  • Prototyping

Once you know what the customer wants, you’ll be able to do the software requirement specification (SRS), which is a process of recording the client’s requirements in any form, like a document, a graphical representation, a graph, a pie, a cake, brownies, etc.

SRS also contains the functional and non-functional requirements and other specification types, for example: performance, maintainability, reliability, resource, etc.

Sources:

http://www.tutorialspoint.com/software_engineering/software_requirements.htm

https://en.wikipedia.org/wiki/Requirements_elicitation

http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=12553


Functional and non-functional requirements

A functional requirement is something the product needs to work, perform an action and fulfill the purpose. It answers the question of “What does it do?”. They describe the minimal requirements of the product functionality. A non-funtional requirement is something that the product have to increase it quality. It answers the question of  “How does it do it?”. Non-functional requirements are extras made to improve the functionality of the product.

To be more precise, in software engineer, functional requirements define the functions of the system, is the description of the feature required. It also includes description of the required functions. Some examples of functional requirements are calculations, technical details, data manipulation and processing.

Non-Functional requirements focus on quality factors and effectiveness. These factors are what give value to the software and make the functional requirements function appropriately.

epiphone.jpg

Some non-functional requirements may be:
1. Usability
2. Availability
3. Reliability
4. Flexibility
5. Supportability
6. Performance

References:

Sqa.org.uk. (2016). Functional and Non-Functional Requirements. [online] Available at: http://www.sqa.org.uk/e-learning/SDM03CD/page_02.htm [Accessed 13 Sep. 2016].

SearchSoftwareQuality. (2016). Functional vs non-functional requirements, what is the difference?. [online] Available at: http://searchsoftwarequality.techtarget.com/answer/Functional-vs-non-functional-requirements-what-is-the-difference [Accessed 13 Sep. 2016].


Hermes's Blog 2016-09-12 16:26:37

Application Programming Interfaces (APIs) allow applications to talk to other applications, but that is just one small aspect of their true power. Websites, Mobile Apps, Buttons, Badges, Widgets, Spreadsheets and Devices are all benefiting from the power of APIs. API driven interactions allow you as an user to generate your own content, acquire API access to valuable data and pull content from API resources and  various databases.

Every time we visit a website or application we leave a digital footprint on them that helps them evolve based on our experience. With the innovation of all digital things, websitesd and applications have evolved to being generated through development software and software as a service platforms.

Machines just need a shorthand way to do things like checking the current weather or adding an event to your calendar.  That’s what an API provides.

APIs can be web-based, or specific to a platform.  Google has APIs for search, calendars, translations, etc.  Facebook and Twitter have APIs that allow software to automatically post status updates.  Apple provides many APIs for building iPhone apps.

You might think that APIs are very recent, but they’re not. The function of an API, at first, was to connect one program to another. Then in 2007 the iPhone was released and there the power or APIs got 10000 times bigger and more important, because thanks to the iPhone, mobile apps became part of our lives.

This cool video will help you understand APIs more easily.

Sources:

API Evangelist

https://sanjaysaha.wordpress.com/2012/08/10/api/

What APIs Are And Why They’re Important


The waterfall method

The waterfall method was the first Software Development Cycle Model used widely in Software Engineering. In this method, the process of software development is divided into separate phases, the outcome of one of phase acts as the input for the next phase sequentially.

A representation of different phases of waterfall model.

SDLC Waterfall Model

The phases of the waterfall method are:

1. Requirement Gathering & Analysis: Ask the client what their needs and expectations are.
2. System Design: Requirements for the System and Hardware specification to define overall architecture.
3. Implementation: Program is developed in small units and tested (Unit Testing).
4. Integration and Testing: All units are put together and tested for faults and failures.
5. Deployment: After functional and non functional testing, the product is delivered.
6. Maintenance: Regular updates and issue resolving.

The advantages of using the Waterfall Method are:

  • Is easy to comprehend
  • Allows for departmentalization and control
  • Each stage can have a predetermined due time

 

 

Although, it has the disadvantage of being unable to go back if one of the steps has a mistake that was discovered in the next stages.

Tech Target. (2016). waterfall model. August 8th, 2016, from Tech Target Website: http://searchsoftwarequality.techtarget.com/definition/waterfall-model

http://www.tutorialspoint.com. (2016). SDLC – Waterfall Model. [online] Available at: http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm [Accessed 12 Sep. 2016].


Software Configuration Management

Geometric decorationStatistics:

  • 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

Resultado de imagen para software configuration management

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 of a software product in

Continue reading "Software Configuration Management"

The Software Development Process

Brown Hotdog on a Brown Plate

What is a software development process?

The software development process is a structure imposed on the development of a software product. It is a splitting of software development work into distinct phases containing activities with the intent of better planning and management.

There are several models or methodologies, each describing approaches to a variety of tasks or activities that take place duri  ng the process. Common methodologies include the waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, extreme programming and various types of agile methodology. Free stock photo of schedule, startup, to do, concept 

Process Steps

SE processes are composed of many activities/steps:

  • Requirement Analysis
    • While the customer probably believe they know what the software is to do, it is common that you need to recognize incomplete, ambiguous or contradictory requirements.
  • Specification
    • In this step a precise description of the software is to be written. 
  • Software architecture
    • Design an abstract representation of the system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that the future req  uirement can be addressed.
  • Implementation
    • Very self explanatory, code the design.
  • Testing
    • Testing the software.
  • Documentation
    • For the purpose of future maintenance and enhancement.
  • Training and support
    • It is very important to have training classes for the most enthusiastic software users, incorporate the rest of the organization into adopting the new software.
  • Maintenance
    • Maintaining and enhancing software to co  pe with the new problems or new requirements. It may be necessary to add code and determine how the software works. 

 


Extreme Programming

Extreme programming  (XP) is a popular Agile development process at many companies and industries because it stresses customer satisfaction.

Resultado de imagen para extreme programming photos

In this process you don’t set a due date for the work, it delivers the software you need as you need it, it emphasizes teamwork, everyone is equal no matter what they do. It enables teams to be highly productive.

Agile flow chart

XP improves communication, simplicity, feedback, respect and courage in software development.

  • Simplicity: We do what is needed and asked for, but no more. take small simple steps  to our goal and mitigate failures as they happen.
  • Communication: We communicate face to face daily. We work together on everything.
  • Feedback: We demonstrate our software our software early and listen carefully and make any changes needed.
  • Respect: Everyone is an important member of the team. Everyone contributes value to the project, even if it’s simply enthusiasm.
  • Courage: We tell the truth about progress and estimates. Don’t fear anything because no one ever works alone. Adapt to changes when ever they happen.

XP tries to deliver the system to the customer as early as possible and implement changes as suggested. It has few and very simple rules to follow, that involves planning, managing, designing, coding and testing. You can see more about the rules here.

Extreme Programming flow chart

 


SDLC

Software Development Life Cycle is an industry technique, an international standard used to design, develop and test software to meet the user expectations. It also helps to reach goals within time and cost estimates.

Stages of SDLCThe SDLC consists of the following stages:

1. Planning

It is performed by the senior members with inputs from the customer, sales department, market surveys and domain expert. This information is then used to plan the basic project approach. Identification of the risks associated with the project. Define the technical approaches that can be followed to implement the project successfully with minimum risks.

2. Defining requirements

Define and document the product requirements and get them approved from the customer or the market analysts.

3. Designing the product architecture

Based on the requirements specified in SRS,usually more  than one design approach for the product architecture is proposed and documented in a DDS (Design Document Specification).

The DDS is then reviewed by the stakeholders and the best approach is selected for the product.

4. Building the product

The development starts, the programming code is generated as per DDS. Developers has to follow the coding guidelines by their organization and programming tools.

5. Testing the product

Testing stage of the product where products defects are reported, tracked, fixed and retested, until reaches standards defined in the SRS.

6. Deployment

Once the product has been developed and tested it’s ready to be released to the market. The product may first be released in a limited segment and tested in a real business environment. Based on the feedback, the product may be released as it is or with suggested enhancements in the targeting market segment. After the product is released in the market, its maintenance is done for the existing customer base.

 

There are several SDLC models: