What is Software Engineering?


Overview

To frame our discussion, consider:

What perspectives of software development best capture the nature of the activity?

What are the characteristics of software that make it both vital and problematic?

What are the characteristics of software engineering as a discipline?


OUTLINE
History Lesson
Disciplinary Evolution
Software Development
Process and Product Views
For the Record
Concerns
Factors to Consider

References


History

(adapted from Shaw and Garlan)

Year

1960s1970s1980s1990s
StyleProgramming-any which-wayProgramming in-the-smallProgramming in-the-largeMegaprogramming
Characteristic
Problems
Small ProgramsAlgorithms and programmingInterfaces, management system structuresdistributed information systems
Data IssuesRepresenting structure and symbolic informationData Structures and TypesLong-lived data bases, symbolic as well as numericmultimedia databases
Control IssuesElementary Understanding of control flowsPrograms execute once and terminateProgram assemblies execute continuallyConcurrency and Distribution
Specification IssuesMnemonics, precise use of proseSimple input output specificationsSystems with Complex specificationsSafety critical
Systems
State SpaceState not well understood apart from controlSmall, simple state spaceLarge, structured state spaceenormous
Management FocusNoneIndividual EffortTeam efforts, system maintenancesoftware quality
process improvement
Tools, MethodsAssemblers, core dumpsProgramming Language, compilers, linker Environments integrated tools, documentsOO frameworks

Disciplinary Evolution

Disciplinary Evolution

Codification of Engineering Practice

Engineering Codification

Notice that we need to put in interaction between current practice and attempts to apply that practice to new problems. The observation that current practice fails in certain instances is part of what must drive the evolution of new and improved practice. A portion of the content under models and theories in this diagram is a theory of practice.

Software Development

Customer-Driven

Market-Driven

Process and Product Views

In thinking about the process of developing software, we must consider

Who is involved? What roles do individuals have?
How many individuals are involved?
What are the tasks?
How are tasks allocated to people?
What are the characteristics of those engaged in a given task?
Is the a match between the characteristics of the individual and the demands of the task?
How is the process managed, coordinated, controlled?
What are the work products produced during development?
How long do the various tasks take?
How do we know a task is complete?
Are there tasks that can be performed concurrently?
What communications support is required to facilitate people working together?

In thinking about the product resulting from the development activity, we must consider

What is the functionality provided?
What are the intended use(s) of the product in the customer's environment?
What expectations does the customer have for the product?
Is the product operating reasonably in the use environment?
What considerations are there for system reliability?
How will the product be maintained over time?
What performance characteristics do the various functions need?
How does the system interface with the users?
Are the resources involved with system use being used wisely?
How many defects are present in the product?
What quality attributes have been assigned to this product and how should they be quantified?

Best Practices

Counter-intuitive, effective practices are ignored in favor of the latest perceived "silver bullet." The Software Program Manager's Network (SPMN) encourages software organizations to move from a reliance upon silver bullets, fads, and checklist mentality to the use of proven practices. The focus must become support for bottom line productivity, product and process quality, timeliness and increased levels of user satisfaction. Process improvement efforts should address and these fundamentals. The SPMN is intent on helping software managers by putting useful/usable tools, concepts, strategies, and tactics to use of their projects by providing these individuals with the support needed to adopt said practices.

The Airlie Software Council, formed by the DOD and consisting of a rather prestigious group, produced list of nine "principal" best practices.

Formal Risk Management

Initially this item was discounted in judging its potential import. Perhaps some form of risk assessment can be presented by students. If students are introduced to planning (at least informal) then they may be able to characterize the situation in terms of "what resources must be in place and available to meet this schedule?" From a personal software process view an early introduction to the notion of risk may be in the form of "what happened to prevent your meeting the schedule you had developed?" See Boehm, B. (January 1991) Software Risk Management: Principles and Practices. IEEE Software. p. 32-41.

User Manual as Specification

This practice clearly indicates the problem of identifying the correct set of requirements. The strategy is to keep development from starting until you know what is needed. This fits well with the prototyping paradigm in that prototyping and user manuals can be used as a method for ascertaining the legitimacy of the requirements. Brown expresses this practice as "Agreement on Interfaces" claiming system interfaces must be defined before analysis and design. "The user interface should be fully identified and baselined before beginning development." and "Only the actual operational user can define and accurately verify the user interface's correctness."

Inspections, Reviews, and Walkthroughs

The literature clearly indicates the importance of these activities for defect detection (see defect detection). Artifacts produced during the project should be subjected to informal or formal reviews. There are a number of artifacts that seem susceptible to review. The Airlie council indicated detailed designs, code and test plans as good candidates. Further recommended was identifying small milestones (referred to as "inch pebbles"), and perhaps reviews frequently over these artifacts in an attempt to catch the little mistake before it becomes a huge error.

Experience over years, and attempts this last year to implement review activities in coursework, indicate the need for instructional support to develop student skills and strategies in this area. The literature on code reading indicates a large novice/expert differential which leads me to believe that there is a learning curve associated with the activity and the different strategic approaches by these groups is a result of skill acquisition on the part of the expert (see program comprehension). There are existing support materials that may provide some assistance in developing training activities (see Reviews and Inspections).

Metrics-Based Scheduling and Tracking

The key to project management is control of resources. To adequately control resources and apply those resources effectively, management needs to provide a plan which includes a schedule. To manage then there must metrics that ascertain the actual progress against the schedule. Providing this practice encourage the early identification of problems which can, hopefully, be remedied. Part of the success of this practice is the accumulation of a baseline of context specific data from which plans can be constructed.

Binary Quality Gates at the Inch-Pebble Level

Program-Wide Visibility of Project Progress Versus Plan

The project staff is an essential ingredient in a successful project. It is the project staff that is responsible for identifying problems and risks. This is the group that should be kept aware of project status. Furthermore, this practice recommends the use of "anonymous" communications to report problems.

Defect Tracking Against Quality Targets

There should be a formal mechanism that track defects. The defect trace should include complete information through defect removal. You need to know where defects are injected, when they are identified and removed, what technique catches which type of defect, and the average and maximum time to close a defect report. Such tracking should cover the development time as well as the product first year in the field.

Separate Specification of Hardware and Software Functionality from Yourdon

Configuration Management from Brown

People-Aware Management Accountability

"high correlation between organizations that invest in timely training and their developmental success, and a high percentage of software professionals do not keep up with technology advancement." The manager's job is staffing project with qualified personnel. This is a two-pronged issued: 1) keeping competent staff and 2) keep the staff competent. Part of issue one is morale while issue two speaks to training.

Concerns

  1. Programming-in-the-large where multi-person teams work for several years specifying and implementing a system.

  2. The systems of today are not programs, they are collections of programs possibly written in a variety of languages running on a variety of platforms.

  3. Software development requires the collaboration and communication of individuals that may be separated by time and space.

  4. The efficiency with which the software is produced is as important as the efficiency of the product itself.

  5. Solving the right problem!

The 4 Ps of Software Development

People
Problem
Process
Product

Go To Lecture [Outline] [Overview]

Go To [311 Course Outline] [CIS Department Page]


References

Brooks, F. (April 1987) No Silver Bullet. IEEE Computer. p.10-19

S. Pfleeger (1987) Software Engineering. New York: Macmillan.

Schach (1996) Classical and Object-Oriented Software Engineering.