This Code describes standards of practice relating to the contemporary multifaceted demands found in information technology (IT). It is intended to help you personally as a member of the BCS by providing a framework of guidance into which your particular needs can be fitted. It is hoped, however, that the guidance will be of general use.
The code is intended to be read and used in parallel with the Code of Conduct. However, whilst the Code of Good Practice is not a prescriptive or mandatory document, the Code of Conduct makes clear that you are expected to be familiar with its contents. Whether or not you use the Code of Good Practice is a matter for your personal judgement but in exercising that judgement, you should recognise that your responsibility to an organisation and society as a whole may have to prevail over your personal interests.
The code is intended primarily for BCS members working in IT, whether as academics, employees, contractors or independent consultants. They may be working for organisations supplying or using IT systems and services.
The Code of Good Practice cannot and is not intended to cover all activities of each individual member and, in this first issue, does not cover those practices listed in Appendix C.
1.3 How to use this Document
You are advised to follow the guidance in the Code of Good Practice relevant to your particular role and responsibilities. To help you, the Code is set out in three distinct sections
- Common practices of relevance to all IT professionals
- Key practices specific to particular IT skills
- Practices specific to particular business or education streams.
You are advised to follow all the common practices but you need select only those practices relevant to given skills and streams.
The Code of Good Practice is designed as a web-based document available in various formats on http://www.bcs.org.uk. The electronic form is intended to help you create a specific form of Code of Good Practice for a given project or application using a mix of the three sections. The code is also available in hard-copy form on application to the Registrar.
Back to Contents
The British Computer Society Code of Good Practice version 1 September 2004 Page 3 of 36
The BCS accepts no responsibility for any errors and omissions in this Code of Good Practice. Furthermore, reference to another organisation's web site does not constitute a recommendation, or endorsement, of that organisation, site, or its content, by the BCS.
In the event of an apparent conflict in responsibilities, obligations or prescribed practice, please consult the Society's Registrar at the earliest opportunity.
- Customer: Any person, organisation or department for whom the member undertakes to provide IT services, in any way; this includes other departments within the member's organisation.
- Organisation: Any company, government department or other body for which the member as an individual undertakes professional practice. The member may be an employee, contractor, consultant, student or volunteer.
- User: Any person, department, company or other body served by IT.
- System: A group of electronic equipment and software which together provide a particular service. System may be interpreted as encompassing non-computer procedures such as clerical, manual, communication and electromechanical processes.
- Information Technology (IT): IT is to be taken to include IS (Information Systems) and ICT (Information Communication Technology) where relevant.
The BCS acknowledges the existence of many other Codes of Practice, applicable within the IT profession and other industries. Concepts and detailed practices have been drawn from these documents and it is hoped that the authors of these documents draw some satisfaction when seeing familiar ideas. Those of particular relevance are listed in Appendix A.
1.7 Responsibility for, and the Development and Maintenance of the Code of Good Practice
The operational responsibility for the Code of Good Practice lies with the BCS Registrar.
The development and maintenance of the Code of Good Practice are the responsibility of the Qualifications and Standards Board.
This Code of Good Practice is seen as a living document. In the rapidly changing IT world, it is expected to change to reflect new or revised practices. Members are encouraged to submit recommended changes to:
1st Floor, Block D
North Star House
North Star Avenue
Swindon, UK, SN2 1FA
Back to Contents
The British Computer Society Code of Good Practice version 1 September 2004 Page 5 of 36
2 Practices Common to all Disciplines
Maintain Your Technical Competence
- Seek to improve your IT skills by attending relevant courses offered by the organisation; if such courses are not available, pursue other sources, such as external courses, computer-based training or technical publications.
- While striving to put newly learned skills into practice, be cautious of attempting anything which you are not qualified to do; inform your management if so requested and only proceed if your management accept the consequences.
- Keep up to date with technological advances, through training, technical publications and specialist groups within professional bodies; recognise that information gained from the Internet may not be validated.
- Attain appropriate qualifications.
- Actively participate in specialist bodies such as the BCS Specialist Groups.
- Commit to a continuing professional development (CPD) programme and seek further contemporary education and training on IT matters.
Adhere to Regulations
- Follow the standards relevant to the organisation's business, technology and development methods; encouraging new standards, where appropriate standards do not exist.
- Use standards in an intelligent and effective manner to achieve well-engineered results.
- Keep up to date with new standards and promote their adoption by the organisation when they are sufficiently mature and can offer real benefit to the organisation. Keep up to date with internal and external regulations and promote their adoption by the organisation if of benefit to the organisation or if necessary to sustain the public good.
- Ensure that you are up to date with the substance and content of the legal and regulatory frameworks (including but not restricted to data protection, health and safety, copyright geographical and industrial) that apply to your work; act at all times in a manner that gives full effect to your obligations under such legal and regulatory frameworks and encourage your colleagues to do likewise.
- Seek professional advice at an early stage if you have any doubts about the appropriate application of the law or regulations.
- Concern yourself with the needs of people with, for example, visual impairments, dyslexia or physical disabilities; as a minimum, comply with the Disability Discrimination Act (October 2004).
- Comply with non-discriminatory legislation in the areas of race, colour, ethnic origin, sexual orientation, disability or age in all aspects of your work.
Act Professionally as a Specialist
- Maintain your knowledge of your specialism at the highest level by, for example, reading relevant literature, attending conferences and seminars, meeting and maintaining contact with other leading practitioners and through taking an active part in appropriate learned, professional and trade bodies.
- Evaluate new products, assess their potential benefit and recommend their use where appropriate.
- Keep in close touch with and contribute to current developments in the specialism, particularly within the organisation and your own industry.
- When competent, offer expert advice, both reactively and pro-actively, to those engaged in activities where the specialism is applicable; this includes budgetary and financial planning, litigation, legislation and health and safety.
- Understand the boundaries of your specialist knowledge; admit when you may be required to cross this boundary and seek advice from colleagues with the necessary expertise; do not make misleading claims about your expertise.
- Exercise a sense of social responsibility for the implications of your work.
- Keep colleagues informed of advances in technology, circulating appropriate documents, setting up libraries and arranging discussion groups.
- Be aware that most people within the organisation do not share your expertise; avoid technical jargon and express yourself clearly in terms they understand.
- Be aware of the risks and liabilities resulting from giving incorrect advice; if appropriate take out professional indemnity insurance.
Use Appropriate Methods and Tools
- Keep up to date with new methods and the tools to support these methods
- Promote the effective use of methods and tools within the organisation.
- Recommend the adoption of new methods only when they have been demonstrated to be effective for the organisation and are supported by suitable tools.
- Explain to non-IT staff the purpose of any methods that have impact on their duties, so that they can understand the outputs and appreciate the benefits.
- Recognise the scope and applicability of methods and resist any pressure to use inappropriate methods.
Manage Your Workload Efficiently
- Report any overruns to budget or timescales as they become apparent; do not assume that you will be able to recover them later.
- Ensure that your work is covered by Terms of Reference and be wary of exceeding them.
- Do not undertake, or commit to, more assignments than you can reasonably expect to meet in a given time.
- Ensure that you have the necessary resources to complete assignments within agreed time scales.
- Provide constructive criticism of colleagues' work, aiming to improve the quality of the work without belittling your colleagues.
- Accept constructive criticism of your work, appreciating that your colleagues may have better solutions.
- Maintain good working relationships with colleagues, customers and users, even if you may strongly disagree with them; however, ensure that such disagreements are recorded.
- Ensure that the views of all participants are taken into the account and are fairly represented in the resulting list of actions.
- Follow up all actions placed on yourself, even in cases where you do not entirely agree with them.
- Utilise technical reviews as an aid to your professional judgement, seeking specialist advice where appropriate.
Respect the Interests of your Customers
- Declare any personal gains, financial or otherwise, that you may make from any proposed work; do not falsify or conceal information for your own benefit.
- Accept only those assignments which you are qualified and competent to undertake; you have a particular responsibility when you consider an assignment to be of questionable value to your customer.
- Safeguard the confidentiality of all information concerning your customers.
- Refrain from acting for several customers with competing or conflicting interests without prior agreement from all parties.
- Utilise professional judgement and act with professional objectivity and independence at all times; in this respect "independence" is taken to mean "independence of relationships which might be taken to impair objectivity".
- Inform customers immediately of any interests or change of circumstances, which might prejudice the objectivity of the advice given.
- Disclose any interests in products which you may recommend to your customer.
- Do not disclose to any third party any confidential information about your customers or its competitors.
Promote Good Practices within the Organisation
- Identify opportunities for increasing the awareness of IT throughout the organisation.
- Be aware of the interaction of your work with that of others involved in the same activity.
- Seek to identify potential hazards, failures and risks associated with your work or work place, and seek to ensure that they are appropriately addressed.
- Ensure that those working under your supervision or direction are competent, that they are made aware of their responsibilities and they accept personal responsibility for the work delegated to them.
- Help to promote a culture within the organisation which strives for continuous improvement; seek involvement and participation in best practices at all levels.
- When problems arise, take responsible corrective actions, even when such actions are beyond your responsibility.
- Take every opportunity to contribute to formal quality management systems within the organisation and fully understand quality and commercial practices.
- Contribute positively to the fulfilment of the overall QA function of the organisation.
Represent the Profession to the Public
- Contribute to the education of the public whenever you have the opportunity, so that they can be aware of and form an objective and informed view on IT issues.
- Ensure that all complaints from members of the public are dealt with properly through to resolution; such complaints include, but are not restricted, to accessibility, data protection and data security issues.
- Encourage user and consumer trust in global networks and electronic commerce.
Key IT Practices
3.1 Programme/Project Management
When Managing a Programme of Work
- Make a clear distinction between projects that result in contract deliverables and programmes that provide your customer with process improvements and business benefits.
- Advise your customer if, in your opinion, any stage in the programme will not deliver the anticipated benefits.
- Work with your customer and supplier(s) to reach a common understanding of the programme structure in terms of projects, deliverables, costs, inter-project dependencies, external assumptions and responsibilities for each element of work.
- Adopt transparent reporting based on quantitative, objective measures that are shared by your customer and supplier(s) to ensure a common understanding of the status of the programme, the risks and any variances from plan.
- Review and agree with your customer any key external pressures and influences for business improvement, plans for organisational change, parallel programmes (with potential mutual dependencies) and the effect these may have on the programme.
When Defining a New Project
- Encourage your customer to:
- Explain fully the corporate objectives that underpin the requirement, the scope, issues, constraints and risks to be addressed.
- Articulate clearly the desired business benefits and how they will be measured.
- Explain fully the project deliverables.
- Define the information and services that your customer will provide.
- Offer constructive challenge to your customer if:
- The requirement is unrealistic
- Any of your customer's expectations are unreasonable
- There is a better way of meeting the requirement
- A relatively minor change to the requirement might significantly reduce the cost, risk or timescale.
- Select and list appropriate quality standards and procedures.
- Devise an acceptance strategy that will fairly demonstrate that the requirements of the project have been met.
- List your assumptions, especially those that relate to goods or services provided by your customer, and gain your customer's approval of their validity.
- Define the escalation/exception procedures to be followed in the event of deviation from the plan.
- Ensure that the scope, deliverables, timescales, costs and responsibilities are agreed in advance.
- Seek out similar projects and benefit from the lessons learned.
- Make realistic estimates of the costs, timescales and resource requirements, wherever possible basing your estimates on recognised methods and/or experience of delivering similar solutions.
- Resist the pressure to accept estimates produced in earlier stages.
- Be aware of the pitfalls associated with estimating tools; use other methods to double-check the feasibility of the results.
- Assure yourself that you have the resources required to complete the work within the agreed costs and timescales.
- Do not depend on later contract changes to recover overspend.
When Managing Project Risks
- Seek out the real risks to the customer, the organisation and any suppliers.
- Resist the temptation to identify only the manageable risks.
- Openly and frankly discuss with your customer the options for allocating, managing, mitigating and insuring against the risks.
- Avoid accepting responsibility for a risk that would be better owned by your customer.
- Where risk is created by virtue of the scale or novelty of a solution for which there is no reliable benchmark for estimation, consider a modular or incremental approach to reduce risk.
- Devise mitigation actions that will reduce the chances of the most serious risks happening.
- Regularly review the risks and revise the mitigating actions.
- Make yourself aware of the differences between civil and criminal law in the treatment of risk
When Managing and Deploying the Project Team
- Ensure that all team members are given written instructions on each task to be performed, with target completion dates.
- Monitor the deployment of individuals objectively to ensure that they are contributing effectively whilst developing skills and experience.
- Deal sensitively with team members who are not performing well; investigate the root causes and take effective measures.
When Tracking Progress
- Maintain metrics on all project activities, so that later projects can benefit.
- Accurately record the effort spent on each task; do not hide overruns by booking to other tasks.
- Provide early warning of any possible overrun to budget or timeline, so that appropriate actions can be taken.
- Do not assume that any overruns can be recovered later in the project; in particular do not cut back on later activities such as testing.
When Closing a Project
- Honestly summarise the mistakes made, good fortune encountered and lessons learned.
- Recommend changes that will be of benefit to later projects.
3.2 Relationship Management
When Seeking New Customers
- Ensure that a common understanding exists throughout the organisation of its corporate objectives, market position, product lines and development plans and that these form the basis of marketing strategy.
When Selling to Prospective Customers
- Do not overstate the capabilities, performance and benefits of the proposed products or services.
- Ensure the organisation has the necessary resources available to deliver on schedule.
- Make your prospective customer aware of any risks in your proposed solution.
- Assure yourself that your prospective customer has the necessary skills, equipment and organisation to make effective use of your proposed solution.
- Identify to your prospective customer any additional costs or changes necessary to make effective use of the proposed products and services.
- Within the limits of the law, strive to understand what your competitors offer, make every effort to provide a superior solution, but resist the temptation to belittle the offerings of your competitors.
- Maintain contact with your prospective customer after conclusion of the sales activity; elicit any shortcomings in the sales activity and initiate remedial actions.
When Negotiating Contracts and Service Levels
- Avoid later disappointment by negotiating achievable service levels at realistic prices.
- Avoid situations that could later be interpreted as corrupt (accepting or giving lavish gifts, entertainment, etc).
- Whilst aiming for a successful relationship, ensure the agreement of dispute resolution terms and processes that the organisation can afford if need be.
When Managing Customer Relationships
- Instil in your customer a well-founded confidence in the products and services to be delivered, and your commitment to performance, risk, timescales and delivery.
- Set targets and monitor performance against these targets, aiming to exceed the contractual targets.
- Resist the temptation to hide overruns; do not assume that you will recover any lost time in later stages of the project.
- Keep your customer informed of any problems that might impact on the quality of the deliverables.
- Ensure that any strategic problems are identified at the earliest opportunity and that solutions are identified and implemented.
- Do not sub-contract out any of your responsibilities without prior agreement by your customer; if you do sub-contract, fulfil your responsibilities for the performance of the work.
- Actively represent your team, ensuring that effective relationships are built and maintained with your customer, suppliers and other departments in the organisation.
- Respond promptly to your customer's queries and complaints and ensure that all necessary actions are taken.
- Encourage your customer to participate in reviews to facilitate process improvement.
- Seek out and encourage changes to your customer's processes which will increase the benefits of your products and services.
- Resist the temptation to blame your customer for all misunderstandings.
- Ensure that the necessary processes and procedures are in place to maintain or recover the delivery of systems and services in the event of any physical, technical or environmental disaster or major outage, providing continuity of service to your customer.
When Managing Supplier Relationships
- Act impartially when selecting new suppliers; establish evaluation criteria that are not biased towards a particular solution and apply the criteria rigorously to all proposals.
- Encourage resolution of any shortcomings in the service, through proper communication between all parties, rather than resorting to penalty clauses.
- Whilst representing the interests of your own organisation, act impartially in any dispute between the supplier and the users.
- Provide regular feedback to the supplier, so that any improvements can be made before any problems become serious.
- Demonstrate a high level of professional competence, as prescribed in BS7799, the Code of Practice for Information Security Management.
- Maintain a thorough understanding of relevant regulations and guidelines, in particular:
- Legislation concerning the use and misuse of electronic processing systems.
- Regulations applicable to the security of electronic processing systems, such as those issued by the European Commission and the DTI.
- Security recommendations of bodies such as the BCS, the CBI and the DTI.
- Keep up to date with the threats, vulnerabilities to those threats and the range of countermeasures available to avoid, reduce or transfer risk.
When Assessing Risks
- Consider the use of specialist tools (e.g., CRAMM).
- Resist any pressure to oversimplify the risk analysis; involve personnel at all levels within the organisation to elicit the threats and the vulnerabilities to those threats.
- Ensure that the decision-makers are fully aware of all the relevant facts and the possible consequences of their decisions.
When Implementing Countermeasures
- Recommend a balanced and cost-effective mix of countermeasures that offer the required levels of confidentiality, integrity and availability.
- Promote a culture within the organisation where everyone recognises the importance of security and is aware of their responsibilities for security; encourage incident reporting to identify potential breaches of security.
- Whilst dealing sensitively with people, be aware that breaches of security are more likely from within the organisation.
3.4 Safety Engineering
- At all times, take all reasonable care to ensure that your work and the consequences of your work cause no unacceptable risk to safety.
- Take all reasonable steps to make your management, and those to whom they have a duty of care, aware of the risks you identify; make anyone overruling or neglecting your professional advice formally aware of the consequent risks.
When Building a System
- Examine the proposed use of proprietary digital communication systems and seek out common-cause failures between control and protection functions.
- Beware of novel approaches to specification, design and implementation of knowledge-based computing and control systems; be attentive to their attendant problems of verification, validation and the effect on safety-related operation.
- Be aware that, whilst distributed systems involving communications systems are relatively easy to assemble from standard commercial components, it is difficult to predict their overall operational behaviour and there may well be hidden complexities.
- Determine the adequacy of the protection and control systems for remote plant; enumerate the hazards to which the plant may be subjected and relate each to the proposed protection and control systems.
- Be aware of the intended operational environment of integrated modular systems.
- Establish that the proposed integration of the mechanical structures (moving parts) with micro-electromechanical (MEMS) components is based on components intended for mechanical operation based on computer control.
- Treat any proposed integration of a new system with an existing system to a thorough examination.
- Be aware that the overall behaviour of systems based on software components of unknown or uncertain pedigree (SOUP) and commercial off-the-shelf products (COTS) will be affected by software components not specifically designed for safety purposes.
When Assessing Complexity
- Only use evaluated and validated software languages or accredited components for control systems.
- Establish/determine practicable software development methods and validation tools for embedded software, particularly in small systems.
- Establish how well the sensing devices and software within programmable electronic systems (PES) are compatible with the human form.
- Apply ‘proven in use' analysis to achieve the appropriate level of safety integrity for opto-electronic components/techniques used for the sensing of personnel presence.
- Be aware that increased complexity of smart sensors increases the possibility of systematic failure; that there is a need for software and firmware version control; that, operationally, there is a dependence on configuration management by the user.
3.5 Change Management
When Advising on Business Change
- Appreciate the implications of new processes on both people and the organisation; identify the activities necessary to ensure a smooth transition to the new processes.
- Strive to understand the underlying resistance to change and, if unfounded, be re-assuring of the benefits.
- Challenge any apparent malpractices and investigate the root causes.
- Appreciate that not all improvements need technological solutions; significant benefits can often be achieved through procedural or organisational changes.
- Highlight the drawbacks as well as the benefits of proposed changes.
- Modify your approach and style to obtain co-operation and commitment and resolve potential conflict.
- Show sensitivity to political and cultural issues as well as technical and business effectiveness targets.
- Monitor the progress of the changes, learning from any mistakes made and, where possible, resolving any problems encountered.
When Controlling Changes
- Promote the importance of a structured change management process, where all changes are prioritised, assessed and tracked.
- Ensure that the appropriate impact analysis is conducted before any change is authorised.
- Seek out and resolve any conflicts between changes and ensure that the totality of the changes is in keeping with the organisation's goals.
- Check each change provides a cost-effective solution to a technical and/or business need, and is prioritised accordingly.
- Keep to a minimum the number of changes to be made at a given time.
3.6 Quality Management
When Establishing a Quality System
- Express the organisation's commitment to quality through a clear and concisely written quality policy.
- Make all members of the organisation aware of the quality policy.
- Provide a means for all members of the organisation to find standards and procedures applicable to their work.
- Make a clear distinction between mandatory, optional and advisory standards.
When Constructing New Quality Standards
- Involve those who will follow the new standards in the writing and reviewing.
- Keep the language simple; avoid jargon wherever possible.
When Managing a Quality System
- Appropriately recognise individual achievements in attaining quality targets.
- Regularly review the standards and strive for continuous improvement.
When Performing a Quality Assurance Function
- Ensure that every project or product has a quality plan:
- Check that quality plans call up applicable standards, not just the list of mandatory standards.
- Encourage the collection, use and analysis of metrics so that improvements can be demonstrated quantitatively.
- Ensure that all sub-contractors follow the quality plan if they do not have a suitable quality system.
- Ensure that there are procedures for the acceptance, storage and maintenance of all externally-supplied materials.
- Act as the Quality Champion in reviews and testing:
- Demonstrate a pragmatic approach towards attaining quality
- Do not be distracted by details of no consequence
When Conducting Quality Audits
- Create a programme of audits to demonstrate that the organisation's Quality System is operating effectively and providing management with sufficient control and visibility
- Welcome external auditors into the organisation; benefit from their experience rather than just hide shortcomings from them to pass the audit.
- Remind those being audited that the audit is there to help them do their jobs better, rather than pick fault with their work.
- Encourage those being audited to prepare well for the audit; let their preparation become part of the improvement process, not just a mechanism to get through the audit.
- Use your experience of problem areas and the history of previous audits to select areas to audit; do not appear to be biased.
- Follow up the audits and make sure actions are being taken to make real improvements.
4 Practices Specific to Education and Research Functions
When Preparing Courses
- Ensure the curriculum is founded upon your research, practice and/or scholarship.
- In designing curricula, ensure that learning outcomes take into account external benchmarks, such as those issued by the Engineering Council UK and the Science Council.
- Ensure students are equipped with the necessary underpinning to comprehend future developments.
- Expose students within the curriculum to legal, social, cultural and ethical issues.
When Delivering Courses
Develop in each student an independence of thought and learning ability and thus prepare students for career progression and ongoing CPD beyond the confines of this educational experience.
Make explicit to all stakeholders the outcomes to be expected from engaging in the study.
When Assessing Student Ability
- Ensure that assessment is fair in its discriminatory function.
- Ensure feedback to each student is sufficient to identify strengths and enable weaknesses to be addressed.
- Develop yourself as a reflective and reflexive educational practitioner, building on student feedback as appropriate
When Tutoring Students
- Encourage students to join a professional body, either now or later, as part of their career plan.
- Ensure that students are made aware of codes of conduct and practice and emphasise the importance of adhering to them, whether or not they join a professional body.
- Ensure that students are made aware that their courses cannot cover all the technical details of specific topics in computing and that their technical knowledge will need to be constantly refreshed through CPD as a result of ongoing developments in the subject.
- Ensure that students are made aware that different organisations have different organisational and computing cultures and conventions, and that they will need to adapt to their environment.
- Ensure students recognise the nature and unacceptability of plagiarism.
When Performing Research
- Pursue research only in those areas that offer benefits to the organisation or its customers but not to the detriment of society or the public.
- Recognise the potential use or misuse of the outcomes of your research and only proceed with the research if you can justify to yourself the consequences.
- Avoid providing IT support of research on human subjects and animals, where such research is not legal, consensual or (in humans) authorised by the subject.
- Strive to safeguard the confidentiality and anonymity of private data used in research.
- Investigate the analysis and research by other people and organisations into related topics and acknowledge their contribution to your research.
- Where allowed by the organisation, share the results of your work with other researchers, through papers issued through research publications and presented to conferences.
5 Practices Specific to Business Functions
5.1 Requirements Analysis and Specification
When Conducting Systems and Business Analysis
- Assure yourself of the soundness of your analysis methods; that they will deliver an accurate representation of the requirement, enable a seamless transition into design and provide a sound basis for testing and acceptance.
- Strive to understand the organisation's business and search for changes that will bring tangible benefits.
- Involve and consult representatives of all stakeholder groups.
- Be aware of technical constraints and assure yourself that solutions are technically feasible.
- Be aware of the impact of new or changed business solutions on people's working lives and deal sensitively with them.
- Consider the impact of new systems on the public and avoid solutions that impose unacceptable levels of risk on their mental or physical well-being.
- When analysing current practices, show respect for people at all levels in the organisation and assure them that their views will be taken into account.
- Demonstrate an understanding of the business issues; be persuasive and explain to users and management, in language they understand, the benefits of the changes being introduced, as well as identifying any drawbacks and trade-offs.
- Document the results of your analysis in a style that can be understood by the users and the developers.
- Explain your analysis methods to the users and encourage them to understand the results and verify their correctness.
5.2 Software Development
When Designing New Systems
- Recommend the organisation to adopt new technology, but only when it is sufficiently well proven for the organisation, offers a cost-effective solution and is compatible with the organisation's IT strategy.
- Strive to understand the corporate needs of the organisation and aim to design systems that benefit those needs.
- Consider the needs for scalability, connectivity, capacity, performance, resilience, recovery, access, security and create cost-effective solutions that meet those needs.
- Produce design specifications that clearly state the objectives, scope, features, facilities, reliability, resilience, constraints, environment, system functions, information flows and traffic volumes as well as identifying requirements not met and scope for improvement.
- Resist the pressure to build in-house when there may be more cost-effective solutions available externally and vice versa.
When Designing Software
- Strive to achieve well-engineered products that demonstrate fitness for purpose, reliability, efficiency, security, safety, maintainability and cost effectiveness
- Take responsibility for ensuring the design balances requirements for functionality, service quality and systems management.
- Encourage re-usability; consider the broader applications of your designs and, likewise, before designing from new seek out any existing designs that could be re-used.
- Ensure your designs facilitate later stages in the development lifecycle, particularly testing.
- Check the products of your designs can be used by both experienced and inexperienced users; in particular check that they can be used for training purposes (e.g., on-line help, training databases).
When Creating Web Sites
- Ensure the organisation's practices on the collection and use of personal data comply with applicable national, regional and international laws and (self) regulatory schemes; as a minimum comply with the Ecommerce Directive, the Data Protection Act and Distance Selling Regulations.
- Increase awareness of privacy practices to visitors to your web sites; consider creating a link between your homepage and your privacy statement, or between pages where you collect personal data and your privacy statement.
- Ensure the web site conforms to the Disability Discrimination Act.
- Strive to produce well-structured code that facilitates testing and maintenance.
- Follow programming guidelines appropriate to the language and encourage your colleagues to do likewise.
- Produce code that other programmers will find easy to maintain; use meaningful naming conventions and avoid overly complex programming techniques, where these are not strictly necessary.
- Make yourself aware of the limitations of the platform (operating system and hardware) and avoid programming techniques that will make inefficient use of the platform.
- Wherever possible, avoid platform-specific techniques that will limit the opportunities for subsequent upgrades.
- Check that the code is in accordance with the design specification and resolve any differences.
- Plan the tests to cover as many paths through the software as possible, within the constraints of time and effort.
- Assure yourself that the coverage of the testing is sufficient; take appropriate actions to resolve any shortcomings in the tests planned by yourself or by your colleagues.
- Promote the use of test tools that will maximise the effectiveness of the testing.
- Create a test environment whereby tests can be re-run and the results are predictable.
- Do not rely solely on the direct outputs of tests, but check values are as expected in internals tables, databases and error logs.
- Recommend improvements that will improve the effectiveness of the software under test.
- Maintain a detailed testing log.
- Accurately document all anomalies arising during the testing and make sure they are investigated; but remain impartial, trying not to provoke whoever may be at fault.
- Design regression testing to identify any undesirable side effects of a software change.
- Resist any pressure to curtail testing; make anyone overruling or neglecting your professional advice formally aware of the consequent risks.
When Porting Software
- Investigate the differences between the current and the new platform and identify changes to be made to ensure the software functions correctly.
- Make intelligent use of tools to convert the software, identify their limitations and take actions accordingly.
When Integrating Software
- Check that all software components meet the defined criteria for test.
- Devise integration tests that build upon component tests already performed and demonstrate that the components interface correctly with each other.
- Check the documentation of the components and assure yourself that they are compatible with each other and with the target platform.
- Maintain a configuration management system that records the status of each component.
- Devise workarounds that will enable the software to be used correctly despite known shortcomings.
- Release builds for operational use only when all known shortcomings have been resolved or workarounds devised; resist the temptation to meet timescales by overlooking shortcomings.
When Writing Technical Documentation
- Document all work to a level of detail that others could take over your work if need be.
- Set a high standard of documentation and, by setting a good example, encourage your colleagues to do likewise.
- Follow the appropriate documentation standards: the organisation's house style and specific standards for the type of document.
- Identify omissions or shortcomings in the organisation's documentation standards and actively seek out ways to improve them.
- Strive to keep documentation up to date.
- Ensure documentation is sufficient to enable effective ongoing maintenance.
When Writing User Documentation
- Investigate the subject of the documentation, through hands-on use, talking to experts and reading related documents; do not assume it works in a particular way.
- Assure yourself that you understand the real purpose of the document and structure the document accordingly.
- Strive to understand the potential readership, their expectations and abilities; be aware that some readers may have difficulties with reading, language or comprehension.
- Write the document in a straightforward style appropriate to the readership; avoid jargon.
- Make intelligent use of diagrams that complement the text and aid overall understanding.
- Check with experts that the document is correct and with potential readers that it meets their expectations.
5.3 System Installation
When Scheduling Installation Work
- Ensure that the Installation Procedures identify all relevant safety and security procedures.
- Ensure that appropriate licences exist for all software to be installed.
- Avoid unnecessary installation work, by recommending only those upgrades that will bring genuine benefits, not just extra revenue to the suppliers.
When Installing Hardware or Software
- Reduce the risk of installing faulty items, by checking that all necessary pre-installation tests have been performed on all items to be installed.
- Reduce the risk of installing any viruses by ensuring up-to-date virus checking is in place.
- Investigate any previous installations, particularly any that have failed, and avoid repeating the same mistakes.
- Follow all applicable safety procedures and encourage other to do likewise, even if they are not under your direct control.
- Wherever practical, involve the future users of the system, so that they understand its architecture and characteristics and will be able to perform well-defined maintenance work on their own.
When Testing Installations
- Do not ignore seemingly trivial faults in order to meet installation deadlines.
- Accept the blame for your own faults, rather than transferring the blame onto items for which you are not responsible.
- Record all exceptional events and ensure actions are taken to investigate them.
When Handing over the Completed Installation
- Provide documentation of all outstanding problems.
- Ensure that the users are capable of taking over the installation, identifying any additional training that may be necessary.
- Provide contact details so that you can resolve any problems that may arise following hand-over.
- Return any items removed to the owner or dispose of according to agreed procedures.
- Identify business continuity planning requirements and ensure the customer agrees to develop a disaster recovery plan, which will maintain the continuity of the system to an appropriate level.
When Determining Training Needs
- Create an environment where staff at all levels and abilities are encouraged to further their careers through training.
- Review business plans, identify skills shortages that could, with additional training, be filled by existing staff and publicise these opportunities.
- Identify the career paths within the organisation; encourage equal opportunities for full and part-time workers, and define the training required to progress from one step to the next.
- Review recruitment plans and identify the training necessary for new recruits to become fully productive and understand the organisation's culture.
When Producing Training Plans
- Seek out areas where the organisation could improve through increased training and pursue the necessary budgeting.
- Evaluate external training organisations and recommend using their services if they offer improvements in quality and costs.
- Identify training which can be provided by experts in that particular area, nominate individuals with that expertise and the attitude to make good trainers, and arrange any necessary instructor training.
- Arrange for suitably equipped training facilities in an environment conducive to training.
When Designing Training Courses
Taking into account the abilities of the trainees, structure the content and duration of training courses to avoid overload through variety and breaks.
Identify the trainee skill pre-requisites, so that any necessary pre-training can be undertaken before the course and training of unsuitable trainees avoided.
When Producing Training Course Material
- Strive for consistency across all course material; follow any appropriate guidelines and encourage the production of any that are missing.
- Write training manuals that complement existing documentation (e.g., user manuals), reflect the structure of the training courses and provide a useful form of reference following the training courses.
- Construct examples, both compatible with the training manuals and relevant to the business, so that trainees can apply the training to normal working situations.
- Design exercises that both stretch the trainees and enable the trainer to evaluate the trainees' performance.
- Design tests that will enable the trainer to assess trainee abilities objectively.
- Verify the accuracy and appropriateness of the training material with technical and business experts before starting any training.
- Review the training material with the trainers and improve the training material following any wide ranging and detailed questioning.
When Preparing Training Facilities
- Check the layout of the training room provides trainees with visibility of the trainer and visual aids, unobstructed by equipment and other trainees.
- Ensure that all computerised equipment for use by the trainer or trainees provides access to the correct versions of the software.
- Ensure that any electronic training data has been correctly initialised and is isolated from all operational data.
- Provide a training environment free from non-essential interruptions (particularly important for on-the-job training).
When Delivering a Training Course
- Encourage an atmosphere where trainees feel comfortable about asking questions, either during or at the end of training, as appropriate.
- Respond to questions from all trainees, avoiding any favouritism.
- Record any discrepancies with or between the training material or computer systems used in the training and initiate corrective action.
- Monitor the performance of trainees, through questions and exercises, identify where trainees are advancing at different paces and resolve any great discrepancies (e.g., separate into groups).
- When an individual trainee is clearly not keeping up with the rest of the class, avoid personal criticism and discourage ridicule by other trainees; if appropriate removing the trainee from the course.
When Assessing Trainee Ability
- Assess objectively, against pre-set criteria, the mastery of skills by trainees and, in accordance with the organisation's policy.
- Recognise trainees' achievements by issuing competence certificates to those who have reached the required mastery of skills or attendance certificates to those who have attended the complete course, but have not reached the required mastery of skills.
- Where trainees have not reached the required mastery of skills, agree with the individual's manager what additional training or other actions should be taken.
- Ensure that all records of assessments are stored securely and are only accessible by authorised individuals.
- Refrain from citing examples of the performance of particular trainees during future training courses.
When Assessing the Success of a Training Course
- Encourage trainees to complete course completion forms while everything is still fresh in their minds, honestly recording possible improvements in the course.
- Review course assessment forms and identify areas where training could be improved.
- Ensure the confidentiality of course completion forms if necessary
When Evaluating the Benefits of Training
- Record in the course completion form possible improvements to the course and additional training requirements for the trainees
- Review course completion forms completed by trainers and identify where additional pre- or post-training could make training more successful.
- Monitor metrics produced by the organisation (production rates, failure rates) and demonstrate where training has improved, or additional training could improve these metrics.
- Periodically review the training plan and implement improvements.
5.5 System Operations
When Managing Systems Operations
- Ensure that you are up to date with and abide by all applicable health and safety regulations.
- Continually review the effectiveness of the current IT strategies in supporting the organisation's business objectives; promote new strategies where these may benefit the information and communications needs.
- Maintain your awareness of other options for providing IT, such as outsourcing, new approaches to recruitment and retention, and global supply contracts.
- Participate fairly in the evaluation of these options, even if they may result in uncertainty about your career.
- Regularly review new developments and price changes (network tariffs, licence fees), recommending changes to the organisation when they offer both cost-savings and acceptable service levels, availability, response times, security and repair times.
- Use appropriate capacity management tools to monitor the hardware, software and networks to provide early warning or prediction of capacity problems; initiate actions (such as procurement of additional equipment) to prevent over capacity.
- Establish a configuration management system that tracks the delivery and formal testing of configuration items, the content of each build and the status of all defects.
When Assuring Business Continuity
- Use business impact analysis methods, tools and techniques as appropriate to identify business processes critical to the continuity of the organisation.
- Define criticality criteria and the quantifiable and qualitative impacts on the organisation arising from the loss of systems' availability, integrity or confidentiality.
- Use security risk analysis methods, tools and techniques as appropriate to identify potential exposures to application systems critical to the continuity of the organisation's business e.g. single points of failure, lack of effective countermeasures or lack of tested, up-to-date recovery plans.
- Define and prioritise actions to address the potential exposures, to a level appropriate to the organisation.
- Define contingency planning and disaster recovery procedures to standards that will maintain the continuity of application systems critical to the organisation's existence to a level agreed by the organisation; regularly test and maintain these procedures and ensure appropriate actions are taken to deal with new or changed risks.
When Providing System Administration and Operations
- Adopt a policy that minimises the replenishment of consumables (in particular paper, printer cartridges) and enables recycling of those consumed.
- Proactively seek to improve the performance of the system (in particular databases, networks) by regularly monitoring responsiveness and tuning performance parameters accordingly.
- Continue to check back-up and recovery procedures really work before any recovery is necessary.
- Regularly monitor resource usage and failure rates and keep management informed of any trends.
- Be cautious when rectifying operational exceptions and error conditions, calling for expert help if there is any concern that the operational data may be compromised.
- When any error condition necessitates the restriction or removal of system resources, be aware of the users needs, wherever possible informing them in advance of any limitations and keeping them informed of progress.
When Performing Database Administration
- Be aware of the commercial sensitivity of the organisation's data, taking measures to prevent unauthorised access, without preventing access by legitimate users.
- Refrain from accessing data which you have no need to see.
- Enforce strict partitioning between operational data and data used for training or test purposes; discourage support staff from attempting any testing on the operational data.
- Make yourself aware of the licensing conditions and prevent situations where they could be breached.
When Managing IT Assets
- Establish a management policy that states the organisation's commitment to safeguarding its IT assets and promote awareness of this policy within the organisation and to your customers and suppliers.
- Assign responsibilities for the purchasing, receipt, installation, movement and ultimate disposal of all IT assets; ensure that records are kept at each step.
- Adopt an ethical destruction policy, maximising the re-use of materials and minimising pollution caused by materials not recycled.
- Establish mechanisms to protect the organisation's IT assets from external violation; use a combination of software controls (firewalls, virus protection, passwords) and physical controls.
- Protect the integrity of the organisation's systems and data by discouraging the (down)loading of unlicensed software onto the organisation's IT equipment; this includes freeware, shareware, trial software, screen savers and games and obscene material.
- When it is necessary to (down)load software, do so only with the authority of the owner.
- Promote awareness of the Data Protection Act, in particular the responsibilities of management to inform staff of their obligations under this Act.
- Establish regular and random auditing of the organisation's IT assets; use appropriate tools to help automate this.
- Encourage your colleagues to appreciate that auditing IT equipment under their control is to help protect them from prosecution, not just to snoop on them.
- Resolve anomalies identified by audits; seek agreements with suppliers to resolve any under-licensing issues.
- Seek recognition of your achievements through membership of organisations such as FAST (Federation Against Software Theft).
- Promote awareness of the ethical and legal issues involved in having obscene material on an IT system.
5.6 Support and Maintenance
When Establishing a Support Service
- Establish the level of support which may realistically be expected and provide the tools, documentation and suitably trained staff to meet this expectation.
- Avoid providing a solution that will make it impossible for the customer to transfer the service to another supplier.
- Promote a mechanism to change the levels of service without the customer incurring excessive costs.
- Avoid placing dependencies on the customer for tasks that should be included in the service.
- Ensure that documentation of the supported systems and software is available and in an appropriate form for those receiving the call for support.
- Provide a means for people to benefit from earlier support; maintain a log of support requests and solutions, maintain a list of frequently asked questions.
When Managing a Support Service
- Identify to the customer any changes to his business procedures that will improve the efficiency of the service provided, even if this will result in reduced revenues to the organisation.
- Avoid passing on unnecessary costs to the customer, even if they are covered by a service level agreement.
- Reassure the customer that any complaints about the quality of service are being taken seriously and keep him/her informed of improvements.
- Provide the customer with as much notice as possible of any changes in the service levels which may cause costing thresholds to be exceeded.
- Keep the customer informed of any situations that may result in a deterioration in the quality of service and the steps being taken to resolve the situation.
- Gather records of the services provided and take all the necessary actions to achieve target service levels.
- Honestly maintain metrics on the services provided, resisting the temptation to hide shortcomings to make the metrics look better, and take positive measures to improve the service.
- Keep all parties informed of the progress in dealing with support requests, especially when delays are expected.
When Receiving Requests for Support
- Show respect to all people requesting support, irrespective of business and technical knowledge.
- Even if a problem seems trivial, give assurance that it will be investigated and a response will be given.
- Deal fairly with competing demands for support.
- Appreciate the consequences of giving incorrect advice.
- Recognise that some problems that appear trivial from a technical viewpoint may have major impact on the business.
When Investigating Problems
- Avoid unnecessary work by researching previous problems and looking for common solutions.
- Where similar problems re-occur, investigate ways of eliminating them, through system/operational changes or additional training.
- Study the outcome of transient faults and actively monitor for possible symptoms.
- Be aware of the commercial sensitivity of operational data; keep control of copies of such data and ensure destruction when the investigation is complete.
- Avoid making investigations on an operational system; if there is no choice, be aware of the consequences.
- Appreciate the consequences of making changes to operational systems: resist the temptation to make ad hoc fixes unless you are certain they will work.
- Bring to the attention of your next level of management any problem that you are unable to resolve within the target timescales.
- Be aware of the costs of investigation, especially when using remote communications links.
When Liaising with Development Staff (Internal or Third Party Suppliers)
- Do not hand over commercially sensitive information without ensuring that procedures for the handling, processing, storing and destruction of the information are in place.
- Ensure all parties appreciate the seriousness of problems and their impact on the operation.
- Do not allow technical jargon to cloud the issue and prevent understanding of the real problem.
- Ensure that you are included in any direct communication between the users and development staff.
BCS Documents and Electronic Material
British Computer Society Code of Conduct. Version 2.0. Issued 5 September 2001
BCS Code of Practice Handbook No 6 circa 1984
BCS Code of Good Practice circa 1972
Code of Practice for Independent Computer Contractors 1998
Industry Structure Model version 3.3
Skills Framework for the Information Age (www.sfia.org.uk)
Relevant Standards and Procedures
BS7799, the Code of Practice for Information Security Management.
Relevant Codes of Practice and Guidance of Other Professional Bodies
Code of Professional Conduct and Statement of Best Practice for The Institute of Management Consultancy, (http://www.imc.co.uk/).
Ethical Codes of UK Professional Associations PARN 2002
Federation Against Software Theft (http://www.fast.org.uk)
Institute of Management Consultancy Position Paper on Self-Regulation 2000
Organisation for Economic Co-operation and Development.
Project Management Method PRINCE 2 (http://www.ogc.gov.uk/prince)
Quality Assurance Agency for Higher Education (http://www.qaa.ac.uk)
Safety-related systems - Guidance for engineers (ISBN 0 9525103 0 8, Issue 1, March 1995)
The IT Supplier Code of Best Conduct, issued by Intellect.
Some Relevant UK Legislation
Obscene Publications Act 1959 & 1964
Copyright, Designs and Patents Act 1988
Computer Misuse Act 1990
Copyright (Computer Programs) Regulations 1992
Disability Discrimination Act 1995
Data Protection Act 1998
Public Interest Disclosure Act 1998
Consumer Protection (Distance Selling) Regulations 2000
Electronic Commerce (EC Directive) Regulations 2002
B. Glossary of Abbreviations
Confederation of British Industry
Continuing Professional Development
CCTA Risk Analysis and Management Method
Disability Discrimination Act
Department of Trade and Industry
Federation Against Software Theft
Information Communication Technology
Industry Structure Model
Programmable Electronic Systems
Quality Assurance Agency for Higher Education
Skills Framework for the Information Age
Software components Of Unknown or uncertain Pedigree