Software Development: Evolution, Types, and Processes

Software Development

Project

A project involves a set of interrelated activities with a defined beginning and end. It utilizes limited resources to achieve a desired goal. The two basic elements are activities and resources.

Activities

Activities are the tasks performed to achieve a preset order. Examples include collecting information, making diagnoses, designing procedures, writing program manuals, etc. A fundamental aspect of any project is the order of activities. Determining the logical sequence establishes the method, time, and cost of each operation.

Resources

Resources enable the execution of each task. These include human resources, hardware, databases, software, storage, energy, services, capital, personnel, information, money, and time. The primary purpose of developing a project is to produce a program schedule where limited resources are allocated optimally to each activity.

Software Evolution

First Era (Until the 1960s)

  • Batch data processing
  • Personalized customer software
  • Hardware-centric development
  • Minimal documentation
  • Designer and user were often the same person

Second Era (Until the Late 1970s)

  • Multi-use systems
  • Real-time systems
  • First-generation database management systems
  • Software distribution across multiple domains
  • Difficult software maintenance, leading to the first software crisis

Third Era (Late 1980s)

  • Distributed systems
  • Network expansion demanding software development improvements
  • Microprocessor exploitation
  • High-performance, low-cost hardware
  • Impact on consumers

Fourth Era (Until Today)

  • Hardware breakthroughs and application advancements
  • High-power desktop systems
  • Object-oriented technology
  • Expert systems and artificial neural networks
  • Parallel computation

Software Reuse

Initial software reuse involved libraries of routines. Object-oriented technologies (programming modules) enabled adding new functionality.

Software Application Categories

  • Information content
  • Information determination

Software Application Types

  • System software
  • Real-time software
  • Management software
  • Engineering and science software
  • Embedded software

System Software

System software interacts with hardware at a basic level, performing concurrent tasks, managing, and sharing resources. Examples: operating systems, drivers, communication routines, compilers.

Real-Time Software

Real-time software analyzes and controls real-world events, providing responses and making decisions in real time. Examples: security systems, data collectors, industrial process controllers.

Management Software

Management software manages databases with economic and business information to support decision-making. Examples: banking and payment systems.

Engineering and Science Software

This software manages and processes digital data used in engineering and scientific fields.

Embedded Software

Embedded software has limited features for specific tasks, built into various domestic and industrial devices. Examples: GPS devices, microwaves.

Classical Artificial Intelligence

Uses non-numerical algorithms to solve complex problems. Includes rule-based expert systems and pattern recognition systems.

Computational Intelligence

An alternative approach to computing algorithms, reflecting human decision-making in uncertain environments.

  • Neural networks
  • Fuzzy logic
  • Evolutionary computing
  • Machine learning
  • Probability computing

Artificial Neural Networks

Simulate the human brain’s structure and processes, learning from past experiences to make decisions.

Fuzzy Logic

Tolerates imprecision and partial truths, creating robust and low-cost solutions.

Essential Software Attributes

  • Maintainability: Adaptability to meet new needs.
  • Reliability: Prevents physical or economic damage from system failure.
  • Efficiency: Efficient resource utilization.
  • Usability: Ease of use with an appropriate user interface and documentation.

Software Process Models

A simplified description of the software development process from a particular perspective.

  • Workflow Model: Represents the sequence of activities, inputs, outputs, and dependencies.
  • Data Flow Model: Represents data transformations by activities, which may be human or computer-based.
  • Role/Action Model: Represents the roles of people involved and their responsibilities.

General Models of Software Process

Abstractions explaining different approaches to software development.

Waterfall Model

The first software development process model, derived from other engineering processes. Also known as the software life cycle, it’s called “cascade” due to the flow from one phase to another.