About functional an non functional requirements

Hello there! Today we are talking a little bit about Functional and non fuctional requirements in Software.

http://www.startxconsulting.com/wp-content/uploads/2015/05/iceberg-poster-300x200.jpg
Original at: http://www.startxconsulting.com

First of all, lets define what a requirement is:

Requirement: menas what needs to be covered to achieve the project,it cover the description and conditions in which the project must work and the things that needs to be covered.

We have User, System and Software requirements, user requirements are the ones stablished from the user, the main idea prototype of work and the main “characteristics” of the project.

The system requirements are the functionality of the project, all the services and specs joined thogether.

The software requirements are the details of which the software work, usually for the developers and Engineers to understand what is happening.

Let´s check what functional and non fucntional software requirements means with the help of a chapter of CS2 Software Engineering note 2 at CS2Ah Autumn 2004:

Functional requirements: Statements of services that the system should provide, how the system should react to particular inputs and how the system should behave in particular situations

Describe functionality or system services.

Depend on the type of software, expected users and the type of system where the software is used.

Functional user requirements may be high-level statements of what the system should do; functional system requirements should describe the system services in detail

Examples:

  • The user shall be able to search either all of the initial set of databases or select a subset from it.
  • The system shall provide appropriate viewers for the user to read documents in the document store.
  • Every order shall be allocated a unique identifier (ORDER ID) which the user shall be able to copy to the account’s permanent storage area

Non-functional requirements: Constraints on the services or functions offered by the system

5327432805_f430987fbc_z
by-nc-nd
Continue reading "About functional an non functional requirements"

About API´s

http://www.metatrader4.com/en/brokers/api
Original at: http://www.metatrader4.com/en/brokers/api

It´s time to talk about Application programming interfaces, that thing all of us young software developers has used at least one time and maybe without knowing what it is:

In Jeff Standen words:

You can consider an API as the alternative “user interface” that software uses to interact with other software.

We humans are familiar with user interfaces that have fancy layouts with buttons, fonts, colors, graphics, etc; and most of that is unnecessary to a machine.  Machines wouldn’t open up a program or website, take a screenshot of that section of the monitor, and then try to parse its meaning visually like a human would.

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.

https://www.quora.com/profile/Jeff-Standen

So, APIs gives us the option to make more “easy” the way we program and connect to other software. Let´s tink in an example:

Imagine a 70´s or earliest car, the one that needs to be “recharged” with a pulley to obtain enough power to be moved, you constantly needed to check for water, oil and conditions of the car and the only thing you were able to see were the velocity in a tiny indicator.

Let´s have a look at the other side of the coin. Nowadays, cars starts with a button, you don´t need other thing that see the screen in the car to know all the state of it (in modern ones), velocity, temperatures

https://sanjaysaha.wordpress.com/2012/08/10/api/
http://www.adweek.com/socialtimes/optimove-api-custom-audiences/433003
Continue reading "About API´s"

UML (Diagram and methods)

Today we are starting on UML (Unified Modeling Language) different implementation methods.

This topic is about UML with class oriented explanation.

Since UML can be used as Object Oriented, the paradigm is able to be part of the UML envioronment.

Class Diagram:

The next diagram shows the Oriented Object with classes application of the UML:

diagrama-de-clases6
Original at: https://onlineshop09.files.wordpress.com

This diagram is used during the analysis and design of Systems, were the complete information of the concept of the system is involved.

Is important to show the atributes, classes and methods of the entire topology in this diagram, so it can be understood what is the structure of the sytem.

Object Diagram:

http://2.bp.blogspot.com/-sVQ1mcWlbPU/T6HmmdGD1nI/AAAAAAAAAyc/ToyCrK_CTxo/s640/D+de+objetos.gif
Original at: http://2.bp.blogspot.com

This is part of the static view of the system, this is the relation between the methods of the classes, making more suitable to know whom is related with others and what way.

Design Pattern:

Design patterns provide a standard terminology and are specific to particular scenario.

As per the design pattern reference book Design Patterns – Elements of Reusable Object-Oriented Software , there are 23 design patterns. These patterns can be classified in three categories: Creational, Structural and behavioral patterns. We’ll also discuss another category of design patterns: J2EE design patterns.

S.N. Pattern & Description
1 Creational Patterns
These design patterns provides way to create objects while hiding the creation logic, rather than instantiating objects directly using new opreator. This gives program more flexibility in deciding which objects need to be created for a given use case.
2 Structural Patterns
These design patterns concern class and object composition. Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionalities.
3 Behavioral Patterns
These design patterns are specifically concerned with communication between
http://www.tutorialspoint.com/design_pattern/images/factory_pattern_uml_diagram.jpg
https://www.visual-paradigm.com/VPGallery/img/diagrams/State/State-Diagram-Sample.png
Continue reading "UML (Diagram and methods)"

UML Woa!

https://upload.wikimedia.org/wikipedia/en/2/2d/UML_logo.gif
Original at: https://upload.wikimedia.org/wikipedia/en/2/2d/UML_logo.gif

Let´s check what UML means and what we can do with it:

UML helps you specify, visualize, and document models of software systems, including their structure and design, in a way that meets all of these requirements. (You can use UML for business modeling and modeling of other non-software systems too.)

You can model just about any type of application, running on any type and combination of hardware, operating system, programming language, and network, in UML. Its flexibility lets you model distributed applications that use just about any middleware on the market. Built upon  fundamental OO concepts including class and operation, it’s a natural fit for object-oriented languages and environments such as C++, Java, and the recent C#, but you can use it to model non-OO applications as well in.

Things that can help modeling in UML:

Structure Diagrams include the Class Diagram, Object Diagram, Component Diagram, Composite Structure Diagram, Package Diagram, and Deployment Diagram.

Behavior Diagrams include the Use Case Diagram (used by some methodologies during requirements gathering); Activity Diagram, and State Machine Diagram.

Interaction Diagrams, all derived from the more general Behavior Diagram, include the Sequence Diagram, Communication Diagram, Timing Diagram, and Interaction Overview Diagram.

Steps to do UML:

1) Select a methodology: There are many methodologies, each differing in some way or ways from the others. There are many reasons why one methodology may be better than another for your particular project.

2) Select a UML Development Tool: Because most (although not all) UML-based tools implement a particular methodology, in some cases it might not be practical to pick a tool and then try to use it with a methodology that it wasn’t built for. But, some methodologies have been implemented on multiple tools so this is not strictly

3296789176_b916c963a2_o
Continue reading "UML Woa!"

Software Development Brief

Hi there! Let´s take a look about what steps needs to be covered to Develop software:

http://www.computerhope.com/jargon/s/softdeve.jpg

Prerequisites

First, you need to set up what needs to be done, how and maybe where.

This is commonly forgiven for the students to are starting in Software Development Process. Is always the “Let´s do it” and not the “How” what we think about.

So first, check what are going to be the main characteristics of your project, the main idea and stablish a work plan.

Design

Once you´ve set up a Prerequisites list/work plan, you need to start designing, it doesn´t mean having all the project in one area or all the idea stabliushed. Remember, Development is changing ideas and evolving this ideas thorough the process. Design means start with the idea, it can be pseudo-code or a draft code.

Implementation

Then, you need to clean your draft code, so the result can be implemented in the application phase. This is due to the excesive existence of bad code on the world and if you want to be a good SD´per you need to make the thing a good way.

Testing/Debugging

Here, maybe the hardest of the phases, at least for me, in this step you need to “patch” all the mistakes or fix all the bugs the code or the project has. This is harder because if you are keeping all the bugs to the final you are going to be losed in a bunch of bugs. Let´s have a time to debug in each step, and in this phase you can make your project be more efficient.

Documentation

This is one of my favorites, in this phase you need to explain what you made, Even if it is in the code (I prefer that) or in a special document. Please follow

Continue reading "Software Development Brief"

RAD model

http://www.chrysalis-solutions.com/images/rad.gif
From: http://www.chrysalis-solutions.com/images/rad.gif

RAD (Rapid Application Development) is based on prototyping and iterative development with no specific planning involved.

This uses the minimal planning processes to make more efficient the development process. In RAD model the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery.

RAD model distributes the analysis, design, build, and test phases into a series of short, iterative development cycles. Following are the phases of RAD Model:

  • Business Modeling: The business model for the product under development is designed in terms of flow of information and the distribution of information between various business channels. A complete business analysis is performed to find the vital information for business, how it can be obtained, how and when is the information processed and what are the factors driving successful flow of information.
  • Data Modeling: The information gathered in the Business Modeling phase is reviewed and analyzed to form sets of data objects vital for the business. The attributes of all data sets is identified and defined. The relation between these data objects are established and defined in detail in relevance to the business model.
  • Process Modeling: The data object sets defined in the Data Modeling phase are converted to establish the business information flow needed to achieve specific business objectives as per the business model. The process model for any changes or enhancements to the data object sets is defined in this phase. Process descriptions for adding , deleting, retrieving or modifying a data object are given.
  • Application Generation: The actual system is built and coding is done by using automation tools to convert process and data models into actual prototypes.
  • Testing and Turnover:The overall testing time is reduced in RAD model as the prototypes are independently
    http://www.onestoptesting.com/images/tradvsrad.jpg
    Continue reading "RAD model"

V – Shaped model

http://www.rootsitservices.com/pictures/v-shaped.jpg
Original at: http://www.rootsitservices.com/pictures/v-shaped.jpg

The V – Shaped model is a variant of Waterfall method more emphasized in the validation and verification phases of the software development proccess.

The different phases of this method are followed in parallel.

In V Model there are some steps or sequences specified which should be followed during performing test approach. Once one step completes we should move to the next step.

As V Model specifies that test plan should be started form the beginning when requirement phase starts. In above V Model you will see when requirement phase completed acceptance testing and system testing has been planned in parallel. Similarly once design phase completes, Integration testing should be planned and finally once coding phase completes, Unit testing should be planned.

 

Advantages of V Model

  • If project is small and easy to understand, V Model is the best approach as its easy and simple to use.
  • Many testing activities are performed in the beginning like planning and design which saves lots of testing time.
  • Most of the defects and bugs are found in the beginning of the project development. So less chances of defect or bug to be occurred at final testing phase.

Disadvantages of V Model

  • Guessing the error in the beginning of the project could take more time.
  • Less flexibility.
  • Any changes done in the middle of the development which is unplanned could make difficult to make the changes at all the places like test document and requirements.

When V Model should be followed.

  • V Model should be followed for small project where requirements are clear and easy to understand at the beginning of development.
  • V Model should be followed for the project where very less probability to make the changes in the middle of testing or development phase which
    Continue reading "V – Shaped model"

Waterfall model

http://www.rootsitservices.com/pictures/waterfall%20copy.jpg
Original at: http://www.rootsitservices.com/pictures/waterfall%20copy.jpg

This methodology of software development was one of the first to be implemented in order to have well made software.

In this model, all of the development of software is sliced in different steps, implemented one followed by another, always focused in different phases of the software development process. This phases are seperated to follow a sequential line. In other words, the process of Software development is sequantially.

Each of the phases means one different step:

  • Requirement and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
  • Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
  • Coding: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
  • Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
  • Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

 

The following table lists out the pros and cons of Waterfall model:

Pros Cons
  • Simple and easy to understand and use
  • Easy to manage due to the rigidity of the model . each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Continue reading "Waterfall model"

Extreme Programming

What is Extreme programming?

Let´s have a general look of what XP is:

It started in March 6, 1996 (As part of the Agile process).

https://7bsp1018.wikispaces.com/eXtreme+Programming
Original at: https://7bsp1018.wikispaces.com/eXtreme+Programming

Extreme Programming is successful because it stresses customer satisfaction.

There are five essential ways to improove XP:

  • Communication
  • Simplicity
  • Feedback
  • Respect
  • Courage

About XP the principal thing is that customers are like partners with developers in all steps of development process.

It all begins with the customer´s idea:

http://www.marketingprofs.com/articles/2013/10774/four-outside-the-box-ideas-to-better-understand-customer-experience

Then all is released in the developers line, the tasks a developer must cover along with the customer are:

Release and planning

In this step the developer and customer are planning the original idea and thinking how to make it “grow up”, like a little baby.

You don´t get away of this step until you get stablished the main idea and characteristics of the project.

Iteration

In this phase the developer starts to test and code the project according to release and planning deliverables.

You are stick in this phase until you change and fix all (or most) of the bugs. Then you release the lastest version.

Acceptance test

In this phase the customer and you are working to analyze the product and get feedback of it until the customer approves the final product.

At last, but not least:

A small releases are delivered.

https://loyalty360.org/loyalty-today/article/4-ways-to-deliver-outstanding-customer-experiences
At: https://loyalty360.org/loyalty-today/article/4-ways-to-deliver-outstanding-customer-experiences

 

If you want more info about XP visit:

http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap

http://www.extremeprogramming.org/

https://7bsp1018.wikispaces.com/eXtreme+Programming

 

With: Andrea Patriacia Trejo Dorantes at #TC1019

 


Agile Methodology

https://www.versionone.com/wp-content/uploads/2015/06/agile101-software-dev-300x200.gif
Original at: https://www.versionone.com/wp-content/uploads/2015/06/agile101-software-dev-300×200.gif

Agile Scrum Methodology

Scrum is a management and control process that cuts through complexity to focus on building software that meets business needs. With Scrum methodology, the “Product Owner” works closely with the team to identify and prioritize system functionality in form of a “Product Backlog”. The Product Backlog consists of features, bug fixes, non-functional requirements, etc. – whatever needs to be done in order to successfully deliver a working software system.

  • A “process framework” is a particular set of practices that must be followed in order for a process to be consistent with the framework. (For example, the Scrum process framework requires the use of development cycles called Sprints, the XP framework requires pair programming, and so forth.)
  • “Lightweight” means that the overhead of the process is kept as small as possible, to maximize the amount of productive time available for getting useful work done.

Lean and Kanban Software Development

Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the “Value Stream,” the mechanisms that deliver that Value. The main principles of Lean methodology include:

  • Eliminating Waste
  • Amplifying Learning
  • Deciding as Late as Possible
  • Delivering as Fast as Possible
  • Empowering the Team
  • Building Integrity In
  • Seeing the Whole
image1
Original at: https://www.infoq.com/articles/hiranabe-lean-agile-kanban

Lean also concentrates on the efficiency of the use of team resources, trying to ensure that everyone is productive as much of the time as possible.

Kanban is based on 3 basic principles:

  • Visualize what you do today (workflow): seeing all the items in context of each other can be very informative
  • Limit the amount of work in progress (WIP): this helps balance the flow-based approach so teams don ‘t start and commit to too much work at once
  • Enhance flow:
    http://dsdmofagilemethodology.wdfiles.com/local--files/start/ass11.PNG
    http://agilemodeling.com/images/lifecycleFDD.gif
    Continue reading "Agile Methodology"