Sei sulla pagina 1di 27

SOFTWARE CONSTRUCTION

LECTURE 1

Software Construction

Books(ReferenceMaterial)

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and


Design and Iterative Development
Author(s) Craig Larman
Publisher: Prentice Hall; 3 edition

Code Complete - A Practical Handbook of Software Construction (2nd


Edition) [Steve McConnell] (2004)

Object-Oriented Software Construction, by Bertrand Meyer, Second Edition,


Published by, Prentice Hall in 1997

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

Recent trend: Agile Software Development


Customer needs evolve with time
Satisfying customers at delivery time (rather than at
project initiation) is more important than conforming to
initial customer requirements

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

[IE04] IEEE Computer Society, Guide to the Software


Engineering Body of Knowledge (SWEBOK), IEEE Computer
Society Press, Los Alamitos, CA 20001, June 2004
link :

Software Construction

14

A.ConstructionPlanning

What is Construction Planning?


Laying out the work plan (i.e. schedule) to design,
implement, debug, and unit test the software
Construction planning major concerns:
Coders are typically not planners
Schedules will be difficult to maintain unless a good
architecture design is in place
Many organizations do not collect project data on which
to plan future projects
Many managers consider planning to be a waste of time
and therefore dont encourage it
Project plans may be limited to the construction plans
Many organizations and projects do not use systematic
cost estimating methods such as models

Software Construction

15

A.ConstructionPlanning2

Improving Software Economics


Consider reducing development costs by planning to:
Reduce the size and/or complexity
Improve the development process
Use more highly skilled people and build better teams
Use better tools
Some actions include
Use an object-oriented approach
Use COTS components
Use an iterative approach
Provide training to development team
Automate tedious tasks with tools

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

Problem Definition Prerequisite


The problem being solved via the application must be well
defined
Common names for the document containing the problem
statement:
Product Vision
Vision Statement
Product Definition
Defines the problem without reference to potential solutions
Helps avoid solving the wrong problem!

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

Regarding Upstream Prerequisites


Time budgeted for requirements and architecture work
10 to 20 percent of manpower
20 to 30 percent of schedule
If requirements are unstable
Do not ignore, spend time to fix
The analyst should fix if a formal project
Can be fixed by the programmer for informal projects
Use same heuristics for problems with the architecture

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

Choose a Programming Language


Programming language choices affect
Productivity
Code quality
Programmers more productive using a familiar language
High-level languages provided higher quality and better
productivity
Some languages better at expressing programming concepts
than others
The ways in which a programmers express themselves are
affected by the chosen language

Software Construction

23

A.ConstructionPlanning10

Choose Construction Practices


Questions to answer regarding practices:
How detailed will the design be?
What are the coding conventions for names, comments,
layout, etc.?
How will the architecture be enforced?
Is the projects use of technology ahead of or behind the
power curve, and is this appropriate given the
circumstances?
What is the integration procedure, how often is it done,
and who participates?
Will developers program individually, in pairs, or some
combination of this?
Where and when will builds occur?

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

Construct the Team


For small development efforts
Self managed
Everyone is a peer
For mid-size development efforts
Role
Single team
Lead
For large development efforts
Detailed designer
Multiple teams
Coder

# / Team*
1
1 to 4
5 to 10

Integrator

1 to 2

Unit tester

Same as coder

System tester

Buildmeister

Configuration manager

* Individuals will play multiple roles

Table 1: Team Composition


Software Construction

26

A.References

[IE04] IEEE Computer Society, Guide to the Software


Engineering Body of Knowledge (SWEBOK), IEEE Computer
Society Press, Los Alamitos, CA 20001, June 2004
[RS04] IBM Rational Software, The Rational Unified
Process v2003.06.13, 2004
[RT03]
[SM04] S. McConnell, Code Complete: A Practical
Handbook of Software Construction, Second Edition,
Microsoft Press, 2004.
[WR01] Walker Royce, Software Project Management, A
Unified Framework, Addison-Wesley, Boston, MA, 2001

Software Construction

27

Potrebbero piacerti anche