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"

Software developing ethics

Every profession, in order to be professional (oh, I love recursion), must work with ethical principles. Software engineering is not the exception. Why? Because, without a code of ethics (CoE from now on).

In my particular case, I’ve chosen the ACM CoE. It talks about the relationship of the software engineer with several people. You can find it here. But, here’s a summary:

  • Public (people who use your software): Your products need to be consistent on what the public wants.
  • Client and employer (the ones who pay): The product must also satisfy their demands, without forgetting about the public.
  • Product (what you build): Produce quality products. Don’t write shitty code.
  • Judgment (what you think and do): Keep dignity and integrity.
  • Management (your subordinates): Pass this code and be sure it’s followed up.
  • Profession (what you do): Act professional, as in every other job.
  • Colleagues (other programmers with which you may or may not work): Support them, they are allies.
  • One self: Keep learning. Never stop studying.

If you want a summary of the summary, here’s this twitter:

flickr photo by Medialab Prado https://flickr.com/photos/medialab-prado/14391836308 shared under a Creative Commons (BY-SA) license
flickr photo by Medialab Prado https://flickr.com/photos/medialab-prado/14391836308 shared under a Creative Commons (BY-SA) license

Ethics in software engineering

rightandwrongdecisions

Software engineering ethics are a subset of engineering ethics and professional ethics applied to the design and development of software systems.

The ACM/IEEE-CS Code of Ethics and Professional Practice have a standard for teaching and practicing software engineering. In this code they have eight important principles  witch are Public, Cient and employer, Product, Judgment, Management, Profession, Colleagues, Self.

in the sort version of the Code of Ethics these are the definition for the principles.

1. PUBLIC – Software engineers shall act consistently with the public interest. (You accept the full responsibility of the work that you do, You have to be honest)

2. CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. (You have to talk with your client and employer, do not cheat, because you make a bad reputation)

3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. (Don’t copy the code of someone else, don’t lie about it)

4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.(selects what is best and do not go above others)

5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.(If you are the leader of the develop team, be the ombudsman, do not lie, cheat, only be a good person)

6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. (Don’t create problems for the community, because the other people will think that the programmers are bad and don’t work)

7. COLLEAGUES – Software engineers shall be fair to and supportive of their

Continue reading "Ethics in software engineering"

Code of Ethics

9577521978_e9b81b5822
Retrieved from: http://www.flickr.com

A code of ethics is a set of rules used as a guide for companies to demonstrate the expected behavior from the employees. The main purpose of these regulations is to conduct employee’s actions in accordance with values and ethical standards (Business Dictionary, 2016). In software engineering, it is almost the same rules that are applied to every software company with just a few variations.

This code of ethics was created by the Association for Computing Machinery in association with the Institute for Electrical and Electronics Engineers. It is divided in the following eight principles:

  1. Public: Act consistently with the public interest. Software engineers shall accept full responsibly of their work. Also, commit to making its software error free and usable.
  2. Client and employer: Know their limitants and act in a manner that is in the best interest of their client and employer.
  3. Product: Engineers must ensure that their products meet the highest professional standards possible
  4. Judgment: Maintain integrity and independence in their professional judgment
  5. Management: Ensure good management and maintenance according to an ethical approach
  6. Profession: shall advance the integrity and reputation of the profession consistent with the public interest
  7. Colleagues: Software engineers shall be fair and supportive with their colleagues.
  8. Self: Engineers must promote an ethical environment and participate in a lifelong learning

 

References:

Association for Computing Machinery. (1999). Software Engineering Code of Ethics and Professional Practice. August 8th, 2016, from ACM. Website: http://www.acm.org/about/se-code

Business Dictionary. (2016). Code of ethics. August 8th, 2016, from Business Dictionary. Website: http://www.businessdictionary.com/definition/code-of-ethics.html


What are Ethics for?

ethics-0

As any other profession, Software Engineering has its own Code of Ethics. It was developed by the ACM and the IEEE to make the software community a good place to be part of and to make standards of ethic and professional development.

The Code consists in 8 principles:

  1. PUBLIC: Developers shall look for the public well-being. Our projects aren’t made for us, developers, to use it, it’s for the rest of the world, and we must give them something worth to spend time on (and money).
  2. CLIENT AND EMPLOYER: I think the important part of this principle is confidentiality. As workers, we will be asked to work with someone else’s data, and the right thing to do is not to pay interest and mind our own business. But also, it’s possible to be in difficult situations as being asked to work on something illegal or un-ethical, maybe for a big amount of money, who knows. Well, this Code says: Please, decline the offer.
  3. PRODUCT: Basically, do your best, surprise people with your creation.
  4. JUDGEMENT: Support the human values and be honest, very simple.
  5. MANAGEMENT: Developing software isn’t just coding. We must plan, think about the investment, design algorithms, consider the software requirements, the maintenance. There are so many things in the process of developing that we must do to create something amazing!
  6. PROFESSION: The day we decided to join the journey of software engineering we joined a huge community that has decided to do awesome things to make the world a better place. So, don’t let people to think the otherwise.
  7. COLLEAGUES: As I said in the previous principle, this community is full of ideas that we must respect and support. Team work makes wonders in this industry.
  8. SELF: Nobody is perfect, to improve in every aspect of our lives
    Continue reading "What are Ethics for?"

Programmers, there are rules to follow

For those of you new to software engineering, the Association for Computing Machinery ACM developed a code of ethics for all programmers and professionals in software engineering. If you are asking yourself: if I am able to code anything, why do I need to follow rules? Well, your code must have a target public, and these rules apply to commit to the health, safety and welfare of that public. There are eight basic principles as stated by the ACM:

  • PUBLIC – Software engineers shall act consistently with the public interest.
  • CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
  • PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
  • JUDGEMENT – Software engineers shall maintain integrity and independence in their professional judgement.
  • MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
  • PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
  • COLLEAGUES – Software engineers shall be fair to and supportive to their colleagues.
  • SELF –  Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

I, as a software engineer, agree with you. We are the future, software engineering is the future of society, and when we are coding we appear as wizards. Let’s aim, however, for a better future, and contribute with our programming to develop a healthier coding ambiance.

Full version of ACM’s code of ethics

References:

http://www.acm.org/about/se-code


To be ethical or not to be ethical, that is the question…

Sometimes we forget that software engineering, as any other profession also has some rules and a code to live & work by. Any professional, free lancer or even a student should implement some basic rules in their work.

PUBLIC

Software engineers should act in a way that benefits public interest.

CLIENT & EMPLOYER

Acting according to the best interest of the client/employer which is according to public interest.

PRODUCT

Always try to meet the best professional standards.

JUDGEMENT

Maintain independent integrity in their projects.

MANAGEMENT

Software development and mantainance should always be managed in an ethical way.

PROFESION

Engineers should always improve the profession in an ethical way.

COLLEAGUES

Software engineers must be fair and collaborative with their peers

SELF

Software engineers must maintaing a constant learning attitude and maintain the ethics in their work.

Ethics

ethics

A code of ethics is so essential in the software engineering. This code is needed to be followed in order to create a good environment between customers and employers. The ACM code of ethics is divided in eight main concepts : public, client and employer, product, judgement, management, profession, colleagues, and self.

We had a discussion the other day in class and we joined all of our ideas. If you want to follow the discussion, visit the following link: https://tc1019carminaperezguerrero.wordpress.com/2016/08/19/inside-the-mind-of-a-moral-software-engineer/.

Here is the Code of Ethics from the ACM if you want to read it by yourself: http://www.acm.org/about/se-code.

I agree with almost all of these main concepts. I think that a code of ethics is needed in software engineering because we all need to establish some rules in order to act as an integral person while working. We are here to improve and develop new ways to live. If we are the future, we need to create a great future.

 

 


Group talk about Ethics in Software Engineering



Today we talked about ethics in ken´s class.

Frida, Sara, José Manuel, Estefy, Hermes and me discussed what are ethics and why we need them while making software.

Ethics are important in software engineering because they contribute to society and human well-being, be honest and trusworthly, be fair, honor property rights, respect privacy and in general have a good professional conduct.  
Software engineering ethics are based on 8 principles that were principaly made to avoid harming others:

-Public
-Client and employer
-Product
-Judgement
-Management
-Profession
-Coleagues
-Self

We discussed a really important point about this, some said that the code of ethics is not a code of rules, it´s just made to suggest a proper conduct but following it or not is an obligation. I personally think that this depends on the place you are working, some companies care about their public image and they will fire you if they notice that you are doing something unethical, but others don´t care if they are harming others with their products and sometimes promote unethical software (see malware). Of course, it is optimal that every software engineer follow the code of ethics as a personal way of living but in reality some people and companies just care for money and they don´t care if they are doing something unethical as long as they are winning more.

How to do Software ethically and don´t die trying.

ethics-and-compliance_wide

Image from: https://howtobeastoic.wordpress.com/2015/09/17/ancient-vs-modern-ethics-a-comparison/

Every day, a lot of lines of code are written in the world with or without thinking of how, when and whom are going to use them.

Here we explain a little how a code of Ethics for Software Engineering works and is stablished, due to the need of ethics application in all professional activities.

Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:

1. PUBLIC – Software engineers shall act consistently with the public interest.

2. CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.

3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.

4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.

5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.

6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.

7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.

8. SELF – Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Seems easy right? Let´s check what these principles means to do:

PUBLIC

The engineer shall accept for their work even if the work produces any good or bad situations. Test is an important thing in software related with

Continue reading "How to do Software ethically and don´t die trying."