Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

SWEBOK

Stephen M. Reaves

::

2023-09-17

Notes about Software Engineering Book Of Knowledge, for CS-6310

Summary

SWEBOK PDF

General

Software design

Design is defined as both “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “the result of [that] process” [1].

Knowledge Area Tree

2 main activities

The output of these two activities are a set of models and artifacts that record the major decisions that have been taken, along with an explanation of the rationale for each

Software Design Principles

A principle is a comprehensive and fundamental law, doctrine, or assumption

Software Design Principles include:

Key Issues

Concurrency

Decomposing software into processes, tasks, and threads

Control and Handling of Events

How to handle reactive and temporal events through various mechanisms such as implicit invocation and call-backs.

Data Persistence

How to handle long-lived data

Distribution of Components

How to distribute the software across the hardware

Error and Exception Handling and Fault Tolerance

How to prevent, tolerate, and process errors and deal with exceptional conditions.

Interaction and Presentation

How to structure interactions with users and present information

This is NOT concerned with individual UI details, but is concerned with separating logic into MVC

Security

How to prevent unauthorized disclosure, creation, change, deletion, or denial of access to information and other resources.

Architecture

A software architecture is “the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both”

During the mid-1990s, however, software architecture started to emerge as a broader discipline that involved the study of software structures and architectures in a more generic way.

Views := a partial aspect of a software architecture that shows specific properties of a software system

Architecture Styles

An architectural style is “a specialization of element and relation types, together with a set of constraints on how they can be used”

Design Patterns

A pattern is “a common solution to a common problem in a given context”

Design Decisions

It is useful to think of the architectural design process from a decision-making perspective rather than from an activity perspective. Often, the impact on quality attributes and tradeoffs among competing quality attributes are the basis for design decisions.

Families of Programs and Frameworks

Reusing software components can group them into “families”

a Framework := a partially completed software system that can be extended by appropriately instantiating specific extensions (such as plug-ins).

User Interface Design

User interface design should ensure that interaction between the human and the machine provides for effective operation and control of the machine.

General UI Design Principles

UI Design Issues

User interface design should consider a compromise between the most appropriate styles of interaction and presentation for the software, the background and experience of the software users, and the available devices.

Design of User Interaction Modalities

User interaction can be divided into the following styles:

Design of Information Presentation

A good design keeps the information presentation separate from the information itself. Like MVC

Color Guidelines:

User Interface Design Process

Localization and Internationalization

Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without major engineering changes.

Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating the text.

Metaphors and Conceptual Models

User interface designers can use metaphors and conceptual models to set up mappings between the software and some reference system known to the users in the real world, which can help the users to more readily learn and use the interface. For example, the operation “delete file” can be made into a metaphor using the icon of a trash can.

Software Design Quality Analysis and Evaluation

Quality Attributes

Quality Analysis and Evaluation Techniques

Two types of measures:

Software Design Notations

Structural Descriptions

Static View

Behavioral Descriptions

Dynamic View

Software Design Strategies and Methods

General Strategies

Function-Oriented Design

Decomposition centers on identifying the major software functions and then elaborating and refining them in a hierarchical top-down manner

Uses DFDs

Object-Oriented Design

Prefer to think in terms of objects, rather than functions

Data Structure-Oriented Design

Data structure-centered design starts from the data structures a program manipulates rather than from the function it performs. The software engineer first describes the input and output data structures and then develops the program’s control structure based on these data structure diagrams

Similar to OO, but think of objects chronologically, rather than hierarchically

Component-Based Design

A software component is an independent unit, having well-defined interfaces and dependencies that can be composed and deployed independently. Component-based design addresses issues related to providing, developing, and integrating such components in order to improve reuse.

Again, similar to OO, but focus on reusability

Other

Software Design Tools

Tools can