Course Materials
Course Materials
2 2
NATIONAL OPEN UNIVERSITY OF NIGERIA
FACULTY OF SCIENCE
3 3
Module Introduction
This module introduces you to the basic principles and notions of software engineering. We will discuss
topics like software engineering methodology, including software process and software process models. You
will also get to know the professional and ethical demands of a software engineer.
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Engineering Methodology
3.2 Software Engineering
3.3 Software
3.4 Software Costs
3.5 Software Engineering vs. popular computing disciplines
3.6 Attributes of good software 4.0
Self-Assessment Exercise 5.0
Conclusion 6.0
Summary 7.0
Further Readings
4 4
1.0 Introduction
This unit introduces students to the basic concepts of software engineering. It describes
software and software engineering methodology, explaining the attributes of good software. The unit
discusses the fundamental notions of software engineering methodology, thus guiding and facilitating your
understanding of the subsequent units.
Software engineering methodology describes a framework for planning, executing, and managing the
process of developing software systems.
Software engineering is the application of systematic and quantifiable approach in the development,
operation, maintenance; and retirement of software. As a discipline, it is an engineering discipline and
a branch of computer science and engineering that is concerned with all aspects of software
production. Software engineers adopt a systematic and organised approach to solving a software
engineering problem. They also use appropriate tools and techniques in delivering software jobs.
3.3 Software
Software simply refers to computer programs including it associated libraries, data and documentation
such as requirements, design models and user manuals. Software products may be developed for a
particular customer or may be developed for a general market. It basically may be
5 5
1. Generic: developed to be sold to a range of different customers e.g. PC
software such as Excel or Word.
2. Bespoke (custom): developed for a single customer according to
their specification.
New software can be created by developing new programs, configuring generic software systems or
reusing existing software.
Software costs often dominate computer system costs. The costs of software on a PC are often greater
than the hardware cost. Also software costs more to maintain than it does to develop. Thus software
engineering is always concerned with cost-effective software development.
While computer science is concerned with theory and fundamentals; computer engineering deals more
with hardware architecture and hardware-software integration. software
engineering on the other hand is concerned with the practicalities of developing and
delivering useful software. Figures 1.1, 1.2 and 1.3 show how each of software engineering, computer
engineering and computer science occupy the problem space of computing. The horizontal range runs
from Theory, Principles, Innovation on the left, to Application, Deployment, Configuration on the
right. The vertical range runs from Computer Hardware and Architecture at the bottom, to
Organizational Issues and Information Systems at the top.
6 6
Figure 1.1: the problem space of software engineering
7 7
Figure 1.3: the problem space of computer science
A software product should deliver the required functionality and performance. Usually, the attributes
would fall into the following categories;
a. Operational attributes
Budget: software must be cost-effective
Usability: software must be usable
Efficiency: software must be efficient and not waste system resources
Functionality: software must be functional and serve the purpose for its creation
Dependability: software must be trustworthy
Security: software must be secure
Safety: software must be safe to use
b. Transitional attributes
Portability: should be possible to move from one environment to another
Interoperability: should exchange and make use of information from other
software systems
8 8
` Reusability: should be possible to deploy software assets on different projects
Adaptability: should be adaptable to change in its environment and
circumstances
c. Maintenance attributes
Modularity: should be divided into components
Maintainability: software system or component should be easy to correct faults
Scalability: should be upgradeable in order to meet new user requirements
Discussion
Briefly outline three ways a generic software might be different from a bespoke software.
Scenario
After using a certain desktop application on his friend's computer, a user ordered online for the same
application for his computer, to enable him complete his word editing assignment. Would you classify this
application as a generic or bespoke software?
a. Dependability
b. Adaptability
c. Expensive
d. Usability
2. What describes a framework for planning, executing, and managing the process of developing software
systems?
a. Software engineering
b. Software lifecycle
c. Software process
b. Software engineering methodology
5.0 Conclusion
9 9
In this unit, you have learnt about software engineering methodology. You have also been able to understand
the difference between software engineering, computer engineering and computer science. Finally, you have
also understood what software is and the attributes of a good software.
6.0 Summary
What you have learnt borders on the basic idea of software engineering. The subsequent units shall build upon
these fundamentals.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
1 1
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Vijayasarathy, L. R. and Butler, C. W. (2016). Focus: The Software Engineering Process. Colorado state
university.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754
http://stg-tud.github.io/eise/WS11-EiSE-03-What_is_Software_Engineering.pdf
https://web.archive.org/web/20141021153204/http://www.acm.org/education/curric_vols/CC2005-
March06Final.pdf
https://ftms.edu.my/v2/wp-content/uploads/2019/02/csca0101_ch07.pdf
1 1
Unit 2: Professional and Ethical Responsibilities
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Professional and Ethical Responsibilities
3.2 Areas of Professional Responsibility
3.3 ACM/IEEE Code of Ethics
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, you will understand your professional and ethical responsibilities as a software engineer. You will
also understand the IEEE-CS/ACM code of ethics.
Software engineering involves greater responsibilities than simply the application of technical skills.
They must be honest and ethically responsible to be respected as professionals. Similarly, ethical
behaviour is more than simply upholding the law.
1 1
Confidentiality: software Engineers should normally respect the confidentiality of their employers or
clients, irrespective of whether or not a formal confidentiality agreement exists.
Competence: software Engineers should not misrepresent their level of competence. They should not
intentionally accept jobs outside their areas of competence.
Intellectual property rights: software Engineers should be aware of local laws governing the use of
intellectual property like patents, copyright, etc. They should always ensure that the intellectual
property of employers and clients is protected.
Computer misuse: Software engineers should not use their technical skills to misuse other people’s
computers. Computer misuse ranges from simple misuse such as game playing on an employer’s
machine, to very serious misuse like spread of computer viruses.
1. Public - Software engineers shall act consistently with the public interest.
2. Client and Employer - Software engineers shall act in a manner that is in the best interests of their
client and employer consistent with the public interest.
3. Product - Software engineers shall ensure that their products and related modifications meet the
highest professional standards possible.
4. Judgment - Software engineers shall maintain integrity and independence in their professional
judgment.
5. Management - Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance.
6. Profession - Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
7. Colleagues - Software engineers shall be fair to and supportive of their colleagues.
8. Self - Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.
Discussion
In your understanding, discuss the benefits of code of ethics to the software engineer.
Scenario
1 1
As the chief executive officer of a large software company, your client's competitor has approached you with
good offer to sell a custom made software product you developed for your client to them. What would you
do?
Is there any area of the code ethics you would contravene if you do the bidding of your client's competitor?
1. one of these is not one of the eight principles of IEEE-CS/ACM code of ethics
a. public
b. commercial
c. product
d. profession
2. what area of responsibility would require a software engineer not divulge very important information about
their client?
a. Confidentiality
b. secrecy
c. repudiation
d. intellectual property rights
5.0 Conclusion
In this unit you have learnt about the issues of professional responsibility.
6.0 Summary
What you have learnt in this unit concerns issues of professional responsibility.
ACM/IEEE (2001). Computing curricula 2001, computer science, final report. The Joint Task Force on
Computing Curricula, IEEE Computer Society and Association for Computing Machinery.
1 1
ACM/IEEE (1999). Software engineering code of ethics and professional practice, (v5.2). Retrieved 28th
June, 2020 from https://ethics.acm.org/code-of-ethics/software-engineering-code/
Bott, F. (2005). Professional Issues in Information Technology. Swindon, UK: British Computer
Society.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers,
Morgan Kaufmann Publishers: San Francisco, CA.
Duquenoy, P. (2007). Ethical, Legal and Professional Issues in Computing. London. Thomson
Learning.
Génova, G., González, M. R. and Fraga, A. (2007). Ethical Education in Software Engineering:
Responsibility in the Production of Complex Systems. Science and Engineering 13, pp 505–522
Génova, Gonzalo; González , M. R. and Fraga, Anabel (2014). Ethical Responsibility of the Software
Engineer
Laudon, K. (1995). Ethical Concepts and Information Technology. Comm. ACM 38 (12): 33–39.
doi:10.1145/219663.219677.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Unit 3: Software Process
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Process
3.2 Process Activities
3.3 Software Specification
3.4 Software Development (Design and Implementation)
3.5 Software Validation
3.6 Software evolution
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, you will learn about software process and software process activities.
Software process, also known as Software Development Life Cycle refers to well-defined and
structured sequence of stages and activities in software engineering to develop the intended software
product.
1 1
3.2 Process Activities
Software Specification: what the system should do and its development and operational
constraints
Software Development: production of the software system according to specification
Software Validation: checking that the software product has the customer specified functionalities
Software Evolution: changing the software in response to changing user and work demands.
This is the process of converting the system specification into an executable system. Software design
involves designing a software structure that realises the specification; while implementation involves
translating this structure into an executable program.
Software validation is concerned with showing that a software product conforms to its specification
and that the product meets the expectations of the customer. It involves checking the processes at each
stage of the software process. The majority of validation costs are incurred after implementation when
the operation of system is tested.
The software may be tested in three stages namely: the system component, where each component of
the system is tested; the integrated system, some groups of components of the system is tested as a
unit; and the whole system, where the overall functionality of the system is tested.
The aim of software evolution is to implement the possible major changes to the system. The existing
larger system is never complete and continues to evolve, thereby making the system more complex.
The objectives of software evolution are to ensure the reliability and flexibility of the system.
Discussion
Scenario
1 1
A client has approached your software company to develop a certain software for them. Clearly state how you
would begin this assignment in accordance with the software process activities.
b. Software engineering
d. Software evolution
a. Software specification
b. Software evolution
c. Software maintenance
d. Software validation
5.0 Conclusion
In this unit you have learnt about the software process and software process activities.
6.0 Summary
The software process activities include; Software Specification, Software Development, Software Validation
and Software Evolution.
1 1
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754
1 1
http://moodle.autolab.uni-
pannon.hu/Mecha_tananyag/szoftverfejlesztesi_folyamatok_angol/ch03.html#d0e550
https://www.tutorialspoint.com/software_engineering/software_engineering_tutorial.pdf
2 2
Unit 4: Software Process Models
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Process Models
3.2 The Waterfall Model
3.3 Problems of the waterfall model
3.4 The V-Model
3.5 application of v- model
3.6 Disadvantages of the V-Model
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, you will understand what a software process model is. You will also understand the waterfall
model and V-Model.
2 2
Examples of generic process models include:
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components.
The waterfall model, also referred to as a linear-sequential life cycle model was the first software
process model to be introduced and is. It consists of separate and distinct phases of specification and
development.
2 2
1. Difficult to accommodate change after the process is underway. One phase has to be complete
before moving onto the next phase.
2. Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing
customer requirements.
3. This model is only appropriate when the requirements are well-understood and changes will be
fairly limited during the
design process.
4. Few business systems have stable requirements.
5. The waterfall model is mostly used for large systems engineering
projects where a system is developed at several sites.
The V-model is an improvement of the waterfall model. It provides means of testing of software at
each stage in reverse manner. This is an improvement to the waterfall model which only allows you to
move down in a linear way. Just like the waterfall model the process steps follow each other in a
sequential order but V-model allows the parallel execution of activities. On each stage of the software
development process, testing in carried out to validate and verify each stage of the process. This model
is often referred to as verification and validation model
2 2
d. There are no ambiguous or undefined requirements.
e. The project is short.
Discussion
Scenario
You are the Chief Operating Officer of a software development company. A client has approached your team
to develop a new software for them. On discussing with their team, you observe they do not have all the
system requirements well documented and would rather prefer an arrangement where they keep adjusting
system requirement until the software product is fully developed and functional. Why will either waterfall
model or V-model be unsuitable for this job?
a. spiral development
b. Evolutionary development
c. waterfall model
d. V - model
2. Which of these is not a phase of the waterfall model
2 2
d. Integration and system testing
5.0 Conclusion
In this unit you have learnt about software process model. You have also learnt some software process models
which include the waterfall model and V-Model.
6.0 Summary
waterfall model and V-model are software process models that require system requirements to be specified
and fully documented before design and implementation can commence.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
2 2
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754
https://www.tutorialspoint.com/sdlc/sdlc_v_model.htm
http://tryqa.com/what-is-v-model-advantages-disadvantages-and-when-to-use-it/
2 2
Unit 5: Evolutionary and Incremental Development
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Evolutionary Development
3.2 Problems of Evolutionary Development
3.3 Application of evolutionary development
3.4 Incremental Development
3.5 Advantages of Incremental Development
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, we will look at the evolutionary development and incremental development.
The main objective of the evolutionary development is to work with customers and to evolve a final system
from an initial outline specification. This model starts with well-understood requirements and adds new
features as proposed by the customer. The Evolutionary development model divides the development cycle
into smaller, incremental waterfall models in which users are able to get access to the product at the end of
2 2
each cycle. Feedback is provided by the users on the product for the planning of the next cycle with the
development team responding, often by changing the product, plan or process.
In the incremental development rather than deliver the system as a single delivery, the development and
delivery is broken down into increments with each increment delivering part of the required functionality.
User requirements are prioritised and the highest priority requirements are included in early increments. Once
the development of an increment is started, the requirements are frozen though requirements for later
increments can continue to evolve.
2 2
Figure 1.7 Incremental development
Discussion
Scenario
A small size company with twenty staff has requested for a Human Resource Management system. They have
forecasted that staff strength will not grow beyond thirty persons, and require just a basic product that can
handle the most simple human resource management activities.
If they are unwilling to provide a complete detail of their system requirement, what software methodology
would you recommend for this type of project?
2 2
4.0 Self-Assessment Exercise(s)
1. which of the following process models has the objective of working with customers to evolve a final system
from an initial outline specification?
a. evolutionary development
b. waterfall model
c. V-model
d. spiral development
2. Evolutionary development can be applied in all but one of these projects
5.0 Conclusion
In this unit you have learnt about evolutionary and incremental development. You have also learnt the
advantages of incremental development and the problems of evolutionary development.
6.0 Summary
Evolutionary and Incremental development are models where the customer and the team developing the
software collaborate throughout the developmental stage of the software product; with the customer providing
the specification throughout this stage until the final product is delivered.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
3 3
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754
https://www.geeksforgeeks.org/software-engineering-incremental-process-model/
3 3
Module 2: Introduction To Software Engineering Methodology
Module
Introduc
tion
This module continues discussion on the different traditional software engineering process models. The
module also discussed agile development methods in software engineering.
Unit 1: Prototyping
Unit 2: Spiral Development
Unit 3: Agile Development Methods
Unit 4: Extreme Programming Unit 5:
The Dynamic System Development Method (DSDM)
Unit 1: Prototyping
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Prototyping Model
3.2 Types of Prototyping
3.3 Benefits of Prototyping
3.4 Problems of Prototyping
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, you will understand the prototyping model, the benefits of prototyping and the problems of
prototyping.
3 3
2.0 Intended Learning Outcomes (ILOs)
By the end of this unit, you will be able to:
describe the prototyping model
understand the benefits of prototyping
understand the problems of prototyping.
1. Throwaway prototyping: this is also known as rapid prototyping, and involves creation of a model
that will eventually be discarded rather than becoming part of the final delivered software system.
3 3
2. Evolutionary prototyping: involves the creation of a very robust prototype in a structured manner.
The developed prototype eventually becomes part of the new software system.
3. Incremental prototyping: here, the final product is built as separate prototypes. The separate
prototypes are merged later in an overall design.
3.3 Benefits of Prototyping
4. Increased chances of having high quality functionality with low risks of failure.
1. The user sees what appears to be a fully working system (in actuality, it is a partially working
model) and believes that the prototype (a model) can be easily transformed into a production
system. This is rarely the case. Yet many users have pressured developers into releasing prototypes for
production use that have been unreliable, and worse, virtually unmaintainable.
2. The developer often makes technical compromises to build a "quick and dirty" model. Sometimes
these compromises are propagated into the production system, resulting in implementation and
maintenance problems.
3. Budget may increase, as the management cost may go beyond the specified limit.
Discussion
Scenario
3 3
As the leader of a team of software engineers for a new software project, you observed that the new system
would involve heavy human-machine interaction. Would you consider prototyping model for this project?
State the reasons for your answer.
5.0 Conclusion
In this unit, you have learned about prototyping, the benefits and the challenges.
6.0 Summary
Prototyping is important because it moves the developers and the customers towards a quick implementation
of the desired software project.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
3 3
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
3 3
Unit 2: Spiral Development
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Overview of Spiral Development
3.2 The Spiral Process
3.3 The Advantages of the Spiral Model
3.4 Problems of the Spiral Model
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit discuses spiral development, including the advantages and the problems of spiral development
model.
The idea of minimising risks via the use of prototypes and other means is the underlying concept of
the spiral model. A simplistic way of looking at the spiral model is as a series of waterfall models,
each preceded by a risk analysis.
3 3
Before commencing each phase, an attempt is made to control (or resolve) the risks. If it is impossible
to adequately resolve all the significant risks at a given stage, the project is
immediately terminated.
In the spiral development, the process is represented as a spiral rather than a sequence of activities
with backtracking. Each loop in the spiral represents a phase in the process. There are no fixed phases;
while radial dimension as shown in figure 2.2 represents cumulative cost to date. The angular
dimension represents progress through the spiral. Each cycle of the spiral corresponds to a
development phase.
A phase begins (in the top left quadrant) by determining objectives of that phase, alternatives for
achieving those objectives, and constraints imposed on those alternatives. Next, that strategy is
analyzed from the viewpoint of risk. Attempts are made to resolve every potential risk, in
some cases by building a prototype. If certain risks cannot be resolved, the project may be terminated
or scaled down. If all risks are resolved, the next development step is started. This quadrant of the
spiral model corresponds to the pure waterfall model. Finally, the results of that
phase are evaluated and the next phase is planned.
1. The primary advantage of the spiral model is that it has a wide range of options to
accommodate the good features of other life-cycle models. It becomes equivalent to another lifecycle
model in appropriate situations.
2. Also the risk-avoidance approach keeps from having additional difficulties.
3. The spiral model focuses its early attention on the option of reusing existing software.
4. It prepares for life-cycle evolution, growth, and changes of the software product. Major sources
of this change are included in the product objectives.
5. It incorporates software quality objectives into software product development.
6. Emphasis is placed on identifying all objectives and constraints during each round.
7. The risk analysis and validation steps eliminate errors early on.
8. Maintenance is included as another cycle of the spiral; there is essentially no distinction
between maintenance and development. This helps to avoid underestimation of resources needed for
maintenance.
1. The risk-driven model is dependent on the developers' ability to identify project risk.
2. The entire product depends on the risk assessment skills of the developer. If those skills are
weak then the product could be a disaster.
3 3
3. A design produced by an expert may be implemented by non-experts. In a case such as this, the
expert does not need a great deal of detailed documentation, but must provide enough additional
documentation to keep the non-experts from going astray.
4. The process steps need to be further elaborated to make sure that the software developers are
consistent in their production.
5. It is still fairly new compared to other models, so it has not been used significantly and
therefore the problems associated with it haven't been widely tested and solved.
Discussion
Scenario
If your new software project may involve reusing an existing software, would you consider the spiral model
for the development of this software project?
3 3
4.0 Self-Assessment Exercise(s)
2. one good feature of the spiral development model is that _________ is constantly done
a. risk analysis
b. cost analysis
c. reverse engineering
d. model analysis
5.0 Conclusion
In this unit, you have learned about spiral development, the advantages and the problems.
6.0 Summary
Spiral development is important, due to its ability to accommodate other models. There are no fixed phase in
spiral development. Also, maintenance is part of the spiral development process.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
4 4
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
4 4
Unit 3: Agile Development Methods
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Introduction to Agile Software development
3.2 Characteristics of Agile Software development method
3.2.1 The Agile Manifesto
3.2.2 Agile software development principles
3.3 Applications of Agile Methods
3.4 Problems of Agile Method
3.5 Some Agile Software Development Models
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
4 4
Today's businesses operate in a rapidly changing environment, making them to contend with new
market opportunities, changing economic situations and fast evolving customer and product
requirements. This has made software delivery and products to try to keep up with changes in
economic situations. Software has to be developed and delivered rapidly to satisfy growing user
demands and requirements.
Similarly, the speed with which software change has made it impossible for it to have stable
requirements. Consequently, plan-based software development process like waterfall and V-model that
completely specify the system requirements before such system is designed, built, and tested make it
impossible for developers to satisfy the growing and changing user requirements for most business
software projects.
faster software development took off in the late 1990s with the development of the idea of "agile
methods", which is also known as rapid software development. These agile methods are designed to
produce useful software quickly.
In figure 2.3, we can see that while Agile development has the system alternate from requirement
engineering to design and implementation, plan-based models have the system flow from one stage to
another in the model.
4 4
Figure 2.3: Plan-based development compared against agile development.
a. The processes of specification, design and implementation are interleaved; No detailed system
specification, design documentation is minimized or generated automatically by the programming
environment used for system implementation. The user requirements document only contains an
outline of the most important system characteristics.
b. The system is developed in a series of increments, with the end-users and other system stakeholders
involved in specifying and evaluating each increment.
The agile manifesto was developed and signed by seventeen software engineers. It is a four-element
philosophy which states the values of agile software development. The signatories based this
manifesto on their combined experience of developing software and helping others do that. It includes
the following;
The agile manifesto is built on the following twelve principles of agile software development;
4 4
9. Continuous attention to technical excellence and good design
10. Simplicity—the art of maximizing the amount of work not done—is essential
11. Best architectures, requirements, and designs emerge from self-organizing teams
12. Regularly, the team reflects on how to become more effective, and adjusts accordingly
a. Small or medium-sized product development where the product is developed for sale. Most software
products and apps are now developed using an agile approach.
b. Custom product development in an organization, where there is a commitment from the customer to
get involved in the development process; with few external stakeholders and regulations affecting the
software.
Though Agile method has been successful in some software products, especially apps, it still won't be
suitable for complex systems and embedded systems. Also, for large, long-lifetime systems that are
developed by a software company for an external client, an agile approach would present a number of
problems, such as:
a. The informality of agile development is incompatible with the legal approach to contract definition
that is commonly used in large companies
4 4
b. Agile methods are most appropriate for new software development rather than for software
maintenance. However, the majority of software costs in large companies come from maintaining their
existing software systems
c. Agile methods are designed for small co-located teams, yet much software development now involves
worldwide distributed teams.
Discussion
Scenario
As a member of a software development team, your boss has asked that you lead the team that would engage
your client's team in an ongoing software project. On your first meeting, you discover that your client's team
is unwilling to release a detailed document containing the software requirement and specification; and would
rather prefer producing the specifications throughout the period of the software development. List two types
of software development models that could be used for this project. Give reasons for your choice.
4 4
d. Dynamic systems development method (DSDM)
5.0 Conclusion
In this unit, you have learnt about Agile development methods. You have also understood the difference
between traditional plan-based methods and Agile methods.
6.0 Summary
In agile methods, the processes of specification, design and implementation are interleaved. There is also no
detailed system specification. Similarly, design documentation is minimized or generated automatically by the
programming environment used for system implementation.
Arisholm, E., Gallis, H., Dyba, T. and Sjoberg, D. I. K. (2007). Evaluating Pair Programming with Respect to
System Complexity and Programmer Expertise. IEEE Trans. on Software Eng. 33 (2): 65–86.
doi:10.1109/TSE.2007.17.
Fowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D. (1999). Refactoring: Improving the Design of
Existing Code. Boston: Addison-Wesley.
Jeffries, R. and Melnik, G. (2007). TDD: The Art of Fearless Programming. IEEE Software 24: 24–30.
doi:10.1109/MS.2007.75.
Larman, C., and Basili, V. R. (2003). Iterative and Incremental Development: A Brief History. IEEE
Computer 36 (6): 47–56. doi:10.1109/MC.2003.1204375.
Leffingwell, D. (2011). Agile Software Requirements: Lean Requirements Practices for Teams,
Programs and the Enterprise. Boston: Addison-Wesley.
Williams, L., Kessler, R. R., Cunningham,W., and Jeffries, R. (2000). Strengthening the Case for Pair
Programming. IEEE Software 17 (4): 19–25. doi:10.1109/52.854064.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
4 4
Somerville, I. (2002). Software Engineering Methodology (5th Edition). McGraw-Hill
Online Resources
https://en.wikipedia.org/wiki/Agile_software_development
https://www.scrumalliance.org/resources/agile-manifesto
https://agilemanifesto.org/
4 4
Unit 4: Extreme Programming
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Overview of Extreme Programming
3.2 Extreme Programming Techniques
3.2.1 User Stories
3.2.2 Refactoring
3.2.3 Test-first Development
3.2.4 Pair Programming
3.3 Criticism of Extreme Programming
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit discusses extreme programming as an agile method. It also looks at the techniques of extreme
programming.
Extreme Programming (XP) created by Kent Beck is an agile software development methodology
which is intended to address the issue of responsiveness to changing customer requirements and also
4 4
improve software quality. It is built on the idea of frequent releases in short development cycles,
which is intended to improve productivity and introduce checkpoints at which new customer
requirements can be adopted.
Extreme Programming (XP), meant pushing recognized good practices such as iterative development
to the extreme. With XP, requirements are expressed as scenarios called user stories, and implemented
as a series of tasks.
Agile methods do not have a requirement engineering activity to take care of user and system
requirements. Instead, it integrates requirement elicitation with the development. This is done using
"User stories", which is a scenario of use that might be experienced by a system user. With the user
stories, a story card is developed with the team working to implement these new scenarios in future
releases of the software.
3.2.2 Refactoring
In traditional software engineering, teams typically design with anticipation of a change in the
software design. In XP, this often regarded as a waste of time. To take care of these changes, XP used
the idea of refactoring, where the team looks for improvements to the software and implements such
immediately.
As a result of lack of formal specification in XP, testing a developed software product becomes a
challenge. XP implements a new approach to program testing, where testing is automated and is
5 5
central to the development process; and development cannot proceed until all tests have been
successfully executed. The key features of testing in XP are:
a. test-first development
b. incremental test development from scenarios
c. user involvement in the test development and validation
d. the use of automated testing frameworks.
XP introduced the idea of pair programming, where programmers work in pairs to develop the
software. Each pair sits at the same computer to develop the software. Also pairs are created
dynamically, making them not to always work together. Some well established software companies
that have adopted Agile method do not use pair programming, as they doubt its efficiency in terms of
work output. However, many proponents of Agile method admit it can produce as much codes as the
pair would have produced if they were working individually.
Extreme programming has faced so much criticism, especially as it concerns pair programming.
However, many of the criticisms faced by extreme programming are believed by Agile practitioners to
be lack of understanding of the agile development method. Some of the criticisms include;
Discussion
One of the techniques of Agile method is pair programming, in your understanding, briefly discuss with your
team why you think large software companies would want to avoid pair programming.
Scenario
Briefly list and explain three projects that could be developed with agile methods.
a. Pair programming
5 5
b. User stories
c. Refactoring
d. Specification
a. User stories
b. Pair requirements
c. User elicitation
d. Specification
5.0 Conclusion
In this unit, you have learnt about the extreme programming development method.
6.0 Summary
Extreme programming is an agile methods. It may be suitable for the production of apps and software
produced by a company for sale to a client. It is highly unsuitable for complex and embedded systems.
Arisholm, E., Gallis, H., Dyba, T. and Sjoberg, D. I. K. (2007). Evaluating Pair Programming with Respect to
System Complexity and Programmer Expertise. IEEE Trans. on Software Eng. 33 (2): 65–86.
doi:10.1109/TSE.2007.17.
Fowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D. (1999). Refactoring: Improving the Design of
Existing Code. Boston: Addison-Wesley.
Jeffries, R. and Melnik, G. (2007). TDD: The Art of Fearless Programming. IEEE Software 24: 24–30.
doi:10.1109/MS.2007.75.
5 5
Larman, C., and Basili, V. R. (2003). Iterative and Incremental Development: A Brief History. IEEE
Computer 36 (6): 47–56. doi:10.1109/MC.2003.1204375.
Leffingwell, D. (2011). Agile Software Requirements: Lean Requirements Practices for Teams,
Programs and the Enterprise. Boston: Addison-Wesley.
Williams, L., Kessler, R. R., Cunningham,W., and Jeffries, R. (2000). Strengthening the Case for Pair
Programming. IEEE Software 17 (4): 19–25. doi:10.1109/52.854064.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
https://en.wikipedia.org/wiki/Agile_software_development
https://www.scrumalliance.org/resources/agile-manifesto
http://moodle.autolab.uni-pannon.hu/Mecha_tananyag/szoftverfejlesztesi_folyamatok_angol/ch04.html
5 5
Unit 5: The Dynamic System Development Method (DSDM)
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Overview of Dynamic Systems Development Method (DSDM)
3.2 The Phases of the DSDM Lifecycle
3.3 The Principles of the DSDM
3.4 The Techniques of DSDM
3.5 Roles in DSDM
1.0 Introduction
This unit discusses the Dynamic System Development Method (DSDM) as an agile method.
5 5
The Dynamic Systems Development Method (DSDM) is an agile development method developed in a
bid to bring discipline in rapid application development. It was first created and released in 1994 and
focuses on the full project lifecycle. Later versions of the DSDM Agile Project Framework has been
revised and used as a generic approach to project management and solution; and has been used in non-
Information Technology fields as well.
Feasibility Study
Business Study
Functional Model Iteration
Design and Build Iteration
Implementation
5 5
2. Deliver on time
3. Collaborate
4. Never compromise quality
5. Build incrementally from firm foundations
6. Develop iteratively
7. Communicate continuously and clearly
8. Demonstrate control
1. Prototyping: This involves the creation of prototypes of the system at an early stage of the project;
making it possible to discover the shortcomings in the system early-on and allow future users to ‘test-
drive’ the system.
2. Timeboxing: This is an approach for completing the project incrementally by breaking it down into
project portions, each having a fixed budget and delivery date.
3. Testing: This helps to ensure a good quality solution. DSDM advocates that, testing should be done
throughout each iteration.
4. Workshop: This brings the project stakeholders together to discuss requirements, functionalities
and mutual understanding.
5. Modeling: Modeling helps one to visualise a business domain in order to have an better
understanding of the system. It involves a diagrammatic representation of specific aspects of the
system or business area that is being developed.
6. Configuration management: Since the system development involves multiple deliverables under
development at the same time which are delivered incrementally at the end of each time-box, the
deliverables must be well managed throughout this process, until completion.
1. Executive Sponsor: The executive sponsor is a very important person who commits funds and
resources to the project. This role has an ultimate power to make decisions.
5 5
2. Visionary: This person initialises the project by ensuring that essential requirements are found early
on. They have the most accurate perception of the business objectives of the system and the project
and ensures the project is on the right track.
3. Project Manager: This is the main manager of the whole software development process.
4. Facilitator: Manages the workshops' progress, and motivates team members.
5. Technical Co-ordinator: This individual designs the software system architecture. They also control
the technical quality of the project.
6. Ambassador User: This person brings the knowledge of the user community into the project, and
ensures that the developers receive adequate user feedback during the software development process.
7. Advisor User: This is a user that represents an important viewpoint; and usually brings daily
knowledge of the project.
8. .Team Leader: The leader of the team, who ensures that the team works effectively.
9. Solution Developer Interpret the system requirements and model it; including developing the
deliverable codes.
10. Solution Tester: This individual tests the technical correctness of the system by performing some
specified testing.
11. Scribe: Records the requirements, decisions and agreements made in every workshop.
Discussion
Scenario
In a Software project in which DSDM is being used. The team ran out of project cash, as they exhausted their
original budget. Whose role is it to approve a new budget and make cash available for the project to continue?
a. Prototyping
b. Timeboxing
c. Requirements engineering
d. Testing
5 5
2.0 In Dynamic System Development Method (DSDM) , which roles has the ultimate power to commit funds
to the projects_____________?
a. Executive sponsor
b. Project manager
c. Visionary
d. Solution developer
5.0 Conclusion
In this unit, you have learnt about Dynamic System Development Method (DSDM).
6.0 Summary
Dynamic System Development Method (DSDM) is an agile methods. It seeks to bring discipline into rapid
application development as it focuses on the full project lifecycle.
Arisholm, E., Gallis, H., Dyba, T. and Sjoberg, D. I. K. (2007). Evaluating Pair Programming with Respect to
System Complexity and Programmer Expertise. IEEE Trans. on Software Eng. 33 (2): 65–86.
doi:10.1109/TSE.2007.17.
Delima, R., Santoso, H. B., and Wibowo, A. (2018). Development of Purchasing Module for Agriculture E-
Commerce using Dynamic System Development Model. International Journal of Advanced Computer
Science and Applications. 9(10)
Fahad, M., Qadri, S., Ullah, S., Husnain, M., Qaiser, R., Qureshi, S. A., Ahmed, W., and Muhammad, S. S.
(2017). A Comparative Analysis of DXPRUM and DSDM. International Journal of Computer Science and
Network Security. 17(5)
Jeffries, R. and Melnik, G. (2007). TDD: The Art of Fearless Programming. IEEE Software 24: 24–30.
doi:10.1109/MS.2007.75.
Larman, C., and Basili, V. R. (2003). Iterative and Incremental Development: A Brief History. IEEE
Computer 36 (6): 47–56. doi:10.1109/MC.2003.1204375.
5 5
Leffingwell, D. (2011). Agile Software Requirements: Lean Requirements Practices for Teams,
Programs and the Enterprise. Boston: Addison-Wesley.
Mekni, M., Buddhavarapu, G., Chinthapatla, S., and Gangula, M. (2018). Software Architectural Design in
Agile Environments. Journal of Computer and Communications. 6, pp 171-189
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
https://en.wikipedia.org/wiki/Agile_software_development
https://www.agilebusiness.org/page/whatisdsdm
http://moodle.autolab.uni-pannon.hu/Mecha_tananyag/szoftverfejlesztesi_folyamatok_angol/ch04.html
https://www.geeksforgeeks.org/dynamic-systems-development-method-dsdm/
5 5
Module 3: Requirements Engineering Processes
Module Introduction
This module introduced the basic principles of requirements engineering and requirements engineering
processes.
Unit 1: Requirements
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Requirements and Requirements Engineering
3.2 Types of Requirements
3.3 Requirements Completeness and Consistency
3.4 Requirement Engineering
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit we would consider requirements engineering as well as requirements. In addition, we would
consider requirements imprecision, completeness and consistency.
6 6
describe a requirement
explain requirements imprecision
list the types of requirements.
Requirements are the descriptions of the services that will be provided by a system and the constraints
on its operation. They are basically a representation of the needs of customers in a particular software
product. A requirement may range from a high-level abstract statement of a service or a system
constraint to a detailed mathematical functional specification. This is inevitable as requirements may
serve a dual function. They may be the basis for a bid for a contract, and therefore must be open to
Interpretation. It may also be the basis for the contract itself, and therefore should be defined in detail.
In the context of software engineering, requirements would have different types or levels.
1. User Requirements
This simply means high-level abstract requirements. Usually, this is provided in a natural language
with diagrams of the services the system is expected to provide to system users and the constraints
under which it must operate. Also, the user requirements may range from general statements of the
system features to detailed, precise descriptions of the system functionality.
2. System Requirements
This is a more structured and detailed descriptions of the software system’s functions, services, and
operational constraints. The system requirements document will define exactly what is to be
implemented. It may be part of the contract between the client and the software developer.
3. Functional Requirements
Contains statements of services the system should provide how the system should react to particular
inputs and how the system should behave in particular situations. Functional requirements
may also explicitly state what the system should not do.
4. Non-Functional Requirements
These are the constraints on the services or functions offered by the system such as timing constraints,
constraints on the development process, standards, etc. Non-functional requirements
often apply to the system as a whole rather than individual system features or services.
5. Domain Requirements
These are requirements that come from the application domain of the
6 6
system and that reflect characteristics of that domain.
Figures 3.1 and 3.2 give an example of user requirements and system requirements for a Human
Resource Management system.
Figure 3.1: an example of user requirement for a Human Resource Management system
Figure 3.2: an example of system requirement for a Human Resource Management system
6 6
Generally, in practice, it is impossible to produce a wholly complete and consistent
requirements document.
Requirements engineering refers to the process of establishing the services that the customer requires
from a system and the constraints under which it operates and is developed. In traditional software
development methodology, Requirements engineering is usually presented as the first stage of the
software engineering process.
Discussion
In a new software engineering project, your client has informed you that their overall user requirement is a
system that is able record the volume of sales each day. With provided user requirement, develop four likely
system requirements, the system could have.
Scenario
Between user requirements and system requirements, which is more detailed and which of them uses more
natural language?
1. What is a descriptions of the services that will be provided by a system and the constraints on its operation?
a. Requirements engineering
b. Requirements
c. Reverse engineering
d. Requirements specification
a. Functional
b. Non-functional
c. Operational
d. System
5.0 Conclusion
In this unit you have learned about requirements engineering. You have also learned about requirements
imprecision. Finally, you have been able to learn about types of requirements.
6 6
6.0 Summary
Before a system can be developed, a form of requirements have to be provided by the clients or software
users. Requirements are very important in the development of a system, as they will guide the software
developers in their task.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
6 6
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
6 6
Unit 2: Functional and Non-functional Requirements
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Functional Requirements
3.2 Levels of Functional Requirements
3.2.1 Functional User Requirements
3.2.2 Functional System Requirements
3.3 Non-Functional Requirements
3.4 Non-Functional Requirements Classifications
3.5 Problems With Non-Functional Requirements
1.0 Introduction
This unit discusses functional and non-functional requirements.
Functional requirements describe the functionality; which is system services, how the system should
react to particular inputs, and how it should behave in particular situations. They depend on the type of
software, expected users and the type of system where the software would be used.
6 6
1. Every system user (staff or student) will be identified
with a unique User Identification Number comprising of
two-digit User Type ID and ten-digit User Number.
This is usually a high-level statement of what the system should do, normally written in natural
language. It should be very clear for managers and system users to understand them.
Functional system requirements describe the system services in detail by expanding the user
requirements. They should describe the system functions, their inputs and outputs, and exceptions in
detail.
Functional system requirements vary from general requirements that cover what the system should do
to very specific requirements that reflects local ways of working or an organization’s existing systems.
They are written for system developers and may not always make sense to system users.
Non-functional requirements are requirements that are not directly concerned with the specific
services delivered by the system to the system users. They usually specify or constrain characteristics
of the system as a whole. These characteristics may include reliability, response time and storage
requirements. Also, constraints on system implementation will include I/O device capability, system
representations, etc.
6 6
Process requirements may also be specified mandating a particular CASE system, programming
language or development method. Non-functional requirements may be more critical than functional
requirements; and if they are not met, the system will be unusable.
1. Product Requirements
Requirements which specify that the delivered product must behave in a particular way e.g. execution
speed, reliability, etc.
2. Organisational Requirements
Requirements which are a consequence of organisational policies and procedures e.g. process
standards used, implementation requirements, etc.
3. External Requirements
Requirements which arise from factors which are external to the system and its development process
e.g. interoperability requirements, legislative requirements, etc.
6 6
Figure 3.4: Classifications and types of non-functional requirements for a Learning
Management system
Usually, stakeholders may propose requirements as general goals; such as ability of the system to
recover from failure or ease of use. This causes problems for the system developers as it may result in
disputes of whether the needs of the users were met after system delivery. This is usually as a result of
the difficulty customers often face in stating measurable goals, as there may not be standard or simple
metric that can be used to measure such goals. At other times, even when there exists a standard metric
for such measurement, the customer may still not be able to relate their goals to these metrics. It is
usually important that the software developers decide and agree with the customers before time on a
standard metric that could be used in measuring such non-functional requirements.
Table 3.1 shows typical scenarios where managers and users give the software developers
immeasurable non-functional requirements and possible metrics that could be used to measure such.
Discussion
List out three typical immeasurable non-functional requirements you could face in a software development
project.
Scenario
6 6
You have recently been selected by your manager to lead a team of software developers to document the
requirements of a new online market software projects.
Briefly list and discuss two possible functional system requirement that may emanate from the system.
1. What type of functional requirement is expressed in high-level statement using natural language?
2. Which type of requirements are not directly concerned with the specific services delivered by the system to
the system users.
a. Non-functional
b. Functional
c. System
d. Operational
5.0 Conclusion
In this unit you have learned about functional requirements, non-functional requirements, and the classes and
types of functional requirement types.
6.0 Summary
Functional requirements set out services the system should provide, while Non-functional requirements
constrain the system being developed or the development process.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
7 7
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
7 7
Unit 3: Domain Requirements
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Domain Requirements
3.2 Problems of Domain Requirements
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit describes domain requirements. It also discusses the problems of domain requirements.
7 7
Figure 3.5: Domain requirements for the library system domain
Because domain requirements are functions of the application domain of a system which may be peculiar to
such domain; software engineers may not always understand these peculiarities. This may result in software
engineers not knowing whether or not a domain requirement has been missed out or conflicts with other
requirements of the system.
1. Understandability
a. Requirements are expressed in the language of the application
domain
b. It is often not understood by software engineers developing
the system.
2. Implicitness
a. Domain specialists understand the area so well and do not always make the domain requirements
explicit.
Discussion
Scenario
Why is it sometimes difficult for software engineers to capture all domain requirements?
1. What type of requirement comes from the application domain of the system, and describes system
characteristics and features that reflect the domain.
a. domain requirement
b. system requirement
c. functional requirement
7 7
d. non-functional requirement
5.0 Conclusion
In this unit you have learned domain requirements. You have also been able to learn about domain
requirement problems.
6.0 Summary
Domain requirements are important; and if not captured explicitly the system may be unusable.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
7 7
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
7 7
Unit 4: Requirements Design and Writing
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Guidelines for Writing Requirements
3.2 System Requirements
3.3 Requirements and Design
3.4 The Requirements Document
3.5 Users of a Requirement Document
3.6 User Requirements
3.7 IEEE Requirements Standards
1.0 Introduction
This unit describes requirements. It states the guidelines for writing requirements. You will learn about
requirements document and the IEEE requirements standards.
7 7
v. Avoid ambiguity.
vi. Use simple and direct sentences.
Vii. Avoid mixing requirements and design.
System requirements are more detailed specifications of system functions, services and constraints
than user requirements. They are intended to be a basis for designing the system. They may be
incorporated into the system contract.
A system architecture may be designed to structure the requirements. The system may inter-operate
with other systems that generate design requirements. The use of a specific design may be a domain
requirement.
A requirements document would be used by different types of persons such as Managers, Software
Developers and System Users for different purposes. Table 3.2 shows the users of a requirements
document and what they would likely use the requirement document for.
Managers Use the requirements document to plan a bid for the system and
to plan the system development process
7 7
System Use the requirements to understand the system to be developed
engineers
System test Use the requirements to develop and implement validation tests
engineers for the developed system
i. Should describe functional and non-functional requirements in such a way that they are
understandable by system users who don’t have detailed technical knowledge.
ii. User requirements are defined using natural language, tables and diagrams as these can be
understood by all users.
In 1998, IEEE published a standard for the organisation of requirements documents. This standard is
generic and can be adapted to specific uses. A sample standard is as follows;
Introduction.
General description
Specific requirements
Appendices
Index.
Discussion
Scenario
As the leader of a team to develop a new proposed system for a client, you received a note of requirements
presented by the users of the system.
Can this requirement be enough to embark on technical design of the system?
Give reasons for your answer.
7 7
4.0 Self-Assessment Exercise(s)
2. Which type of requirements are concerned with the specific services delivered by the system to the system
users.
a. Non-functional
b. Functional
c. System
d. Operational
5.0 Conclusion
This unit has exposed us to the guidelines and standards for writing requirements . It has also given us an idea
of what different types of stakeholders in a software development project would use the requirement
document for.
6.0 Summary
Requirements set out what the system should do and define constraints on its operation and implementation.
User requirements are high-level statements of what the system should do. User requirements should be
written using natural language, tables and diagrams. System requirements are intended to communicate the
functions that the system should provide.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
7 7
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
8 8
Unit 5: Requirement Elicitation and Analysis Contents
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Requirements Engineering Processes
3.2 Requirements Elicitation and Analysis
3.3 Requirements Elicitation and Analysis Process
3.4 Challenges of Requirements Elicitation
1.0 Introduction
In this unit we will learn a few basic concepts of requirements engineering processes.
There are a number of generic activities common to all processes. These activities are actually interleaved and
iterative. They include the following:
8 8
a. Requirements elicitation and analysis
b. Requirements specification
d. Requirements validation
figure 3.6 shows the requirement engineering process flow. Similarly, figure 3.7 shows the interleaved nature
of the requirements engineering process with a spiral. Attention is paid to business requirements early in the
spiral with system requirements coming later in the process.
8 8
Figure 3.7: The spiral view of the requirements engineering process
This is a way of trying to understand the job roles of the stakeholders in an organisation and how a new
system could support their work. Software engineers work with stakeholders to find out more about the
application domain, services and system properties, work activities of stakeholders, required performance of
the system and the hardware constraints of the system.
During requirements elicitation, software engineers work with stakeholders to find out about the application
domain, work activities, the services and system features that stakeholders want, the required performance of
the system, hardware constraints, and etc.
a. Requirements discovery and understanding: this is also called requirements gathering. It involves
interacting with stakeholders (clients and system users) to know their expectations from the software.
b. Requirements classification and organization: this involves organising the unstructured collected
requirements into groups of related.
c. Requirements prioritization and negotiation: this involves prioritizing requirements by finding and
resolving requirements conflicts through negotiations. This activity is made possible because many
stakeholders are involved in a system. This often leads to conflicts in requirements.
d. Requirements documentation: requirements are documented and input into the next phase of the
requirement engineering process.
8 8
3.4 Challenges of Requirements Elicitation
a. Generally, stakeholders don’t often know what they want from a system; and most times, they may
find it difficult to articulating what they want.
b. Stakeholders often express requirements in their language, making it difficult for requirements
engineers without experience in the customer's domain to understand the requirements.
c. Different stakeholders, with diverse requirements, may express their requirements in different ways.
Requirements engineers have to discover all potential sources of requirements and discover
commonalities and conflict.
d. Because requirements are always changing, the importance of particular requirements may change.
New requirements may emerge from stakeholders who were not originally consulted.
Discussion
Scenario
As the leader of a team of requirements engineers for a new software project, you recently observed there
were many disagreeing stakeholders, who have produced several conflicting requirements. Explain how you
would resolve this challenge.
e. Requirements validation
f. Requirements discovery and understanding
g. Requirements documentation
h. Requirements discovery and understanding
8 8
5.0 Conclusion
In this unit, you have learned about requirements engineering processes. You have also been able to
understand requirements elicitation and analysis, together with the processes involved in requirements
elicitation.
6.0 Summary
Requirements engineering processes are usually an iterative process and mostly interleaved.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
8 8
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
https://www.tutorialspoint.com/software_engineering/software_engineering_tutorial.pdf
Module Introduction
This module discussed the topic of requirements engineering and requirements engineering processes further.
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Requirements Elicitation Techniques
3.2 Observation
3.3 Effectiveness of Observation
8 8
3.4 Shortcomings of Observation
1.0 Introduction
In this unit, we will discuss requirements elicitation techniques. We will also discuss observation as a
requirement elicitation technique.
Requirements elicitation involves meeting with different stakeholders to discover information about
the proposed system. You may also need to consult different documents to get information about the
existing system and its usage. This could supplement the information from the stakeholders. To
achieve this, you will need to spend time in order to understand how people work, including how they
use the existing system and how they would accommodate the new system.
1. Observation: where the requirements engineer watch people doing their job to see what they do,
what they use, and how they use them etc.
2. Interviewing: where the requirements engineer talks to people, to know what they do.
3.2 Observation
8 8
Observation is a technique that can be used to understand operational processes and help derive
software requirements that support these processes. In observation, analysts or requirements engineers
immerse themselves in the work environment where the system will be used, thereby observing the
day-to-day work and actual tasks which participants get involved in. This helps them discover implicit
system requirements that reflect the actual ways people work, rather than the formal processes defined
by the organization. Observation is an important tool because people always find it difficult
articulating what they do.
1. Requirements derived from the way in which people work, rather than the way in which business
process definitions say they should work. This is because in practice, people do not follow formal
processes. They follow processes that help them compete their tasks easily.
Does not support innovation: though, observation is helpful, especially when trying to understand
existing systems, it does not support innovation.
Not effective for discovering broader organizational or domain requirements: this is because of
its focus on end users. Consequently, observation should be used as one of a number of techniques for
requirements elicitation.
Discussion
Why is it necessary to meet with various stakeholders during requirement elicitation process?
Scenario
After interviewing various stakeholders, you realise the information gathered from the stakeholders does not
give detail of how the stakeholders actually use the existing system. What other approach would you likely
use to acquire more information about how the end users use the system?
8 8
1. the basic ways of gathering information during requirements elicitation is observation and _____________
a. analysis
b. interviewing
c. specification
d. documentation
2. Which of these activity is highly helpful in understanding how the end users actually do their work, rather
than how the system model says they should do the work?
a. interviewing
b. observation
c. system analysis
d. specification
5.0 Conclusion
In this unit, you have learned about requirements elicitation techniques. You have also understood the concept
of observation and when it should be used.
6.0 Summary
The two basic approaches of gathering information from stakeholders are observation and interviewing.
Observation is very helpful in understanding how the end users actually complete their work, rather than how
they should complete it.
Cheng, B. H. C., and Atlee, J. M. (2007). Research Directions in Requirements Engineering. Proc. Conf. on
Future of Software Engineering, IEEE Computer http://dx.doi.org/10.1109/FOSE.2007.17.
Robertson, S., and Robertson, J. (2013). Mastering the Requirements Process (3rd ed) Addison-Wesley
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
8 8
9 9
Unit 2: Requirements Elicitation - Interviewing
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Interviewing
3.2 Types of Interview
3.3 Interviews in Practice
3.4 Effective Interviewers
1.0 Introduction
What you will learn in this unit concerns interviewing. You will also learn the types of interview and the
attributes of an effective interviewer.
3.1 Interviewing
Interviewing is one the tools requirements elicitation. In formal or informal interviewing, the
requirements engineering team puts questions to stakeholders about the system that they use and the
system to be developed. This is done to get information about the current system and the system to be
developed.
9 9
3.2 Types of Interview
There are basically two types of interview:
Some domain knowledge is so familiar that people find it hard to articulate or sometimes think that it
isn’t worth articulating.
i. Interviewers should be open-minded, willing to listen to stakeholders and should not have pre-
conceived ideas about the requirements.
ii. They should prompt the interviewee with a question or a proposal and should not simply expect
them to respond to a question such as ‘what do you want’.
Discussion
Scenario
Which type of requirements would be better acquired by observation, rather than interviewing?
1. the basic ways of gathering information during requirements elicitation is interviewing and
______________
a. analysis
b. observation
9 9
c. specification
d. documentation
a. open
b. long
c. timed
d. specification
5.0 Conclusion
In this unit you have learned about interviewing. You have also been able to identify the types of interview
and the attributes of an effective interviewer.
6.0 Summary
Interviewing is a requirements elicitation tool. It basically has two types, namely closed and open interviews.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
9 9
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
9 9
Unit 3: Requirements Analysis - Viewpoints
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Viewpoints
3.2 Types of Viewpoints
3.3 Viewpoint Identification
3.4 LIBSYS Viewpoint Hierarchy
1.0 Introduction
In this unit, you will learn about viewpoints, together with viewpoints identification and types.
3.1 Viewpoints
Viewpoints are used in the simplifying and the analysing of requirements. They are a way of
structuring the requirements to represent the perspectives of different stakeholders. Stakeholders are
classified into different viewpoints.
i. Interactor Viewpoints
9 9
People or other systems that interact directly with the system. In an ATM, the customer and the
account database are interactor viewpoints.
Discussion
9 9
Scenario
Identify and discuss possible viewpoints for a health management system deployed in a general hospital?
a. Domain
b. application
c. direct
d. analysis
5.0 Conclusion
In this unit you have learned about viewpoints, types of viewpoints and viewpoints identification.
6.0 Summary
Viewpoints are great tools for analysing and structuring requirements to represent the perspectives of different
stakeholders.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
9 9
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
9 9
Unit 4: Requirements Specification
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Requirements Specification
3.2 Features of a Specification Document
3.3 Ways of Writing System Specification
3.4 Software Requirements Specification
1.0 Introduction
This unit discusses specification as a requirements engineering process activity. We also look at the various
ways of writing specifications.
Specification is the second process activity in traditional requirements engineering process. it is the
process of writing the user and system requirements in a requirements document.
9 9
System specification should describe the external behavior of the system only, and its constraints.
The user and system requirements written should be clear, consistent, and complete. This is to avoid
conflicts, as stakeholders rarely understand and interpret requirements in a similar way.
Requirements document should not contain details of the system architecture or design. It should also
not be concerned with how the system should be designed or implemented.
It is most beneficial, not to use software jargon and structured notations when writing specifications.
Natural language, tables, forms, and intuitive diagrams should be used when writing specification.
Table 4.1 shows the various ways of writing system specifications and their descriptions.
1 1
cannot confirm whether it represents what they want.
The software requirements specification also called the software requirements document is a document
created after the specification activity of the requirements engineering process. It is an official
document containing what the system developers should implement. Guidelines for developing the
software requirements document had already been discussed in unit 4 of module two.
Discussion
Why is it important not to use software jargons during the requirements specification activity of the
requirements engineering process?
Scenario
As the leader of a requirements engineering team for a new software project, would you use natural language
or structured natural language to develop your team's software requirements specification document?
a. Graphical notations
b. Structured natural language
c. Natural language
d. Mathematical specifications
1 1
5.0 Conclusion
In this unit you have learned about specification, and the ways of writing software specifications.
6.0 Summary
Requirements specification follows requirements elicitation and analysis. It is normally done to produce a
statement of what the system developers should implement.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
1 1
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Requirements Validation
3.2 Requirements Check
3.3 Requirements Validation Techniques
3.4 Requirements Change and Reviews
3.5 Requirements Management Planning
3.6 Requirements Change Management
1.0 Introduction
This unit is focused on requirements validation, validation techniques and requirements management.
1 1
3.0 Main Content
3.1 Requirements Validation
Requirements validation is concerned with demonstrating that the requirements define the system that
the customer really wants.
Requirements error costs are high, so validation is very important. Fixing a requirements error after
delivery may cost up to 100 times the cost of fixing an implementation error.
During a requirements validation process, various checks should be carried out on the requirements
contained in the requirements document. These checks include the following;
The following are requirements validation techniques. These techniques can either be combined or
used individually.
i. Requirements reviews: this involves a systematic analysis of the requirements by a review team, in
order to identify errors and inconsistencies.
ii. Prototyping: This involves using an executable model of the system to check requirements.
Customers and end-users make use of the model to see if it meets their expectations.
iii. Test-case generation: Developing tests for requirements to check testability. If the requirements
are testable, then the system is implementable. Otherwise, it may be difficult to implement the system.
1 1
Requirements change continually due to changing stakeholders' understanding of the problem and
other errors like omissions in the original requirements document. This means regular reviews should
be held while the requirements definition is being formulated.
Usually, changes on system and system requirements arise due to the following;
2. The people who initiate and pay for a system are rarely the end-users of the system. Consequently,
the initiators' requirements may conflict with end user requirements. New features may have to be
added to support the end-user goals.
3. Large systems usually have varying stakeholder groups, with varying requirements which often
conflict. The final requirements must be a compromise of these various requirements. This results in
changing stakeholder requirements.
Requirements management planning is the process of managing changing requirements during the
requirements engineering process and system development. To effectively plan your requirement
management, such issues as the following need to be considered;
2. A change management process: there should be a defined set of activities that assess the impact
and cost of changes.
1 1
3. Traceability policies: Recorded policies that define the relationships between each requirements
and between the requirements and the system design. This policy also defines how records should be
maintained.
4. Tool support: Tools that should be used for the requirements management. These tools may include
special requirements management systems and spreadsheet. This is necessary because requirements
management involves the processing of large amount of data.
Every proposed system and requirements change after the approval of the requirements document
must go through requirements change management. This is important to make sure the requirements
change is worth carrying out. The benefit of this is that all changes to the requirements documents are
made in a controlled way.
1. Problem analysis and change specification: after identifying a requirements problem, the change
proposal is analyzed and checked for validity. This analysis is communicated to the change initiator
who may now give a detailed requirements proposal or withdraw the request.
2. Change analysis and costing: Here, the effect of the proposed change is assessed using traceability
information and general knowledge of the system requirements. The cost of this proposed change is
also estimated. if this is worthwhile, the requirements change is proceeded with, else it is dropped.
3. Change implementation: Here, the requirements document is updated with the change, so that it
can contain the new requirements.
Discussion
Why is it important to apply requirements change management on every proposed requirements or system
change?
Scenario
1 1
While developing requirements for a new software project, you noticed with your team and stakeholders that a
certain requirement may need to be changed. On applying requirements change management proceeses, you
realised that the cost of implementing this change far outweighs the benefit of this change. What will be your
decision and recommendation on the proposed requirements change?
a. Requirements reviews
b. Prototyping
c. Automatic review
d. Test-case generation
2. _____________ is the process of managing changing requirements during the requirements engineering
process and system development.
a. Requirements engineering
b. Requirements change
c. Requirements management planning
d. Requirement engineering process
5.0 Conclusion
In this unit you have learnt about the requirements validation, requirements change, and requirement
management.
6.0 Summary
Requirements validation is the last stage of the requirements engineering processes. It involves checking that
the produced requirements document is valid.
1 1
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Module 5: Software Engineering
Module Introduction
This module introduces you to the topic of system modeling and design.
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 System Modeling
3.2 Relevance of System Modelling
3.3 Model Types
3.4 Context Models
3.5 Process Models
3.6 Behavioural Models
3.7 Data Processing Models
3.8 Application of Data Flow Diagrams
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit, the student will gain knowledge of the relevance of system modeling. The unit describes the
context, process, behavioural and data processing models.
1 1
2.0 Intended Learning Outcomes (ILOs)
By the end of this unit, you will be able to:
Describe system modeling
state the relevance of system modeling
list types of models
explain the context, process, behavioural and data processing models.
System modeling is basically the process of developing abstract models of a system; where each
model presents a perspective of the system. Usually, some kind of graphical notations like the Unified
Modeling Language (UML) are used. Other ways of modeling a system include the use of formal
models (mathematical expressions), in this case formal methods.
Social and organisational concerns may affect the decision on where to position system boundaries.
Architectural models show the system and its relationship with other systems.
1 1
3.5 Process Models
Process models show the overall process and the processes that are supported by the system.
Data flow models may be used to show the processes and the flow of information from one process to
another.
a. Data processing models that show how data is processed as it moves through the
system;
b. State machine models that show the system’s response to events.
Data flow diagrams are an intrinsic part of many analysis methods. DFDs have simple and intuitive
notation that customers can understand. They show end-to-end processing of data.
1 1
DFDs model the system from a functional perspective.
Tracking and documenting how the data associated with a process is helpful to develop an overall
understanding of the system.
Data flow diagrams may also be used in showing the data exchange between a system and other
systems in its environment.
Discussion
Why are system models important in trying to demonstrate a proposed system to the customers and users?
Scenario
List and describe some of the diagram types in the Unified Modeling Language (UML).
b. Architectural model
c. Implementation model
d. Composition model
5.0 Conclusion
In this unit, we have given a basic understanding of system modeling, relevance of system modeling and the
types of models
1 1
6.0 Summary
A model is an abstract system view. Complementary types of model provide different system information.
Context models show the position of a system in its environment with other systems and processes. Data flow
models may be used to model the data processing in a system.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
1 1
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Unit 2: Formal Methods
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Formal Methods
3.2 Formal Specification
3.3 Formal Specification Languages
3.4 Advantages of Formal Specification
3.5 Acceptance of Formal Methods
3.6 Use of Formal Methods
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit discusses formal methods. It also covers acceptance and use of formal methods.
Formal methods are mathematical approaches to software development where a formal model of the
software is defined. The model is then analysed formally to search for errors and inconsistencies.
Formal methods start with a mathematical system model; which acts as a system specification. In
creating this model, the user requirements which are expressed in natural language, tables, and
diagrams are translated into mathematical expressions with defined semantics.
1 1
Figure 5.2: Software design using formal methods
Formal specification;
Specification analysis and proof;
Transformational development;
Program verification.
1 1
understanding of the system requirements.
2. easy analysis to discover inconsistencies and incompleteness of specification, since the specification
is expressed in a language with formally defined semantics
3. Program testing costs can be reduced since it has been verified against its specification.
Discussion
Why has formal methods not gained the desired acceptability in software engineering?
Scenario
List and describe three benefits of formal methods for an account management software.
a. Formal specification;
b. Specification analysis and proof;
c. agile development;
d. Program verification.
1 1
a. reduced the number faults
b. supports faster system implementation
c. suitable for large software projects
d. reduced software delivery time
5.0 Conclusion
In this unit you have learned about formal methods and their use.
6.0 Summary
Though formal methods were proposed to dominate software engineering practice; they have not really
enjoyed acceptability as forecasted.
Abrial, J. R. (2009). Faultless Systems: Yes We Can. IEEE Computer 42 (9) pp 30–36
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
1 1
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Unit 3: Introduction to Architectural Design and Models
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Architectural Design
3.2 Software Architecture
3.3 Architectural Models
3.4 Domain-Specific Model
3.5 Architectural Design Decisions
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit describes the notion of architectural design. You will learn about software architecture and the
common architectural models. Also, we will cover architectural design decisions.
Architectural design is the process of designing a system organization that satisfies the functional and
non-functional requirements of a software system. It involves identifying the sub-systems and major
1 1
system components making up the software system and the framework for sub-system control and
communication.
Architectural design is an early stage of the software system design process. It represents the link
between specification and design processes; and is often carried out in parallel with some specification
activities.
The software architecture is the fundamental framework for structuring the system. It is the output of
the architectural design process
1 1
Figure 5.3: Sample architecture for a card fraud detection system
1. Generic models: Abstractions from a number of real systems that encapsulate the principal
characteristics of these systems.
2. Generic models: Top-down or bottom-up models that are more abstract idealised. They provide a
means of information about the class of the system and of comparing different architectures.
1 1
Architectural design is a creative process so the process differs depending on the type of system being
developed. Architectural design decisions include decisions on the application architecture, the
distribution and the architectural styles to be used.
Discussion
Scenario
1. _______________is the process of designing a system organization that satisfies the functional and non-
functional requirements of the system.?
b. Architectural model
c. Architectural design
d. Composition model
2. _______________is the fundamental framework for structuring a system; and also, the output of the
architectural design process.
1 1
a. Architectural design
b. software architecture
c. hardware architecture
d. structural architecture
5.0 Conclusion
In this unit you have learned about architectural design. You have also learned about architectural models and
design decisions.
6.0 Summary
Architectural design is important for one to understand the different components and modules that make up a
software system and how data flow across the different components and modules.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
1 1
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Nwogu, E. R., Nwachukwu, E. O., Ejiofor, V. E. (2019). An Improved Hybrid System for The Prediction of
Debit and Credit Card Fraud. Computing, Information Systems & Development Informatics Journal 10(3)
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Unit 4: Sub-Systems and Modules
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 What is a Sub-System?
3.2 What is a Module?
3.3 Modular Decomposition
3.4 Modular Decomposition Models
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit will focus on sub-systems and modules. You will also learn about modular decomposition.
1 1
3.3 Modular Decomposition
Modular decomposition refers to the process whereby sub-systems are decomposed into modules.
A pipeline or data-flow model where the system is decomposed into functional modules which
transform inputs to outputs.
Discussion
List and describe the two modular decomposition models covered in this unit.
1 1
Scenario
1. _______________ is a system component that provides services to other components but would not
normally be considered as a separate system.
a. A module
b. A system
c. An architecture
d. A model
2. _______________ refers to the process whereby sub-systems are decomposed into modules.
a. modular decomposition
b. modular architecture
c. modular disintegration
d. structural decomposition
5.0 Conclusion
Specifically, you learned about sub – systems and modules. You also learned about modular decomposition.
6.0 Summary
What you have learned in this unit concerns sub-systems and modules.
1 1
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
1 1
Unit 5: Software Design
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Design
3.2 Stages of Design
3.3 Design Phases
3.4 Top-Down Design Technique
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit introduces you to software design. It explains the design stages and phases and describes the top-
down design technique.
1 1
A. Problem understanding
Look at the problem from different angles to discover the design requirements.
In principle, top-down design involves starting at the uppermost components in the hierarchy and
working down the hierarchy level by level.
In practice, large systems design is never truly top-down. Some branches are designed before others.
Designers reuse experience (and sometimes components) during the design process.
Discussion
Scenario
1 1
As the leader of a team of software engineers working on a new software project, would you consider top-
down or bottom-up design?
1. which design approach involves starting at the uppermost components in the hierarchy and working down
the hierarchy level by level?
a. functional design
b. Architectural design
c. top-down design
d. bottom-up design
a. Object-Oriented
b. interaction-based
c. functional
d. architectural
5.0 Conclusion
In this unit you have learned about software design. You have also gained insight of design phases as well as
top-down design technique.
6.0 Summary
What you have learned in this unit concerns software design and design strategies.
1 1
7.0 Further Readings
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
1 1
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
Module 6: Software Engineering
Module Introduction
This module discussed the topics of software testing, software evolution and software maintenance.
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Verification and Validation
3.2 Verification and Validation Process
3.3 Software Inspections
3.4 Testing and Debugging
3.5 Testing Stages
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
In this unit the student will be equipped with the knowledge of verification and validation and its principal
objectives. The unit describes testing and debugging as well.
1 1
2.0 Intended Learning Outcomes (ILOs)
Software inspections do not require execution of a system so may be used before implementation.
They may be applied to any representation of the system (requirements, design, test data, etc.). It is a
very effective technique for discovering errors.
1 1
Defect testing and debugging are distinct processes. Defect testing is concerned with confirming the
presence of errors, while debugging is concerned with locating and repairing these errors.
Debugging involves formulating hypotheses about program behaviour then testing these hypotheses to
find the system error.
Discussion
Scenario
After confirming that a software system was built according to the stated functional and non-functional
requirements, the users of the system still claimed the software does not serve their expectations. Has this
software failed verification or validation test?
1. ______________ checks whether the final software product meets the stated functional and non-functional
requirements?
a. Software Inspection
b. software examination
c. verification
d. Software analysis
a. testing
b. debugging
1 1
c. inspection
d. validation
5.0 Conclusion
Verification and validation were considered in this unit. You have also
learned about testing and debugging.
6.0 Summary
Verification and validation are important processes in software engineering. They ensure that the software
product meets the stated specifications.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
1 1
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
1 1
Unit 2: Software Inspection
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Inspection
3.2 Inspection and Testing
3.3 Inspection Pre-conditions
3.4 Inspection Procedure
3.5 Inspection Checklists
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit considers software inspections. It delves into the inspection pre-conditions and inspection checklists.
Software inspection involves people examining the source representation with the aim of discovering
anomalies and defects. It does not require execution of a system; and so, may be
used before implementation.
Inspection may be applied to requirements, design, test data and etc. It is a very effective technique for
discovering errors.
1 1
Inspection and testing are complementary. Both should be used during the verification and validation
process.
Inspections will check conformance with a specification and not conformance with the customer’s real
requirements. It cannot check non-functional characteristics such as performance, usability etc.
Discussion
Scenario
1 1
d. Software inspection requires low-level execution of a system
2. ______________ involve people examining the source representation with the aim of discovering
anomalies and defects?
a. Software Inspection
b. Software analysis
c. Software review
d. software examination
5.0 Conclusion
In this unit you have learned about software inspection. You have also been able to identify inspection pre-
conditions and checklists.
6.0 Summary
What you have learned borders on software inspection.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
1 1
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
1 1
Unit 3: Software Reliability
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Dependability
3.2 Fault Minimisation
3.3 Fault-Free Software Development
3.4 Reliable Software Processes
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit covers software dependability and fault minimisation.
1 1
of producing fault-free software is very high. It is only cost-effective in exceptional situations.
Discussion
Scenario
Why would a fault free software still not be correct?
a. fault-free software
b. good software
1 1
c. highly specified
d. valid software
5.0 Conclusion
In this unit you have learned about software dependability. You have also learned about fault minimisation
and fault-free software development.
6.0 Summary
What you have learned in this unit borders on software reliability and fault-free software development.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
1 1
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
1 1
Unit 4: Software Re-use
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Re-use
3.2 Benefits of Re-use
3.3 Software Development with Re-use
3.4 Requirements for Re-use
3.5 Software Development for Re-use
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit considers the concept of software re-use. You will equally learn about the benefits and the
requirements for re-use.
1 1
3.2 Benefits of Re-use
i. Increased reliability: components exercised in working systems
ii. Reduced process risk: less uncertainty in development costs
iii. Effective use of specialists: re-use components instead of people
iv. Standards compliance: embed standards in reusable components
v. Accelerated development: avoid original development and hence speed-up production
ii. Component re-users must be able to understand components and must have confidence that they
will meet their needs.
iii. The components must have associated documentation discussing how they can be re-used and the
potential costs of re-use.
Discussion
Scenario
Why is software re-use gaining popularity in the software engineering field?
a. Increased reliability
b. Accelerated development
1 1
c. Saves the developers the need for documentation
d. Reduced process risk
5.0 Conclusion
In this unit you have learned about software re-use. You have also learned about the benefits of re-use and the
requirements for re-use.
6.0 Summary
What you have learned in this unit borders on software re-use, its benefits and requirements for re-use.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
1 1
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
1 1
Unit 5: Software Evolution and Maintenance
Contents
1.0 Introduction
2.0 Intended Learning Outcome (ILOs)
3.0 Main Content
3.1 Software Evolution
3.2 Software Evolution Activities
3.3 Software Maintenance
3.4 Types of Software Maintenance
4.0 Self-Assessment Exercise
5.0 Conclusion
6.0 Summary 7.0
Further Readings
1.0 Introduction
This unit discussed the concept of software evolution and maintenance.
Large software products, especially products developed for large business use usually have a long
lifetime of many years. Software must evolve in order to remain useful. Business changes and user
requirements changes lead to new system requirements. Also changing technology and technological
requirements lead to new system requirements as well. Software must be able to accommodate such
changes during its lifetime. There must be new releases of the software to take care of the new user
and business requirements.
1 1
The activities involved in software evolution include:
Discussion
Scenario
Why does it cost more to maintain a software than it costs to develop it?
1 1
2. which of these is the first step in software evolution process?
a. system implementation
b. release planning
c. change analysis
5.0 Conclusion
In this unit you have learned about software evolution and maintenance. You have also learned about the
types of software maintenance
6.0 Summary
Software evolution and maintenance are important parts of the software lifecycle. It involves making sure a
software system continues to deliver the desired expectations to the system users and customers.
Brooks, F. P., (1995). The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition).
Addison-Wesley Inc.: Reading, MA.
Broy, M., Deimel, A., Henn, J., Koskimies, K., Plášil,F., Pomberger,G., Pree,W., Stal,M. and Szyperski, C.,
(1998). What Characterizes a (Software) component? Software – Concepts & Tools, vol. 19, pp. 49-56.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad,P. and Stal, M., (1996). Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley & Sons, Inc.: New York.
Calvert, K. L. and Donahoo, M. J., (2002). TCP/IP Sockets in Java: Practical Guide for Programmers.
Morgan Kaufmann Publishers: San Francisco, CA.
Caromel, D. and Vayssière, J., (July 2003). “A Security Framework for Reflective Java Applications,”
Software – Practice & Experience. John Wiley & Sons, Inc., vol. 33, no. 9, 821-846.
1 1
Chellappa, R., Phillips, P. J. and Reynolds, D., (Editors), (November 2006). Special Issue on Biometrics:
Algorithms and Applications of Fingerprint, Iris, Face, Gait, and Multimodal Recognition. Proceedings of the
IEEE, vol. 94, no. 11.
Chen, G., and Szymanski, B. K., (December 2001). “Object-oriented Paradigm: Component-oriented
Simulation Architecture: Toward Interoperability and Interchangeability,”. Proceedings of the 2001 Winter
Simulation Conference (WSC 2001), pp. 495-501, Arlington, VA.
Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Hayes,F.,
and Jeremaes, P., (1994). Object-Oriented Development: The Fusion Method, Prentice-Hall, Inc., Englewood
Cliffs, NJ.
Constantine, L. L. and Lockwood, L. A, (1999). Software for Use: A Practical Guide to the Models and
Methods of Usage-Centered Design, Addison-Wesley Professional/ACM Press: Reading, MA.
Grogono, P. (1999). Software Engineering (2nd Edition). New Jersey: Prentice Hall.
Sher, A. K., and Nazir, A. Z. (2007). Promotion of Local to Global Operation in Train Control System.
Journal of Digital Information Management
Somerville, I. (2016). Software Engineering, (10th Edition). Pearson Education Limited, Edinburgh Gate
Harlow Essex CM20 2JE England
Kozlov, D., Koskinen, J. Sakkinen, M. and Markkula, J. (2008). Assessing Maintainability Change over
Multiple Software Releases. Journal of Software Maintenance and Evolution 20 (1) pp 31–58.
Online Resources
http://www.cs.nmsu.edu/~jeffery/courses/371/lecture.html
http://mail.svce.ac.in/~uvarajan/cn.html
http://www.freetechbooks.com/software-engineering-methodology-thewatersluice-
t573.html#754.
1 1
1 1
1 1