Luca Dan Șerbănați at the baccalaureate, 1961
Luca Dan Șerbănați in the early 1970s
Luca Dan Șerbănați giving his last fifth-year lecture, April 1989

Luca Dan Șerbănați

Emeritus Professor at Politehnica University of Bucharest

Research, teaching, industry and memoirs

RO | EN | IT
Luca Dan Șerbănați in Venice, 1990
Luca Dan Șerbănați in New York, 2005
Luca Dan Șerbănați

Key facts

  • Institution: POLITEHNICA University of Bucharest
  • Faculty: FILS – Faculty of Engineering in Foreign Languages
  • Programme: Master’s programme in Software Engineering
  • Semester: first semester
  • Language of instruction: English
  • Official title: Software Methodologies
  • Course coordinator: Luca Dan Șerbănați
  • Applications coordinator: Luca Dan Șerbănați
  • Structure: 3 lecture hours + 2 application hours per week
  • Credits: 6
  • Prerequisites: Programming Languages, Object-Oriented Programming, Software Development Methods

The place of the course in my teaching activity

This course belongs to a later stage of my teaching activity, when my interest was no longer directed only toward particular techniques of analysis, design, or programming, but toward the comparative understanding of the major families of software methodologies. It presupposes a student already trained in programming and basic software engineering and attempts to answer a more general question: how should we organize and choose a development method suited to a particular type of software system?

In this sense, the course has a synthetic character. It connects the software process with models, notations, quality criteria, requirements, architectures, and design disciplines, shifting the emphasis from the simple use of a technique to an understanding of the methodological space as a whole.

Objective of the course

The underlying idea of the course is that practical software development requires methods capable of linking the problem to be solved with the software system that must be built. The course presents software methodologies as coherent sets of processes, models, rules, intermediate products, and tools that guide the software engineer from requirements definition to design and implementation.

It pursues two complementary objectives. On the one hand, it offers a broad view of the main development methodologies and paradigms; on the other, it gives students criteria for comparing different approaches, including from the perspectives of complexity, traceability, quality, and reuse.

Guiding ideas of the course

The course material begins with an introduction to software engineering: the nature of software, the software crisis, project complexity, the software process, and the role of methods and tools in disciplining development. An important part is devoted to the software process, viewed as a set of activities, practices, transformations, and associated products, as well as to process maturity, including through the CMMI model.

The course emphasizes that a development methodology has two complementary components: a standard process and a standard notation. The comparisons among structured methodologies, Information Engineering, and object-oriented methodologies are organized around this idea, together with the discussion of iterative process models and component-based development.

Course structure

1. Software engineering and the software process

The first part introduces the fundamental notions of software engineering: the definition of software, types of software applications, project complexity, the software crisis, the software process, development disciplines, product assurance, project management, and process maturity. It also presents the main process models: waterfall, prototyping, RAD, incremental, spiral, WINWIN spiral, concurrent development, iterative development, and component-based development.

2. Systems Engineering Methodologies

The second part broadens the perspective from software to systems. It discusses the notion of system, the principles of systems engineering, the relationship between system and environment, systems modelling, system partitioning, and the connection between requirements and architecture. Concepts such as system hierarchy, black-box / white-box view, information model versus physical model, architecture flow context diagram, and system-partitioning templates appear here.

3. Structured Methodologies for Software Development

A substantial part is devoted to structured methodologies. The course discusses the structured life cycle, its phases, analysis and design activities, and the classical modelling tools: decomposition diagrams, data-flow diagrams, entity-relationship diagrams, data dictionary, state-transition diagrams, process specifications, PDL, HIPO, IPO, and structure charts. This section also has historical and conceptual value because it shows how software development was disciplined within a function-centred paradigm.

4. Software Requirements Analysis

The course then treats software requirements analysis as a bridge between systems engineering and software design. It discusses logical models, the operational principles of analysis, structured analysis tools, the relationship between system requirements and software requirements, the structure of a Software Requirements Specification, and the way the conceptual model of the software is constructed.

5. Software Design

This is followed by the software design section proper, where the emphasis falls on the transition from the analysis model to the design model. The components of design are discussed: data design, architectural design, interface design, and component-level design, together with the quality criteria of a good design: modularity, separation of concerns, traceability, and the adequacy of the resulting structures.

6. Object-oriented methodologies: Unified Process and UML

The final part moves toward object-oriented methodology. It presents the fundamental concepts of object orientation, messages among objects, and then the Unified Process as an extensible, use-case-driven, architecture-centric, risk-focused, iterative, and incremental process. The course concludes with UML, viewed as a graphical notation for visualizing, specifying, constructing, and documenting the artefacts of a software system.

Significance of the course

Viewed retrospectively, this course expresses very well one of the constant convictions of my teaching activity: serious software cannot be built without method, but neither can it be built without a critical attitude toward method. There is no single solution, and the value of university education lies precisely in teaching students to understand the differences among paradigms, their assumptions, advantages, and limitations.

For this reason, Software Methodologies is not merely a course about techniques, nor merely a history of methods. Rather, it is a course about methodological judgement in software engineering and about the relationship among requirements, modelling, process, architecture, and implementation.

Resources