12
Software Construction Fundamentals MNP1163/MANP1163 (Software Construction)

MNP1163/MANP1163 (Software Construction). Minimizing complexity Anticipating change Constructing for verification Reuse Standards in software

Embed Size (px)

Citation preview

Page 1: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Software Construction Fundamentals

MNP1163/MANP1163 (Software Construction)

Page 2: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Software Construction Fundamentals

Minimizing complexity Anticipating change Constructing for verification Reuse Standards in software construction

Page 3: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Introduction

The term software construction refers to the detailed creation of working software through a combination of coding, verification, unit testing, integration testing, and debugging

Page 4: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Introduction

Software construction closely tied to Software design Software testing

Design

Construction

Testing

Page 5: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Introduction

Software construction typically produces the highest number of configuration items that need to be managed in a software project (source files, documentation, test cases, and so on).

Thus, the Software Construction is also closely linked to the Software Configuration Management.

Page 6: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Introduction

Construction is tool intensive Quality (or lack thereof) is very

evident in the construction products Construction highly related to

Computer Science due to Use of algorithms Detailed coding practices

Page 7: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Minimizing Complexity

Humans are severely limited in our ability to hold complex information in our working memories

As a result, minimizing complexity is one the of strongest drivers in software construction

Need to reduce complexity throughout the lifecycle

As functionality increases, so does complexity

Page 8: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Minimizing Complexity

Accomplished through use of standards Examples:

J2EE for complex, distributed Java applications

UML for modeling all aspects of complex systems

High-order programming languages such as C++ and Java

Source code formatting rules to aid readability

Page 9: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Anticipating Change

Software changes over time Anticipation of change affect how

software is constructed This can effect

Use of control structures Handling of errors Source code organization Code documentation Coding standards

Page 10: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Constructing for verification

Construct software that allows bugs to be easily found and fixed

Examples: Enforce coding standards ▪ Helps support code reviews

Unit testing Organizing code to support automated

testing Restricted use of complex or hard-to-

understand language structures

Page 11: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Reuse

Reuse refers to using existing assets in solving different problems.

In software construction, typical assets that are reused include libraries, modules, components, source code, and commercial off-the-shelf (COTS) assets.

Reuse is best practiced systematically, according to a well-defined, repeatable process.

Systematic reuse can enable significant software productivity, quality, and cost improvements.

Page 12: MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software

Standards in Construction

Standards which directly affect construction issues include: Programming languages

E.g. standards for languages like Java and C++ Communication methods

E.g. standards for document formats and contents Platforms

E.g. programmer interface standards for operating system calls, J2EE

Tools E.g. diagrammatic standards for notations like the

Unified Modeling Language