Standards
14 Slides198.00 KB
Standards
I think there is a bug in my code func GreenEggsNHam(Not SamIAm, Green EggsNHam) foreach Green TryThem in SamIAm do EatThem(TryThem) false NotInACarNotOnABus(EggsNHam) Func NotInACarNotOnABus(Green EggsNHam) EatThem(EggsNHam) true NotOnAPlane(EggsNHam) foreach NotLikeThem SamIAm of EggsNHam do if not EatThem(SamIAm) then NotInACarNotOnABus(SamIAm) IDoNotLikeThem(EggsNHam) CS351 - Software Engineering (AY2004) Slide 2
After applying a coding standard func DepthFirstSearch(graph G, vertex v) foreach vertex w in G do Encountered(w) false RecursiveDFS(v) Func RecursiveDFS(vertex v) Encountered(v) true PreVisit(v) foreach neighbour w of v do if not Encountered(w) then RecursiveDFS(w) PostVisit(v) CS351 - Software Engineering (AY2004) Slide 3
Coding standards Coding standards are guidelines for code style and documentation. They may be formal (IEEE) standards, or company specific standards. The aim is that everyone in the organization will be able to read and work on the code. Coding standards cover a wide variety of areas: – Program design – Naming conventions – Formatting conventions – Documentation – Use (or not) of language specific features CS351 - Software Engineering (AY2004) Slide 4
Coding standards Why bother with a coding standard? – Consistency between developers – Ease of maintenance and development – Readability, usability Example should make this obvious! No standard is perfect for every application. – If you deviate from the standard for any reason, document it! CS351 - Software Engineering (AY2004) Slide 5
Coding style There are several examples of coding styles. Often they differ from company to complany. They typically have the following in common: – Names Use full English descriptors Use mixed case to make names readable Use abbreviations sparingly and consistently Avoid long names Avid leading/trailing underscores – Documentation Document the purpose of every variable Document why something is done, not just what CS351 - Software Engineering (AY2004) Slide 6
Coding style – Accessors Use getX(), setX() functions on all class variables. – Member function documentation What & why member function does what it does Parameters/return value How function modifies object Preconditions/postconditions Concurrency issues Restrictions – Document why the code does things as well as what it does. CS351 - Software Engineering (AY2004) Slide 7
Rules Coding standards need not be onerous – find out what works for your organization/team and stick to it. Standardize early – the cost of retrofitting a standard is prohibitive. Encourage a culture where a standard is followed. Industry standards organizational standards Project standards no standards The more commonly accepted the standard is, the easier it is for the team members to communicate. Invent standards where necessary, but do not waste time creating a standard you won’t ever use again! All languages have recommended coding standards available. It is worthwhile finding out about these industry standards. Push for organizational standards wherever possible. CS351 - Software Engineering (AY2004) Slide 8
Standards Standards rare documented agreements containing technical specifications or other precise criteria to be used consistently as guidelines, rules, or definitions of characteristics, to ensure that materials, products, processes and services are for for their purpose. International standards are supposed to contribute to making life simpler, and to increasing reliability and effectiveness of the goods and services we use. Standards represent best, or most appropriate, practice: – They encapsulate historical knowledge often gained through trail and error. – They preserve and codify organizational knowledge and memory – They provide a framework for quality assurance. – Ensure continuity over a project’s lifecycle. CS351 - Software Engineering (AY2004) Slide 9
Standards There are many industry standards governing all aspects of software development: – Terminology – Notation – Requirements gathering – Design – Coding – Documentation – Human computer interaction – Verification and validation – Quality assurance – Even ethics! Many jobs will require you to follow appropriate standards. Software that follows published standards is more likely eo be maintainable and marketable. There are many good ideas in the standards and you can learn from them. Even the bad ideas are good to know since you have to deal with them ;-) CS351 - Software Engineering (AY2004) Slide 10
Professionalism Part of being a professional software developer is knowing about, and using, the appropriate standards. – This means having the ability to read, comprehend and follow specifications. You do not develop software systems in a vacuum. Other people will: – Read your code (and you will work with theirs). – Maintain your code (and you will most likely maintain someone’s code). CS351 - Software Engineering (AY2004) Slide 11
Who writes standards? Standards are complex documents encapsulation a large body of collective wisdom. They are difficult and time consuming to write. There are national and international standards bodies to create and administer standards. – ISO International Organization for Standardization – SAA Standards Australia – BSI British Standards Institute – ANSI American National Standards Institute – IEEE Institute for Electronic and Electrical Engineers – And about 80 or so others! CS351 - Software Engineering (AY2004) Slide 12
ISO ISO was established in Geneva in 1947. It is the head organization for all of these national standardization organizations. ISO’s work results in international agreements which are published as International Standards. – Not always as successful as you would like. Look at the differences globally in television encoding (NTSC/PAL) and mobile phone communications (GSM/CDMA) – There are also some successes – metric system of units (well almost everywhere!), international stationery sizes, programming languages, computer protocols, file formats, international standard book numbers (ISBN). Over 10,000 ISO standards have been published so far. Within ISO, ISO/IEC Joint Technical Committee 1 (JTC1) deals with information technology. (IEC International Electrotechnical Commission) CS351 - Software Engineering (AY2004) Slide 13
ISO standards relevant to computing ISO 646 – 7-bit ASCII with national variants ISO 8859 – several 8-bit ASCII extensions: – ISO 8859-1: West European languages (Latin-1) – ISO 8859-2: East European languages (Latin-2) – ISO 8859-5: Latin/Cyrillic ISO 6429 – ASCII control codes ISO 2382 – Information technology vocabulary ISO 8652 – the Ada programming language ISO 9899 – the C programming language ISO 9660 – CD-ROM volume and fie structure ISO 3166 – codes for the representation of names of counties: – Defines a 2-letter, 3-letter and numeric code for every country. – US/USA/840 United States – GB/GBR/826 United Kingdom The 2-letter codes are well known as the internet toplevel domain names. CS351 - Software Engineering (AY2004) Slide 14