CONFIDENTIAL

Software Development for Business

Draft Learning Outcomes and Skills Requirements (LOSR)

For Review

This document sets out the topics and learning outcomes identified through employer consultation

CONFIDENTIAL

Document prepared by: Dr Tony Venus

Contact: 1 Castle Lane, London, SW1E 6DR

Mobile: 07939540335

E-mail:

Version: 1.10 draft

Date created: 15 an 2013

Last updated: 29 Jan 2013

Table of Contents

1 High Level Learning Outcomes 1

2 Skills Topics for Software Development 4

3 Learning Outcomes 6

3.1.1 IT in Business 6

3.1.2 Software Development Essentials 6

3.1.3 Data and Algorithms 7

3.1.4 Software Modelling & Analysis 7

3.1.5 Software Requirements Management 7

3.1.6 Software Design 8

3.1.7 Software Testing 8

3.1.8 Software Development Process 8

3.1.9 Software Development in Context 9

3.1.10 Software Configuration and Release Management 9

3.1.11 Software Deployment 9

3.1.12 Software Maintenance 10

3.1.13 Software Quality 10

3.1.14 Database Development 10

3.1.15 Software Security 11

3.1.16 Software Project Management 11

3.1.17 Professional Practice 12

3.1.18 Innovation 12

© Copyright e-skills UK Sector Skills Council Ltd 2000-2013

CONFIDENTIAL

1  High Level Learning Outcomes

This document defines the learning outcomes that Graduates of the e-skill UK undergraduate Software Development for Business degree programme must be able to demonstrate.

The high level degree competency outcomes are:

1.  Show competence in software development processes, including the knowledge, skills, and professional competences necessary to begin practice as a software engineer in a business environment.

Students, through learning, regular reinforcement and practice, and exposure to real world software development paradigms need to gain confidence in their ability to perform software development practice. Through a structured program of study, the knowledge, understanding and skills are acquired through a staged approach with increasing levels of competence being achieved as the degree progresses. Graduates need to develop an understanding and appreciation of professional issues in software development related to ethics and professional conduct, economics, and the needs of employers.

2.  Be able to confidently work as an individual and as part of a team to develop and deliver quality software deliverables.

Students need to develop the ability to perform software development tasks that involve work both as an individual and also working in a team. Developing an appreciation and experience of effective team working is essential to operating effectively in a business environment. The degree programme must include an emphasis on the importance of team working as a disciplined approach, the need to adhere to deadlines, communication, and team as well as individual performance evaluation.

3.  Design appropriate solutions in a range of application contexts/domains using software development approaches that deliver business value.

Students need to be exposed to a variety of software design contexts, including desktop applications, internet and mobile device software and apps. They need to understand and develop appropriate approaches to software design in the general sense, and to problem solving for specific application domains. They need to be able to understand the strengths and the weaknesses of the various options available and the implications of the selection of appropriate approaches for a given context. They must develop competence in designing solutions within business constraints of time, cost and quality as well as addressing security. Having a thorough understanding of software requirements (including non-functional requirements), how to interpret and prioritise requirements is essential.

4.  Build and test software solutions for a range of application contexts/domains.

Students need to be able to apply software development to a wide range of contexts and environments. These include operating systems, internet and fixed platforms, apps, games, business solutions etc. They need to be able to understand how to transfer development principles to new and different technologies. They need to be able to assure the functionality of their solutions through testing and embed secure development principles to all stages of development. Students also need to understand that a significant amount of software development work, involves updating, maintaining and refactoring existing solutions. They need to develop and demonstrate confidence in reading and reviewing existing software and the need to increase efficiency through refactoring.

5.  Reconcile conflicting project objectives, finding acceptable compromises recognising the limitations of capability, capacity, cost, and time.

Students should develop a professional approach to managing their contribution to project deliverables. In the business environment they will need to understand how to estimate activities and balance meeting the specification, but delivering on time and to the right quality level. Students need to understand how to approach conflicting demands and engage in exercises that expose them to conflicting and changing requirements. There should be a strong real world emphasis in the study. Students should appreciate when to question deliverables – e.g. is an activity to fix an error (bug) to achieve the stated quality, or is it an enhancement request that needs to be considered as an additional requirement with impact assessment, planning, resourcing and costing decisions to be made on if and when to consider the additional request. The degree programme should address these issues, with the aim of ensuring high quality requirements and a feasible software design.

6.  Demonstrate an understanding of and apply current theories, models, and techniques that provide a basis for problem identification and analysis, software design, development, implementation, verification, and documentation.

The presence of the Capstone project, an important final activity at the end of a software development program of study, is of considerable importance in this regard. It offers students the opportunity to tackle a major project and demonstrate their ability to bring together topics from a variety of courses and apply them effectively. This mechanism allows students to demonstrate their appreciation of the broad range of software development topics and their ability to apply their skills to genuine effect. This should also include the ability to offer reflections on their achievements.

7.  Demonstrate an understanding and appreciation for the importance of negotiation, effective work habits, leadership, and good communication with stakeholders in a typical software development business environment.

It is important that students gain an insight and understanding of range of professional interpersonal skills required to be effective in business when producing a solution for a problem domain (requirements, design, solution development etc). Software engineers must recognise that effective software development is achieved as a result of a dynamic and interactive team based approach. Employer visits, guest lectures from practicing software engineers etc will aid students in better comprehending the business team environment, and the importance of professionalism.

8.  Learn new models, techniques, and technologies as they emerge and appreciate the necessity of such continuing professional development.

On graduating, students should clearly demonstrate that they are self-motivated life-long learners. They should understand the continuous nature of emerging technologies, and how and when is best to harness and exploit their benefits for business gain. Students should be capable of identifying, selecting and applying new technologies, tools and methods and be able to assess their contribution to software development. The final year project allows students to apply critical thinking and use context driven software development to plan and complete a significant project (not simply a software deliverable).

9.  Embedding security in the software development life cycle.

Security has become a widespread and significant issue in the development and ongoing safeguarding of software systems. Students should have a robust understanding of software security issues, and the principle models of security in relation to information systems. They should understand the nature of risk, threats and vulnerabilities and be able to incorporate preventative measures into software design. They should be aware of current approaches to safeguarding the systems that they are involved in developing, including security testing. Throughout the degree they should be thinking about security implications and adopt secure architecture, design and development practices.

2  Skills Topics for Software Development

The table below lists the skills topics to be covered by a Software development for Business degree. It is not intended that the list is used as a pro-forma curriculum. Each university will have its own approach to delivering the degree and progression. The skills and derived learning outcomes that are detailed in the following section will provide a checklist to ensure that each degree covers each of the learning outcomes appropriately.
Skills Topics for Software Development
1.  IT in Business
1.1  The nature of IT in business
1.2  Business organisation
1.3  Business exploitation of technology
1.4  Hardware architecture in context
1.5  Systems architecture in context
1.6  Open source operating systems, software applications and productivity tools
2.  Software Development Essentials
2.1  Software Development Foundations
2.2  Development technologies
2.3  Development tools
2.4  Formal development methods
3.  Data and Algorithms
2.1  Mathematical foundations of data
2.2  Algorithmic foundations for software and pseudo code
2.3  Algorithmic processing
4.  Software Modelling & Analysis
4.1  Modelling foundations
4.2  Types of models
4.3  Analysis fundamentals
5.  Software Requirements Management
5.1  Requirements fundamentals
5.2  Eliciting requirements
5.3  Functional & Non functional requirements
5.4  Document requirements
5.5  Prioritize Requirements
5.6  Requirements validation
6.  Software Design
6.1  Design concepts
6.2  Design patterns
6.3  Detailed design
7.  Software Testing
7.1  Testing foundations
7.2  Reviewing requirements
7.3  Test planning
7.4  Testing practice
7.5  Test results analysis and reporting
8.  Software Development Process
8.1  Software development process concepts
8.2  Software process implementation
9.  Software Development in Context
9.1  Practical software development
9.2  Development tools
9.3  GUI development
9.4  Develop software solutions using recognised programming languages
10. Software Configuration and release management
10.1  Software configuration management
10.2  Change control
10.3  Versioning
10.4  Build and Release software
11. Software Deployment
11.1  Deployment fundamentals
11.2  User documentation
11.3  User training
12. Software Maintenance
12.1  Read, review, existing software solutions
12.2  Update and maintain existing software solutions
12.3  Code improvement through refactoring
13. Software Quality
13.1  Software quality concepts and culture
13.2  Software quality standards
13.3  Software quality processes
13.4  Software development process assurance
13.5  Software development product assurance
14. Database Development
14.1  Data modelling
14.2  Database design
14.3  Database implementation
14.4  Data querying
15. Software Security
15.1  Information Security foundations
15.2  Security risks, threats and vulnerabilities
15.3  Security testing of software and systems
15.4  Secure architecture
15.5  Secure development
16. Software Project Management
16.1  Project management standards
16.2  Project planning and estimating
16.3  Project staffing and organisation
16.4  Project control
16.5  Project risk management
17. Professional Practice
17.1  Team working, team dynamics
17.2  Making presentations
17.3  Written communication
17.4  Personal preferences
17.5  Negotiation skills
17.6  Professionalism - Careers and CPD
18. Innovation
18.1  Technology innovation and emerging technologies
18.2  Business innovation

Table 1: Skills topics coverage in the Software Development for Business degree (SDfB)

3  Learning Outcomes

This section details the learning outcomes against each of the software development degree topics listed in table 1 above.

3.1.1  IT in Business

1.  IT in Business
1.1  The nature of IT in business
1.2  Business organisation
1.3  Business exploitation of technology
1.4  Hardware architecture in context
1.5  Open source operating systems, software applications and productivity tools

SD01.L1 Assess the contribution of technology in the current global business environment and how this might change and develop in the future

SD01.L2 Have demonstrated a mastery of basic business functions and organisational structures, in different sectors including an international dimension, with a sound understanding of contemporary working practices, covering work in the office, at home, on the move and in a virtual environment

SD01.L3 Create a business case for a technology-enabled business solution, including an assessment of business benefits, impacts, risks and return on investment

SD01.L4 Design a small-scale system suitable for business use, including server, PCs, mobile communications, networking and security mechanisms

SD01.L5 Conduct a review of open-source software, operating systems, development tools and materials using appropriate guidelines

3.1.2  Software Development Essentials

2.  Software Development Essentials
2.1  Software Development Foundations
2.2  Development methodologies
2.3  Development tools
2.4  Formal development methods

SD02.L1 Understand the foundations of software development that support the design and construction of software products, including the transformation of a design into an implementation, the tools used during this process, and formal software construction methods

SD02.L2 Understand and be able to apply software design and development methodology (e.g., structured or object-oriented), and appropriate design notation

SD02.L3 Select, with justification, an appropriate set of tools to support the development of a range of software products

SD02.L4 Explain the potential benefits and drawbacks of using formal specification languages

3.1.3  Data and Algorithms

3.  Data and Algorithms
3.1  Mathematical foundations of data
3.2  Algorithmic foundations for software and pseudo code
3.3  Algorithmic processing

SD03.L1 Write programs that use each of the following data structures: arrays, strings, linked lists, stacks, queues, and hash tables

SD03.L2 Use pseudo code or a programming language to implement, test, and debug algorithms for solving problems

SD03.L3 Confidently design and apply algorithms for manipulating data in programming solutions for a variety of computational problems

3.1.4  Software Modelling & Analysis

4.  Software Modelling & Analysis
4.1  Modelling foundations
4.2  Types of models
4.3  Analysis fundamentals

SD04.L1 Understand the role and purpose of modelling to visualise and better understand and document the system being developing and the proposed design solutions

SD04.L2 Apply a wide variety of software modelling techniques, including object and state-based approaches to model aspects of the domain and system behaviour and to aid design of software