UML: The Best Diagrams

UML stands for Unified Modeling Language which is used in object oriented software engineering. The UML types are divided into two categories which are structure and behavioral diagrams. In this set of blog posts we will describe the best UML useful diagrams that are out there:

1. Class Diagram 

Class diagrams are the most UML diagrams used when modeling application structures. These diagrams are based mainly in building blocks of object oriented solutions that show classes, attributes and operators or methods. When having large systems that have many related classes, these are grouped together in order to create class diagrams. The relations between classes are differentiated with different types of arrows.

class-diagram-example-hasp-licensing-domain

2. Activity Diagram

3. Deployment Diagram

4. Sequence Diagram

 

 

 

 


Will it be the iPhone 7?

We are a few hours away from Apple’s traditional September keynote and what this keynote is about to reveal almost 100% confirmed is another iPhone model and probably other device upgrades from their entire collection.

Apple updates its phone lineup every year bringing new features and capabilities with them but with the iPhone “7” launch, are the the new features enough to convince the audience about their new smartphone?

Some of the heaviest rumors point out the following upgrades:

  • No 3.5 mm headphone jack anymore
  • Up to 5 colors
  • Dual lens camera on the bigger model
  • 32,128,256 GB configurations
  • Water proofing
  • Enhanced 3D Touch display
  • Bigger battery
  • Improved performance

All of these characteristics won’t be able to be confirmed until the keynote time is here. Today’s keynote will start at 10 a.m. PDT. If you’d like to watch it live, click here.


APIs

APIs (Application Programming Interfaces) allow interaction between applications or websites. Most of the current webpages have APIs and sometimes we don’t even notice that.

While having this type of “relationship” among websites,these are being enriched Untitled-2-02.pngwith the connection and interaction as the content interlinks and relates seamlessly.

At Kin Lane’s site, 101.apievangelist.com, there is ia huge explanation and analysis of the most commonly used websites back in 2014, which most of them are still part of the daily life of a tech-average person. He shows these sites have APIs working throughout the whole sites.

What is really interesting is how this analysis at some point may start to be obsolete, since most of the websites/apps that he describes have evolved and been modified already. Take a look at the following picture for example, Instagram back in 2014 compared to nowadays Instagram.
ig 14vs16

Almost everything has changed in the user interface that Instagram had compared to what it offers right now. Even the font has been tweaked a little.

What’s important about this is that back in 2014 and now in 2016, APIs were used throughout the web without any problem letting users experience a much easier way to interact with others and explore the internet universe.

Read more

 


Software lifecycle

macbook-apple-imac-computer-39284

When thinking about anything related to life, there’s always a beginning and an end. Software development isn’t any different from that idea. While software is being created, its lifecycle is barely starting.

Software life cycle models describe phases of the software cycle and the order in which those phases are executed.

Software development has stages through the entire process and sequences that are followed step by step in order to fulfill with satisfaction the whole project. Some of these stages are:

  • Requirement gathering and analysis
  • Design
  • Implementation or coding
  • Testing
  • Deployment
  • Maintenance

Although disappearing or dying isn’t part of that list, I would include that as the final step on the lifecycle of any kind of software since there will always be other that will replace the existing ones and make those obsolete.

If you’d like to read more on this topic, I’ve found some interesting sources to have other approaches on this topic.

Source 1    Source 2

Source 3    Source 4

 

 


Software Configuration Management

In this article, the software engineering  discipline called Software Configuration Management (SCM) will be explained.

pexels-photo-89724

So, what is the SCM?

It is a software-engineering discipline comprising the tools and techniques through processes and/or methodologies that a company uses to manage change to its software envirnoment. Good practices among the software development area define the SCM. For all of the software projects that are under development or in a more advanced phase, enhancement on the reliability and quality of software is made by:

• Providing structure for identifying and controlling documentation, code, interfaces, and databases to support all life-cycle phases

• Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy

• Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.

There are some practices suggested when working under a SCM:

  • 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.
  • Integrate early and often.
  • Ensure reproducibility of software builds.

But, how did all of this started?

All this information was based on Pearsonhieghered, from the first chapter on their called “Sotware Engineering”, by Ian Sommerville.

 


Agile S. D.

Based on the Agile Alliance, Agile Software Development is a group of methods and practices which are based on values and principles stated in a document called Agile Manifesto.

The “Agile” term appeared in 2001 when some software developers gathered to discuss and shair the ideas that each individual had about software development.

Agile-Development

Image source

The Agile Alliance developed 12 principles as follows:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Main source

My classmate Michelle Sagnelli also made a research on Agile regarding methodologies and the meaning Agile has as well.

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

Continue reading "Agile S. D."

Ethics & computer engineering

According to one of the most recognized organizations among software and engineering, the ACM (Association for Computing Machinery), the interests develpers have must meet public interests. Relationships between these two must always have consistency meet public interests as well. Besides this, the product being under development should always be based on professional standards as possible.

Integrity is a key element, engineers work should maintain integrity and independence.

coding macbook

 

Besides this, we had a disscussion in class, which will be linked at the end of this post for more information.

Main source here

Class Discussion


Software Engineering. Art or discipline?

Developing ideas through software is the perfect way to show up what minds are capable of. In my opinion, software engineering is both an art and a discipline. Art because every eengineer developing software has its own way of thinking and intepreting daily life problems in order to solve them. Discipline because developing software isn’t simple. Sofware development requires constant and efficient work.macbook-laptop-computer-technology-programming-coding-code-mobile-smartphone-business-office-desk