� There are two features which are common to most engineering definitions
� The solution of practical problems for the benefit of humankind
� The use of scientific and other formalised knowledge to design and build artefacts within economic constraints
Difference between scientists and engineers:
� Scientific reasoning and research is essentially inductive, scientists try to infer general rules or laws from the results of a limited number of observations or experimental results
� The activities of engineers are quite distinct, their objective is for human benefit rather than explaining the natural world. They make use of scientific results in a deductive way (to verify designs and ideas that are feasible and safe.
Development of engineering disciplines
QUESTION: How does engineering come to make use of scientific and formalised knowledge?
ANSWER: The discipline starts in a state of craft practice:
At this stage engineering is carried out by practitioners with little or no formal training and
knowledge is acquired during apprenticeship.
The second stage is the development of commercial exploitation when pressures arise to make economic use of resources or to increase output. Practice becomes more organised and standard procedures are established.
The third stage in development sees the emergence of professional engineering. At this stage engineering is carried out by educated professionals who use formal analysis and scientific theory to understand and verify their designs.
Characteristics of engineering
Engineering projects tackle clearly defined and quantified problems.
Another aspect of modern engineering is the use of systematised knowledge, this knowledge gives the engineer a good understanding both of the problems that he or she is addressing and the materials available for their solution.
A science-based knowledge engineer will have considerable knowledge of proven procedures and designs which they can reuse where appropriate.
An important aspect of this codified knowledge is the ability to learn from failures.
SOFTWARE DEVELOPMENT AS ENGINEERING?
Development of compiler technology
� In the 1950s when high-level programming languages were first being designed and implemented, compiler writing was regarded as difficult.
� The development of the first compiler for FORTRAN, completed in early 1957, required about 18 person-years of effort.
� Compiler technology has progressed dramatically since, that a compiler can now be implemented in anything from 6 person-weeks to a person-year.
� Modern compilers generally produce executable code that is very efficient and it is rare for programmers to need to resort to lower-level languages.
� Compilers are usually extremely reliable being at least as free from errors as most other software on a typical computer.
Large-scale development projects
Large-scale projects have always been much more prone to problems or failure than smaller developments, such as compiler implementations, due to difficulties of organising and co-ordinating teams, and dealing with clients. But this is not always the case, as seen in these two examples of large and highly successful projects.
Example 1:
� SABRE, an Airline Reservation System developed for American Airlines.
� The project delivered about one million lines of code and involved around 400 person-years of effort.
� This success is all the more striking because of the lack of supporting software – there were no database systems available at that time, for example.
Example 2:
� NASA Space Shuttle.
� The project involved introducing rigorous control of software development, tracking all changes and errors, and constantly refining the development process to ensure that errors are eliminated at the earliest possible stage.
Other branches of engineering which have resulted in major disasters:
� In 1968, Roman point (a high-rise block of flats in London) collapsed after a gas explosion in a top flat. The block was constructed using prefabricated components.
� In 1980, the Hyatt Regency Hotel in Kansas City, Missouri, a suspended walkway which connected hotel floors collapsed causing deaths of 114 people. The failure was due to a combination of design and construction flaws.
QUALITY AND SOFTWARE DEVELOPMENT
In modern industry and business there is enormous concern to try to produce goods and services of high quality.
Definition of Quality – ‘The set of characteristics of a product or service which satisfy a customer’s requirements and expectations’
American Joseph Juran, one of the early advocates of quality management, defined quality as the fitness for uses.
Detailed tracking of error statistics during development has been found by developers such as Microsoft, to be extremely useful even though they may adopt a more informal approach to managing software development (Cusumano and Selby 1997).
Development of ideas about quality
Total Quality Management (TQM):
� Clearly defining quality in terms of customers’ or consumers’ requirements
� Concentrating on achieving quality by improving production processes rather than by inspection of end products
� The clear specification of processes and the use of statistical analyses and other techniques to track down the sources of faults so that the process can be improved
� The involvement of everyone in quality improvement
� Constantly trying to improve quality by learning from faults and improving processes and designs.
The application of quality management to software development
Applicable to software development?
Each development of a system is a one-off project so it is not obvious that insights derived from improving manufacturing processes are applicable.
The argument of Deming and others that quality cannot be achieved by testing alone is borne out by the experience of many software developers.
Quality standards – ISO 9000
In order to achieve ISO 9000 certification:
� It has standards against which to measure all aspects of its development practices
� It has procedures in place to access performance against these standards
� Both the standards and the assessment methods used are recognised in the industry
ISO 9000 has been criticised on its particular criteria for introducing too much paperwork and ignoring the importance of continuous improvement.
Capability Maturity Model
This model is primarily concerned with the way in which projects are managed and organised, so it proposes five levels of maturity in development practices.
1. Initial Level-Not stable environment for developing software. Success heavily dependent on key project staff.
2. Repeatable Level-Managing software projects based on previous experience. Project progress is tracked and under control.
3. Defined Level-A standard process of software development is used across the organisation. Adapted and tailored appropriately for individual projects.
4. Managed Level-Measurable quality targets are set for projects and the results achieved by all projects are monitored.
5. Optimising Level-Measurements obtained from the monitoring of software development are used as a basis for refining and improving the process used. This level is one of continuous improvement.
Chapter 11 – Societies for computing professionals
WHAT ARE PROFESSIONAL SOCIETIES?
� Professionals, such as medicine or the law, are distinguished from other occupations by the long period of training and experience which are required in order to qualify as a practitioner.
� Regulated by professional societies
� Societies are run by the members of the profession and represent its interests
� Not under the immediate control of the government or employers
Professional institutions can be made in two ways:
� By stature (by passing a law)
� Royal Charter
The Engineering profession (the institution of Civil Engineers, the institution of Mechanical Engineers, the British Computer Society) have similar rights and responsibilities:
� To advance knowledge in their area
� To uphold and seek to improve standards of practice (e.g. code of conduct for members)
� To set educational and training standards in their field (e.g. running professional exams and accrediting certain degree courses)
� To advise the government on issues within their area of expertise (e.g. BCS on the Computer Misuse Act)
THE HISTORY OF ENGINEERING PROFESSIONS
� When engineering was at the stage of a craft practice, there were few formal mechanisms for the training of new engineers
� Throughout most of the nineteenth century British engineers were firmly convinced of the value of practical experience as the basis of training
PROFESSIONAL INSTITUTIONS FOR SOFTWARE ENGINEERS
Two professional institutions which have most relevance for computer professionals are the British Computer Society (BCS) and Institution of Electrical Engineers (IEE).
Engineering Council
� Created by Royal Charter in 1981
� Contains 290000 qualified engineers, including about 200000 Chartered Engineers
FEANI
FEANI represents the engineering profession at a European level and is made of engineering institutions from 27 countries. It was formed in 1951.
PROFESSIONAL MEMBERSHIP
Members of professional societies gain the benefit of meeting other professionals in their field as well as access to other resources, such as libraries, seminars and special interest groups.
Course accreditation
Computer Science degree courses which cover similar materiel to that of the BCS exams are often accredited by the British Computer Society. For a degree course to give full exemption it must:
� Cover the underlying theory and mathematics appropriate to computing
� Have an emphasis on design
� Promote understanding of ideas of quality
� Cover systems development approaches
� Cover ethical, legal, social and professional issues
� Include a substantial student project which involves the implementation of an application or tool using an engineering-based approach.
Registration with the Engineering Council
The Engineering Council maintains a register of qualified engineers.
� EA1 – introduction to the fabrication and use of materials
� EA2 – application of engineering principlines
� EA3 – a thorough and structured introduction to industry, involving practical assignments
� EA4 – preparation for the post with responsibility
EA1 and EA2 = accredited in engineering degree
EA3 and EA4 = period of appropriate work
Professional development
BCS has developed the Industry Structure Model to classify different roles and responsibilities which computing professionals must have. It identifies some 200 professional functions ranging from programming to management. The purpose of the model is to help individuals and organisations to plan training and career development by identifying current gaps in knowledge.
BCS runs two development schemes:
� Professional Development scheme – computing professionals have properly planned and verified training
Continuing Professional Development – those who have achieved qualification but who need to broaden their knowledge.
Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.
You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.
Read moreEach paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.
Read moreThanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.
Read moreYour email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.
Read moreBy sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.
Read more