Approaches to software development
This free course, Approaches to software development, presents an engineering approach to the development of software systems – a software engineering approach, paying particular attention to issues of software quality, in terms of both product (what is built) and process (how we build it).
The material is organised in a distinctive way. We adopt an object-oriented approach to software development and assume you are familiar with the basic concepts of objects. This approach uses a fairly standard set of development techniques. We take a broad view, and techniques are discussed fairly independently of exactly where and when they would be used.
There has always been debate in the computing industry about just how useful any particular development technique is. We believe that the techniques introduced over the last 30 years or so, and many others currently being researched, are important because they address fundamental issues concerning software quality. You are probably already familiar with some of the techniques used in this course. Studying these techniques is more about how to use them to address the quality issues of what you are developing and how you are developing it, rather than about how to use them in practice.
In this course you will see a precise way of applying techniques, but we will also discuss, in parallel, a more light-weight approach to software development. You will become familiar with the purpose of utilising these techniques and will also develop an understanding of when their systematic use may or may not be appropriate. With experience you will be able to make decisions on which is the right combination of techniques for a particular project.
Software systems are built to meet requirements. (This leads to the developer’s mantra, ‘Software must be delivered on time, to budget and to specification.’ You may know it in another form.) A successful software project must:
- resolve the diverse and possibly conflicting needs of users in a disciplined way
- satisfy the users’ expectations
- have been developed and delivered in a timely and economical manner
- be resilient to the changes that will be introduced during its operational lifetime
- demonstrate good overall system quality.
This is a daunting prospect for those developing and maintaining software. A central aim of this course is to give you the intellectual tools to cope with the challenge.
This course provides an introduction to software engineering. Assuming you already have some experience of software development, some of this material will be familiar to you, though your existing knowledge will be consolidated and will begin to be extended to more advanced areas. We discuss some of the ideas that underpin software development in Section 1, and consider the basic activities of software development in Section 2. Section 3 looks at the role of models and modelling languages, introduces a well-known software development process.
This OpenLearn course is an adapted extract from the Open University course.