Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LECTURE 1
Software Construction
Books(ReferenceMaterial)
Software Construction
Grading Criteria
20%
20%
20 %
40%
Mid Term
Quiz and Assignments
Lab + Project
Final Exam
Software Construction
SoftwareProcesses
A Software Process is
A set of activities (e.g. requirements, analysis, design,
coding, testing) combined and sequenced in a particular
fashion to produce software
Software Construction
4
4
SoftwareDevelopmentPhases
Requirements
Requirements
What
What needs
needs to
to be
be done
done
Testing
Check
Check that
that the
the code
code does
does what
what
itit isis supposed
supposed to
to (functionality,
(functionality,
performance,
performance, reliability,
reliability, )
)
Analysis
How
How itit should
should be
be done
done
Project Management
Devise
Devise aa plan,
plan, manage
manage
resources,
resources, costs,
costs, time,
time,
Design
Design
Coding
Coding
Create
Create aa software
software structure
structure
(architecture)
(architecture) around
around which
which
code
code will
will be
be built
built
Fill
Fill in
in the
the software
software
structure
structure with
with code
code
Software Construction
5
5
SoftwarePhasesRelatedtothis
Course
Design
Design
Coding
Coding
Create
Create aa software
software structure
structure
(architecture)
(architecture) around
around which
which
code
code will
will be
be built
built
Fill
Fill in
in the
the software
software
structure
structure with
with code
code
Software Construction
6
6
Introduction
Definition of Software Construction:
Detailed creation of working, meaningful software through a
combination of coding, verification, unit testing,
integration testing, and debugging
Software construction closely tied to
Software design
Software testing
Design
Construction
Testing
Software Construction
Introduction2
More on Construction
Significant detailed design occurs during construction
Low-level (e.g. unit and module integration) testing occurs
during construction
Construction produces high volume of configuration items
Thus construction linked to configuration management
Construction is tool intensive
Quality is very evident in the construction products
Construction highly related to Computer Science due to
Use of algorithms
Detailed coding practices
Software Construction
Introduction3
Software Construction Fundamentals
The fundamentals of software construction include:
Minimizing complexity
Anticipating change
Constructing for verification
Standards in construction
Software Construction
Introduction4
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
Accomplished through use of standards
Examples:
UML for modeling all aspects of complex systems
High-order programming languages such as C++ and
Java
Source code formatting rules to aid readability
Software Construction
10
Introduction5
Anticipating Change
Software changes over time
Anticipation / hope of change affect how software is
constructed
This can effect
Use of control structures
Handling of errors
Source code organization
Code documentation
Coding standards
Software Construction
11
Introduction6
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
Software Construction
12
Introduction7
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
Software Construction
13
References
Software Construction
14
A.ConstructionPlanning
Software Construction
15
A.ConstructionPlanning2
Software Construction
16
A.ConstructionPlanning3
Construction Prerequisites
As with building construction, much of the success or failure
of the project already determined before construction begins
Upstream activities such as project planning, requirements,
architecture, and design are crucial to success
Typical high-risk areas
Project planning
Requirements
Architecture
Preparation is a way to reduce these risks
Software Construction
17
A.ConstructionPlanning4
Software Construction
18
A.ConstructionPlanning5
Requirements Prerequisite
Requirements describe in detail what a system is supposed
to do, therefore are invaluable for construction
Explicit requirements:
Help ensure the user drives system functionality
Rather than the programmer
Reduce the number of construction debates
Help minimize changes after development begins
Specifying requirements adequately (sufficiently) is a key to
project success
Software Construction
19
A.ConstructionPlanning6
Architecture Prerequisite
Quality of the architecture determines the conceptual
integrity of the system
A proper architecture:
Gives structure to maintain conceptual integrity
Provides guidance to programmers
Partitions work
Architecture-level problems are much more costly to fix than
are coding errors
Good architecture can make construction easy
Bad architecture makes construction difficult
Software Construction
20
A.ConstructionPlanning7
Software Construction
21
A.ConstructionPlanning8
Choose an Approach
Many software development approaches have been tried
over the years
Some examples:
Functional
Object-Oriented
Iterative
Waterfall
Agile
The construction team must follow some approach
Chosen approach must be appropriate for the task at hand
Software Construction
22
A.ConstructionPlanning9
Software Construction
23
A.ConstructionPlanning10
Software Construction
24
A.ConstructionPlanning11
Choose Tools
Modern programming tools
Are essential to maintain programmer productivity
Reduce tedious and redundant tasks
Must be appropriate for the task at hand
Tools preparation checklist:
Are all product licenses current?
Are all products at current, supported revision level?
Have all programmers received proper training on the tools?
Does the project have a configuration management tool?
Does the project have a tool to track change requests?
Do project team members have sufficient workstations?
Does the project have sufficient test environments?
Does the project have sufficient build environments?
Software Construction
25
A.ConstructionPlanning12
# / Team*
1
1 to 4
5 to 10
Integrator
1 to 2
Unit tester
Same as coder
System tester
Buildmeister
Configuration manager
26
A.References
Software Construction
27