What is software design?

Image result for software design

 

In the software design it is decided for what purpose are creating the software, which will be done and how it will look and what steps you are going to follow or methodologies. This would be the second step to follow in the software life cycle.
Envelops solve problems and plan a solution. Some serious considerations:
Compatibility

extensibility

security

usability

portability

performance.

Image result for software design

 


Unified Modeling Language

The Unified Modeling Language (UML) was created to forge a common, semantically and syntactically rich visual modeling language for the architecture, design, and implementation of complex software systems both structurally and behaviorally. UML has applications beyond software development, such as process flow in manufacturing

 

It allows you to have structure diagrams, behavior diagrams or interaction diagrams.

It is a graphic representation of the application of the software.

 

I will post as soon as I get my old computer an example of a UML structure diagram I made in DIA .

uml_logo

 


Software requirements elicitation and specification

In todays world, we recognize business analysis as the process of eliciting, gathering, discovering, capturing , defining and managing the requirements that any business solution has to meet.

The first step is to gather requirements, it means that developers discuss what the client is expecting from the software. Then, they organize this information in order of importance and convenience. If there are any trouble in the requirements they negotiate and discuss them with stakeholders. They should arrive to an agreement and remove all unrealistic requirements. All of this, must be documented and made available for next phase. this last step is

There are many requirement elicitation techniques, the common ones are:

Survey

Questrionnaires

Interviews

Facilitated sessions

 

 

For more information you could see this video below:

Requirements elicitation

 

 

Source:

 

 

 

 


Functional and non functional requirements

A functional requirement describes what a software system should do, while non-functional requirements place constraints on how the system will do so.

An example of a functional requirement would be:

  • A system must send an email whenever a certain condition is met (e.g. an order is placed, a customer signs up, etc).

A related non-functional requirement for the system may be:

  • Emails should be sent with a latency of no greater than 12 hours from such an activity.

The functional requirement is describing the behavior of the system as it relates to the system’s functionality. The non-functional requirement elaborates a performance characteristic of the system.

Typically non-functional requirements fall into areas such as:

  • Accessibility
  • Capacity, current and forecast
  • Compliance
  • Documentation
  • Disaster recovery
  • Efficiency
  • Effectiveness
  • Extensibility

AND MORE..

Non-functional requirements are sometimes defined in terms of metrics (something that can be measured about the system) to make them more tangible. Non-functional requirements may also describe aspects of the system that don’t relate to it’s execution, but rather to it’s evolution over time


Waterfall method

This is the grandfather of other lifecycle models. The project progresses to an orderly  sequence of steps. From the initial software concept,down until the final phase. Which is system testing. And at the end of each phase there will be a review to determine wheter the project is ready to advance to the next phase. This model works when there is a stable product definition.

The main advantage of waterfall model is that it allows you to find errors early, but the main disadvantage is that it is not flexible.water


Software Development Processes

For me, Software Development Process is going from an abstract idea in somebody head (for example the costumer) to a concrete system, that actually implements that idea. I think it is a very complex process because it can be overwhelming.

First in the software development process, the requirements phase outlines the goals of what the program will be capable of doing. Next, the design phase covers how the program is going to be created, who will be doing what, etc. The implementation phase is where the programmers and other designers start work on the program. After the developers have a working copy, the testing and verification step can begin to help verify the program has no errors. During the testing phase, problems found are fixed, until the program meets the company’s quality controls. After the program’s development, the documentation phase on how to use the program can be completed. Finally, maintaining (updating) the program must continue for several years after the initial release.

A software development process makes everything easier and reduces the amount of problems encountered, is the way we take a task into smaller steps that we can handle.

 

 

Source: http://www.computerhope.com/jargon/s/softdeve.htm


Software lifecycle

The System Development Life Cycle is a structured and well defined sequence of Steps in Software Engineering to develop desired products.

There are 5 phases, lets look at each one.

Requirements Gathering/Analysis:

This is an iterative process with much communication taking place between stakeholders, end users and the project team.

Design:

The Business Requirements are used to define how the application will be written.  Technical requirements will detail database tables to be added, new transactions to be defined, security processes and hardware and system requirements.

Coding:

The developer may demonstrate the work accomplished to the Business Analysts and tweaks and enhancements may be required.

Testing:

User acceptance testing is the last part of testing and is performed by the end users to ensure the system meets their expectations.

Implementation/Deployment:

Training may be required for end users, operations and on-call IT staff.  Roll-out of the system may be performed in stages starting with one branch then slowly adding all locations or it could be a full blown implementation.

Bugs & Fixing:

Continues improvement and fixing of the software is essential, Airbrake provides robust bug capturing in your application. In doing so, it notifies you with bugs instantly, allows you to easily review them, tie the bug to an individual piece of code, and trace the cause back to recent changes.

 

Source: https://airbrake.io/blog/insight/what-is-the-software-development-life-cycle


Ethics in software engineering

Professional ethics are set of rules, regulations, and a code of conduct that govern how a professional deals with each other and others outside of the profession.

Software has the potential to do good or cause harm, to eneable or influence others to do good or cause harm.

ethics

Principle 1: PRODUCT

Software engineers shall, insofar as possible, ensure that the software on which they work is useful and of acceptable quality to the public, the employer, the client, and the user; completed on time and at reasonable cost; and free of error.

Principle 2: PUBLIC

Software engineers shall, in their professional role, act only in ways consistent with the public safety, health, and welfare.

Principle 3: JUDGMENT

Software engineers shall, insofar as possible and consistent with Principle 2, protect both the independence of their professional judgment and their reputation for such judgment.

Principle 4: CLIENT AND EMPLOYER

Software engineers shall, consistent with the public health, safety, and welfare, always act in professional matters as faithful agents and trustees of their client or employer.

Principle 5: MANAGEMENT

A software engineer in a management or leadership capacity shall act fairly and shall enable and encourage those who they lead to meet their own and collective obligations, including those under this code.

Principle 6: PROFESSION

Software engineers shall, in all professional matters, advance both the integrity and reputation of their profession as is consistent with public health, safety, and welfare.

Principle 7: COLLEAGUES

Software engineers shall treat all those with whom they work fairly and take positive steps to support these collegial activities.

Principle 8: SELF

Software engineers shall, throughout their career, strive to enhance their own ability to practice their profession as it should be practiced.

 

Source: http://www.itk.ilstu.edu/faculty/bllim/itk178/Software%20Engineering%20Code%20of%20Ethics,%20Version%203_0.htm


Ethics in software engineering

Professional ethics are set of rules, regulations, and a code of conduct that govern how a professional deals with each other and others outside of the profession.

Software has the potential to do good or cause harm, to eneable or influence others to do good or cause harm.

ethics

Principle 1: PRODUCT

Software engineers shall, insofar as possible, ensure that the software on which they work is useful and of acceptable quality to the public, the employer, the client, and the user; completed on time and at reasonable cost; and free of error.

Principle 2: PUBLIC

Software engineers shall, in their professional role, act only in ways consistent with the public safety, health, and welfare.

Principle 3: JUDGMENT

Software engineers shall, insofar as possible and consistent with Principle 2, protect both the independence of their professional judgment and their reputation for such judgment.

Principle 4: CLIENT AND EMPLOYER

Software engineers shall, consistent with the public health, safety, and welfare, always act in professional matters as faithful agents and trustees of their client or employer.

Principle 5: MANAGEMENT

A software engineer in a management or leadership capacity shall act fairly and shall enable and encourage those who they lead to meet their own and collective obligations, including those under this code.

Principle 6: PROFESSION

Software engineers shall, in all professional matters, advance both the integrity and reputation of their profession as is consistent with public health, safety, and welfare.

Principle 7: COLLEAGUES

Software engineers shall treat all those with whom they work fairly and take positive steps to support these collegial activities.

Principle 8: SELF

Software engineers shall, throughout their career, strive to enhance their own ability to practice their profession as it should be practiced.

 

Source: http://www.itk.ilstu.edu/faculty/bllim/itk178/Software%20Engineering%20Code%20of%20Ethics,%20Version%203_0.htm


Why Telegram is the best messaging app

Telegram has become very popular, it is a messaging app. It is Simple to use, it is fast and have high security standard. But what is so interesting about telegram?

It has Secret chats!!

It is based on MTProto Mobile protocol and brings end-to-end encryption with “Secret chats”. It also has the cool self-destruct feature and notifications to users when a screenshot is taken by the recipient. Moreover, Telegram is open-source

allahu

You can download a Bot of any kind or create your own !

 

photo_2016-09-01_11-40-18

 

Edit Message and mention people, but the best thing of all… it has Stickers!!

Telegram-Messenger-App-Tricks-add-stickers