Oose_week 1- Software Construction

download Oose_week 1- Software Construction

of 27

Transcript of Oose_week 1- Software Construction

  • 8/15/2019 Oose_week 1- Software Construction

    1/27

    Software Construction 1

      SOFTWARE CONSTRUCTION

    LECTURE 1

  • 8/15/2019 Oose_week 1- Software Construction

    2/27

    Books (Reference Material )

    • Applying UML and Patterns: An Introduction to Object-Oriented Analysis andDesign 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 2

  • 8/15/2019 Oose_week 1- Software Construction

    3/27

    Software Construction 3

      Grading Criteria

    20% Mid Term

    20% Quiz and Assignments

    20 % Lab !ro"ect

    #0% $ina &'am

  • 8/15/2019 Oose_week 1- Software Construction

    4/27

    4

    Software Processes

    • A Software Process is

    •A set of activities (e.g. requirements, analysis, design,coding, testing) combined and sequenced in a particularfashion to produce software

    • Recent trend: Agile Software Development

    •Customer needs evolve with time

    •Satisfying customers at delivery time (rather than atproject initiation) is more important than conforming to

    initial customer requirements

    Software Construction #

  • 8/15/2019 Oose_week 1- Software Construction

    5/27

    5

    Software Development Phases

    RequirementsRequirementsWhat needs to be doneWhat needs to be done

    RequirementsRequirementsWhat needs to be doneWhat needs to be done

    AnalysisAnalysisHow it should be doneHow it should be done

    AnalysisAnalysisHow it should be doneHow it should be done

    DesignDesignCreate a software structureCreate a software structure(architecture) around which(architecture) around whichcode will be builtcode will be built

    DesignDesignCreate a software structureCreate a software structure(architecture) around which(architecture) around whichcode will be builtcode will be built

    CodingCodingFill in the softwareFill in the softwarestructure with codestructure with code

    CodingCodingFill in the softwareFill in the softwarestructure with codestructure with code

    TestingTestingCheck that the code does whatCheck that the code does what

    it is supposed to (functionality,it is supposed to (functionality, performance, reliability, …) performance, reliability, …)

    TestingTestingCheck that the code does whatCheck that the code does what

    it is supposed to (functionality,it is supposed to (functionality, performance, reliability, …) performance, reliability, …)

    Project ManagementProject ManagementDevise a plan,Devise a plan, manaemanaeresources, costs, time, …resources, costs, time, …

    Project ManagementProject ManagementDevise a plan,Devise a plan, manaemanaeresources, costs, time, …resources, costs, time, …

    Software Construction (

  • 8/15/2019 Oose_week 1- Software Construction

    6/27

    6

    Software Phases Related to this

    Course

    DesignDesign

    Create a software structureCreate a software structure

    (architecture) around which(architecture) around which

    code will be builtcode will be built

    DesignDesign

    Create a software structureCreate a software structure

    (architecture) around which(architecture) around which

    code will be builtcode will be built

    CodingCodingFill in the softwareFill in the software

    structure with codestructure with code

    CodingCodingFill in the softwareFill in the software

    structure with codestructure with code

    Software Construction )

  • 8/15/2019 Oose_week 1- Software Construction

    7/27

    Software Construction *

    Introduction

    Definition of Software Construction:

    Detailed creation of working, meaningful software through acombination of coding, verification, unit testing,integration testing, and debugging

    Software construction closely tied to

    •Software design•Software testing

    Design

    Construction

    Testing

  • 8/15/2019 Oose_week 1- Software Construction

    8/27

    Software Construction +

    Introduction - 2

    More on Construction

    • Significant detailed design occurs during construction• Low-level (e.g. unit and module integration) testing occursduring 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

  • 8/15/2019 Oose_week 1- Software Construction

    9/27

    Software Construction ,

    Introduction - 3

    Software Construction Fundamentals

    The fundamentals of software construction include:•Minimizing complexity

    •Anticipating change

    •Constructing for verification

    •Standards in construction

  • 8/15/2019 Oose_week 1- Software Construction

    10/27

    Software Construction 10

    Introduction - 4

    Minimizing Complexity

    • Humans are severely limited in our ability to hold complexinformation 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++ andJava

    •Source code formatting rules to aid readability

  • 8/15/2019 Oose_week 1- Software Construction

    11/27

    Software Construction 11

    Introduction - 5

    Anticipating Change

    • Software changes over time• Anticipation / hope of change affect how software isconstructed

    • This can effect

    •Use of control structures

    •Handling of errors

    •Source code organization

    •Code documentation

    •Coding standards

  • 8/15/2019 Oose_week 1- Software Construction

    12/27

    Software Construction 12

    Introduction - 6

    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

  • 8/15/2019 Oose_week 1- Software Construction

    13/27

    Software Construction 13

    Introduction - 7

    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 UnifiedModeling Language

  • 8/15/2019 Oose_week 1- Software Construction

    14/27

    Software Construction 1#

    References

    • [IE04] IEEE Computer Society,Guide to the Software

    Engineering Body of Knowledge (SWEBOK), IEEE ComputerSociety Press, Los Alamitos, CA 20001, June 2004

    •  link :

  • 8/15/2019 Oose_week 1- Software Construction

    15/27

    Software Construction 1(

    A. Construction Planning

    • 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 don’t encourage it

    •Project plans may be limited to the construction plans•Many organizations and projects do not use systematiccost estimating methods such as models

  • 8/15/2019 Oose_week 1- Software Construction

    16/27

    Software Construction 1)

    A. Construction Planning - 2

    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

  • 8/15/2019 Oose_week 1- Software Construction

    17/27

    Software Construction 1*

    A. Construction Planning - 3

    Construction Prerequisites

    • As with building construction, much of the success or failureof 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

  • 8/15/2019 Oose_week 1- Software Construction

    18/27

    Software Construction 1+

    A. Construction Planning - 4

    Problem Definition Prerequisite

    • The problem being solved via the application must be welldefined

    • 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!

  • 8/15/2019 Oose_week 1- Software Construction

    19/27

    Software Construction1,

    A. Construction Planning - 5

    Requirements Prerequisite

    • Requirements describe in detail what a system is supposedto 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 toproject success

  • 8/15/2019 Oose_week 1- Software Construction

    20/27

    Software Construction 20

    A. Construction Planning - 6

    Architecture Prerequisite

    • Quality of the architecture determines the conceptualintegrity 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

  • 8/15/2019 Oose_week 1- Software Construction

    21/27

    Software Construction 21

    A. Construction Planning - 7

    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

  • 8/15/2019 Oose_week 1- Software Construction

    22/27

    Software Construction 22

    A. Construction Planning - 8

    Choose an Approach

    • Many software development approaches have been triedover 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

  • 8/15/2019 Oose_week 1- Software Construction

    23/27

    Software Construction 23

    A. Construction Planning - 9

    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 areaffected by the chosen language

  • 8/15/2019 Oose_week 1- Software Construction

    24/27

  • 8/15/2019 Oose_week 1- Software Construction

    25/27

    Software Construction 2(

    A. Construction Planning - 11

    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?

  • 8/15/2019 Oose_week 1- Software Construction

    26/27

    Software Construction 2)

    A. Construction Planning - 12

    Construct the Team

    • For small development efforts•Self managed

    •Everyone is a peer

    • For mid-size development efforts

    •Single team

    • For large development efforts

    •Multiple teams

    Role # / Team*

    Lead 1

    Detailed designer 1 to 4

    Coder 5 to 10

    Integrator 1 to 2

    Unit tester Same as coder

    System tester 1

    “Buildmeister” 1

    Configuration manager 1

    * Individuals will play multiple roles

    Table 1: Team Composition

  • 8/15/2019 Oose_week 1- Software Construction

    27/27

    Software Construction 2*

    A. References

    • [IE04] IEEE Computer Society,Guide to the Software

    Engineering Body of Knowledge (SWEBOK), IEEE ComputerSociety 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 PracticalHandbook of Software Construction, Second Edition,Microsoft Press, 2004.

    • [WR01] Walker Royce,Software Project Management, AUnified Framework, Addison-Wesley, Boston, MA, 2001