IT and software development, Study notes of Software Development Methodologies

This document will arm students with the basic, ideal, and technically strategic knowledge needed for every IT personnel to acquire precisely for the development processes and cycles of any software. This course was put together by great professors and lecturers who have earned accolades in this field. This was done in 2024/2025 academic sessions and still in use till date.

Typology: Study notes

2024/2025

Available from 06/08/2026

bb-joseph
bb-joseph 🇳🇬

1 document

1 / 214

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CourseTitle:Information Technology and Software Development
NationalOpenUniversityofNigeria,Vic
t
oriaIsland, Lagos Page1
NATIONAL OPEN UNIVERSITY OF NIGERIA
SCHOOL OF SCIENCE AND
TECHNOLOGY
COURSE CODE: CIT
703
COURSE TITLE: InformationTechnologyandSoftware
De
v
e
l
o
p
me
n
t
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download IT and software development and more Study notes Software Development Methodologies in PDF only on Docsity!

NATIONAL OPEN UNIVERSITY OF NIGERIA

SCHOOL OF SCIENCE AND TECHNOLOGY

COURSE CODE: CIT 703

COURSE TITLE: Information Technology and Software Devel o p men t

Course Code

Course Title Information Technology and Software Development

Course Developer/Writer Eze, Festus Chux Department of Computer Science Ebonyi State Uni vers ity A b akali ki Course Editor Programme Leader

Course Coordinator

Below are the comprehensive objectives of the course as a whole. By meeting these

objectives, you should have achieved the aims of aims of the course as whole. In addition to

the aims above, this course sets to achieve some objectives. Thus after going through the

course, you should be able to:

Explain the concept of software development life cycle Identify the different software development models Identify the software development processes Explain how to handle software project planning Explain the software development modelling languages Explain the concept and application of Data Flow Diagrams Explain the process of software validation, verification and testing Explain the issues of state transitions and state chart Explain the process of requirement engineering, datamodel and dbms

Working through this Cou rse

To complete this course you are required to read each study unit, read the textbooks and

read other materials which may be provided by the National Open University of Nigeria.

Each unit contains self‐assessment exercises and at certain points in the course you will be

required to submit assignments for assessment purposes. At the end of the course there is

final examination. Below you will find listed all the components of the course, what you

have to do and how you should allocate your time to each unit in order to complete the

course on time and successfully.

This course demands that you spend a lot of time to study. My advice is that you optimise

the opportunity provided by the tutorial sessions where you have the opportunity of

comparing your knowledge with that of your colleagues.

The Course M ate r ia ls

The man components of the course are:

  1. The Course Guide
  2. Study Units
  3. References/Further Readings
  4. Assignments
  5. Presentation Schedule

Study U n it

The study units in this course are as follows:

Module 1

Unit 1 Software Development Life Cycle

Unit 2 Software Engineering Process Models

Unit 3 Software Development Processes

Module 2

Unit 1 Universal Modelling Language (UML)

Unit 2 Data Modelling

Unit 3 Database Management System

Module 3

Unit 1 Entity Relationship

Unit 2 Data Flow Diagrams (DFDs)

Unit 3 Extreme Programming (XP)

Unit 4 Requirement Engineering

Module 4

Unit 1 State Charts, State Transition Networks and Finite State Machines

Unit 2 Software Project Planning

Unit 3 Software Validation, Verification and Testing

Note each unit consists of one or two weeks’ work and includes introduction, objectives,

reading materials, exercises, conclusions and summary, Tutor Marked Assignment (TMAs),

references and other resources. The unit directs you to work on these exercises related to

required reading. In general these exercises test you on the materials thereby assisting you

to evaluate your progress and to reinforce your comprehension of the material. Together

with the TMA these exercises will help you in achieving the stated learning objectives of the

individual units and of the course as a whole.

Presentation S ch edul e

Your course materials have important dates for early and timely completion and submission

of your TMAs and attending tutorials. You should remember that you are required to submit

Course Marking S ceme

Assignment Marks Assignments 1 ‐ 4 Four assignments,best three marks of the four count at 10% each – 30% of course marks End of course examination 70% of overall course marks Total 100% of course materials

Facilitators/Tutors and Tu t ori al s

There are 21 hours of tutorials provided in support of this course. You will be notified of the dates, times and venues of these tutorials as well as the name and phone numbers of the facilitator, as soon as you are allocated to a tutorial group.

Your facilitator will mark and comment on your assignments, keep a close watch on your progress and any difficulties you might face and provide assistance to you during the course. You are expected to mail TMA to your facilitator at least two working days before the schedule date. The TMA s will be marked by your tutor returned back to you as soon as possible.

Do not delay to contact your facilitator by telephone or email if you need assistance.

The following might lead to your needing your facilitator’s assistance:

You do not understand any part of the study or assigned reading You have difficulty with the self test You have a question or a problem with an assignment or with the grading of an assignment

Endeavour to attend tutorials. It affords you the opportunity of face to face contact with the facilitator and to ask questions which are answered instantly. You also raise problems encountered in the course of study.

Su mma r y Information Technology and Software Development is a course designed to equip you with what it takes to handle large software project. Further more you learn how to manage software systems in the house. Also you get to understand how you can design your software t o meet the clients needs avoid errors which are very expensive in software development. Furthermore by the time you are through with this course you can function effectively as a system analyst, software developer, software evaluator etc

I wish you the best and believe you will find the material very interesting.

Contents

A software user would of a necessity diligently follow five processes to procure a standard software. They are as follows:

i. Acquisition ii. Supply iii. Development iv. Operation v. Maintenance

Because the lifecycle processes cover a very large area a scope was defined. We will explain all the processes briefly but Acquisition and Development more extensively. Each phase within the lifecycle processes can be divided into different activities. This unit explains the different activities for each lifecycle process.

Activity A/ Self Assessment Exercise

1. Explain the implication of ISO 12207 in software development 2. Explain what you mean by software development life cycle 3. Describe the two approaches to software development life cycle

3.2 ACQUISITION

Acquisition covers the activities involved in initiating a project. The acquisition phase can be divided into different activities and deliverables that are completed chronologically.

Initiation: during this activity the following tasks are completed.

i. Define System requirements and obtain approval if applicable; ii. Define the general requirements of the software iii. Evaluate other options such as a purchase of an off-the-shelf product or enhancement of an existing product; iv. If an off-the-shelf product is purchased, the software requirements of this product need to be analyzed. v. Develop an acquisition plan, which can also be used during the acquisition phase vi. Define acceptance criteria. vii. Prepare Request for proposal: during this activity the following tasks are completed: a. Acquisition requirements, like System requirements and technical constraints such as target environment, are defined. b. Contract milestones for reviewing and supplier's progress audits are defined. viii. Prepare Contract: during this activity the following tasks are completed a. Selection procedure for suppliers are developed; b. Suppliers, based on the developed selection procedure, are selected; c. The tailor-made ISO/IEC 12207 standard must be included in the contract; ix. Negotiate changes: Negotiations are held with the selected suppliers; x. Update contract: Contract is updated with the result from the negotiations in the previous activity. xi. Supplier monitoring: during this activity the following tasks are completed a. Activities of the suppliers according to the agreements made are monitored; b. Work together with suppliers to guarantee timely delivery if needed. xii. Acceptance and completion: during this activity the following tasks are completed a. Acceptance tests and procedures are developed; b. Acceptance and testing on the product is conducted; c. Configuration management on the delivered product is conducted;

3.3 Supply

During the supply phase a project management plan is developed. This plan contains information about the project such as different milestones that need to be reached. This project management plan is needed during the next phase which is the development phase.

3.4 Development

During the development phase the software product is designed, created and tested and will result in a software product ready to be sold to the customer. Throughout time many people have developed means of developing a software application. The choice of developing method often depends on the present situation. The development method which is used in many projects is the V-model. Techniques that can be used during the development are UML for designing and TMap for testing. The following are the most important steps of the V- model.

i. Define software requirements: Gather the software requirements, or demands, for the product that is to be created. ii. Create High level design: In this phase, the software development process, the software's overall structure and its nuances are defined. In terms of the client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc. are all defined in this phase. A software development model is thus created. iii. Analysis and Design are very crucial in the whole development cycle. Any glitch in the design phase could be very expensive to solve in the later stage of the software development. Much care is taken during this phase. The logical system of the product is developed in this phase. A basic layout of the product is created. This means the setup of different modules and how they communicate with each other. This design does not contain very much detail about the modules. The different modules present in the High level design are designed separately. The modules are designed in as much detail as possible.

3.5 CODING

The code is created according to the high level design and the module design.

The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like compilers, interpreters, debuggers etc... are used to generate the code. Different high level programming languages like C, C++, Pascal, Java are used for coding. With respect to the type of application, the right programming language is chosen.

3.6 TESTING

Once the code is generated, the software program testing begins. Different testing methodologies are available to unravel the bugs that were committed during the previous phases. Different testing tools and methodologies are already available. Some companies build their own testing tools that are tailor made for their own development operations.

Activity B/self Assessment Exercise

  1. Describe the following concepts with regards to a software user intending to procure a software:

3.7 Software Development Activities

The activities of the software development process represented in the waterfall model. There are several other models to represent this process.

Software Development Activities from wikipaedia

3.7.1 Planning

The important task in creating a software product is extracting the requirements or requirements analysis. Customers typically have an abstract idea of what they want as an end result, but not what software should do. Incomplete, ambiguous, or even contradictory requirements are recognized by skilled and experienced software engineers at this point. Frequently demonstrating live code may help reduce the risk that the requirements are incorrect.

Once the general requirements are gleaned from the client, an analysis of the scope of the development should be determined and clearly stated. This is often called a scope document. Certain functionality may be out of scope of the project as a function of cost or as a result of unclear requirements at the start of development. If the development is done externally, this document can be considered a legal document so that if there are ever disputes, any ambiguity of what was promised to the client can be clarified.

3.7.2 Design

Domain Analysis is often the first step in attempting to design a new piece of software, whether it be an addition to an existing software, a new application, a new subsystem or a whole new system. Assuming that the developers (including the analysts) are not sufficiently knowledgeable in the subject area of the new software, the first task is to investigate the so- called "domain" of the software. The more knowledgeable they are about the domain already, the less work required. Another objective of this work is to make the analysts, who will later try to elicit and gather the requirements from the area experts, speak with them in the domain's own terminology, facilitating a better understanding of what is being said by these experts. If the analyst does not use the proper terminology it is likely that they will not be

taken seriously, thus this phase is an important prelude to extracting and gathering the requirements. If an analyst hasn't done the appropriate work confusion may ensue.

3.7.3 Specification

Specification is the task of precisely describing the software to be written, possibly in a rigorous way. In practice, most successful specifications are written to understand and fine- tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable. A good way to determine whether the specifications are sufficiently precise is to have a third party review the documents making sure that the requirements and Use Cases are logically sound.

3.7.4 Architecture

The architecture of a software system or software architecture refers to an abstract representation of that system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed. The architecture step also addresses interfaces between the software system and other software products, as well as the underlying hardware or the host operating system.

3.7.5 Implementation, testing and documenting

Implementation is the part of the process where software engineers actually program the code for the project.

Software testing is an integral and important part of the software development process. This part of the process ensures that bugs are recognized as early as possible.

Documenting the internal design of software for the purpose of future maintenance and enhancement is done throughout development. This may also include the authoring of an API, be it external or internal.

3.7.6 Deployment and maintenance

Deployment starts after the code is appropriately tested, is approved for release and sold or otherwise distributed into a production environment.

Software Training and Support is important because a large percentage of software projects fail because the developers fail to realize that it doesn't matter how much time and planning a development team puts into creating software if nobody in an organization ends up using it. People are often resistant to change and avoid venturing into an unfamiliar area, so as a part of the deployment phase, it is very important to have training classes for new clients of your software.

Contents

1.0 Introduction

Software systems come and go through a series of passages that account for their inception,

  • 1.0 Introduction
  • 2.0 Objective
  • 3.0 Software Development Lifecycle Processes
  • 3.1 Software User Company Wishing To Procure New Software.
  • Activity A/ Self Assessment Exercise
  • 3.2 Software Acquisition
  • 3.3 Software Supply
  • 3.4 Software Development
  • 3.5 Software Coding
  • 3.6 Software Testing
  • Activity B/ Self Assessment Exercise
  • 3.6.1 Execute Module test
  • 3.6.2 Execute Integration test
  • 3.6.3 Execute System test
  • 3.6.4 Software Maintenance
  • 3.7 Software Development Activities
  • 3.7.1 Planning
  • 3.7.2 Design
  • 3.7.3 Specification
  • 3.7.4 Architecture
  • 3.7.5 Implementation, testing and documenting
  • 3.7.6 Deployment and maintenance
  • Tutor Marked assignment
  • 4.0 Summary and Conclusion
  • 5.0 References and Further Readings
  • 1.0 Introduction
  • 2.0 Objectives
  • 3.0 History
  • 3.1 What is a software life cycle model?
  • 3.2 What is a software process model?
  • 3.3 Traditional Software Life Cycle Models
  • 3.4 Classic Software Life Cycle
  • Activity A/Self Assessment Exercise
  • 3.4.1 Stepwise Refinement
  • 3.4.2 Incremental Development and Release
  • 3.4.3 Industrial and Military Standards, and Capability Models
  • 3.5 Alternatives to the Traditional Software Life Cycle Models
  • 3.5.1 Software Product Development Models
  • 3.5.2 Rapid Prototyping and Joint Application Development
  • 3.5.3 Joint Application Development (JAD)
  • 3.5.4 Assembling Reusable Components
  • 3.5.5 Application Generation
  • 3.5.6 Software Documentation Support Environments
  • 3.5.7Rapid Iteration, Incremental Evolution, and Evolutionary Delivery
  • 3.6 Program Evolution Models
  • Activity B/Self Assessment Exercise
  • 3.7 Software Production Process Models
  • 3.7.1 Non-Operational Process Models
  • 3.7.1.1The Spiral Model.
  • 3.8 Operational Process Models
  • 3.8.1 Operational specifications for rapid prototyping.
  • 3.8.2 Software automation.
  • 3.8.3 Software process automation and programming.
  • 3.9 Emerging Trends and New Directions
  • Tutor Marked Assignment
  • 4.0 Summary and Conclusions
  • 5.0 References and Further

vi. Detailed Component Design Specification : defines the procedural methods through which the data resources within the modules of a component are transformed from required inputs into provided outputs.

vii. Component Implementation and Debugging : codifies the preceding specifications into operational source code implementations and validates their basic operation.

viii. Software Integration and Testing : affirms and sustains the overall integrity of the software system architectural configuration through verifying the consistency and completeness of implemented modules, verifying the resource interfaces and interconnections against their specifications, and validating the performance of the system and subsystems against their requirements.

ix. Documentation Revision and System Delivery : packaging and rationalizing recorded system development descriptions into systematic documents and user guides, all in a form suitable for dissemination and system support.

x. Deployment and Installation : providing directions for installing the delivered software into the local computing environment, configuring operating systems parameters and user access privileges, and running diagnostic test cases to assure the viability of basic system operation.

xi. Training and Us e: providing system users with instructional aids and guidance for understanding the system's capabilities and limits in order to effectively use the system.

xii. Software Maintenance : sustaining the useful operation of a system in its host/target environment by providing requested functional enhancements, repairs, performance improvements, and conversions.

3.1 What is a software life cycle model? A software life cycle model is either a descriptive or prescriptive characterization of how software is or should be developed. A descriptive model describes the history of how a particular software system was developed. Descriptive models may be used as the basis for understanding and improving software development processes, or for building empirically grounded prescriptive models. A prescriptive model prescribes how a new software system should be developed. Prescriptive models are used as guidelines or frameworks to organize and structure how software development activities should be performed, and in what order. Typically, it is easier and more common to articulate a prescriptive life cycle model for how software systems should be developed. This is possible since most such models are intuitive or well reasoned. This means that many idiosyncratic details that describe how a software system is built in practice can be ignored, generalized, or deferred for later consideration. This, of course, should raise concern for the relative validity and robustness of such life cycle models when developing different kinds of application systems, in different kinds of development settings, using different programming languages, with differentially skilled staff, etc. However, prescriptive models are also used to package the development tasks and

techniques for using a given set of software engineering tools or environment during a development project.

Descriptive life cycle models, on the other hand, characterize how particular software systems are actually developed in specific settings. As such, they are less common and more difficult to articulate for an obvious reason: one must observe or collect data throughout the life cycle of a software system, a period of elapsed time often measured in years. Also, descriptive models are specific to the systems observed and only generalizable through systematic comparative analysis. Therefore, this suggests the prescriptive software life cycle models will dominate attention until a sufficient base of observational data is available to articulate empirically grounded descriptive life cycle models. These two characterizations suggest that there are a variety of purposes for articulating software life cycle models. These characterizations serve as a

i. Guideline to organize, plan, staff, budget, schedule and manage software project work over organizational time, space, and computing environments. ii. Prescriptive outline for what documents to produce for delivery to client. iii. Basis for determining what software engineering tools and methodologies will be most appropriate to support different life cycle activities. iv. Framework for analyzing or estimating patterns of resource allocation and consumption during the software life cycle v. Basis for conducting empirical studies to determine what affects software productivity, cost, and overall quality.

3.2 What is a software process model? In contrast to software life cycle models, software process models often represent a networked sequence of activities, objects, transformations, and events that embody strategies for accomplishing software evolution. Such models can be used to develop more precise and formalized descriptions of software life cycle activities. Their power emerges from their utilization of a sufficiently rich notation, syntax, or semantics, often suitable for computational processing. Software process networks can be viewed as representing multiple interconnected task chains Task chains represent a non-linear sequence of actions that structure and transform available computational objects (resources) into intermediate or finished products. Non-linearity implies that the sequence of actions may be non-deterministic, iterative, accommodate multiple/parallel alternatives, as well as partially ordered to account for incremental progress. Task actions in turn can be viewed a non-linear sequences of primitive actions which denote atomic units of computing work, such as a user's selection of a command or menu entry using a mouse or keyboard. These units of cooperative work between people and computers are referred to as structured discourses of work, while task chains have become popularized under the name of workflow.