9/7/2015software construction1 software construction lecture 1 engr. huma ayub...

27
03/25/22 Software Construction 1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub [email protected]

Upload: pearl-russell

Post on 26-Dec-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

04/19/23 Software Construction 1

SOFTWARE CONSTRUCTION

LECTURE 1

Engr. Huma Ayub

[email protected]

Page 2: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Course outline

• Module 1: Introduction to software construction• Requirement engineering: structural and behavioral modeling using state

machines• 1. Introduction to requirements modeling• 2. Behavioral modeling• 3. Communicating state machines

• Module 2: Languages, grammars and analyzers • 1. Introduction to languages and compilers• 2. Lexical analysis (formal languages, regular expressions and accepting

automata)• 3. Syntax analysis

• Module 3: Concurrency, implementation design and performance issues• 1. Concurrency• 2 .Implementation design and performance issues

04/19/23 Software Construction 2

Page 3: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Books (Reference Material )

• 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

•  • Formal Methods in computing by M. Ferenczi, and Andras Pataricza , Sep

2004

• Software Engineering by Ian Sommerville, 8th edition, Addison & Wesley. 2006

• Software engineering a practitioner’s approach by Roger S. Pressman

04/19/23 Software Construction 3

Page 4: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

04/19/23 Software Construction 4

Grading Criteria

20% Mid Term20% Quiz and Assignments40% Final Exam20% Lab Work

Page 5: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

6

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 structure Create a software structure (architecture) around which (architecture) around which code will be built code will be built

DesignDesignCreate a software structure Create a software structure (architecture) around which (architecture) around which code will be built code will be built

CodingCodingFill in the software Fill in the software structure with codestructure with code

CodingCodingFill in the software Fill in the software structure with codestructure with code

TestingTestingCheck that the code does what Check that the code does what it is supposed to (functionality, it is supposed to (functionality, performance, reliability, …)performance, reliability, …)

TestingTestingCheck that the code does what Check 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, manage manage resources, costs, time, …resources, costs, time, …

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

Page 6: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

7

Software Phases Related to this Course

DesignDesignCreate a software structure Create a software structure (architecture) around which (architecture) around which code will be built code will be built

DesignDesignCreate a software structure Create a software structure (architecture) around which (architecture) around which code will be built code will be built

CodingCodingFill in the software Fill in the software structure with codestructure with code

CodingCodingFill in the software Fill in the software structure with codestructure with code

Page 7: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 8

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

04/19/23

Page 8: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 9

Introduction - 2

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 (or lack thereof) is very evident in the construction

products• Construction highly related to Computer Science due to

• Use of algorithms• Detailed coding practices

04/19/23

Page 9: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 10

Introduction - 3

Software Construction Fundamentals

The fundamentals of software construction include:• Minimizing complexity • Anticipating change • Constructing for verification • Standards in construction

The following slides discuss each of these fundamentals

04/19/23

Page 10: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 11

Introduction - 4

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:

• 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

04/19/23

Page 11: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 12

Introduction - 5

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

04/19/23

Page 12: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 13

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

04/19/23

Page 13: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 14

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 Unified

Modeling Language

04/19/23

Page 14: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 15

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 :

04/19/23

Page 15: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 16

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 to 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 systematic

cost estimating methods such as models

04/19/23

Page 16: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 17

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• Reduce quality thresholds

• 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

04/19/23

Page 17: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 18

A. Construction Planning - 3

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

04/19/23

Page 18: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 19

A. Construction Planning - 4

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!

04/19/23

Page 19: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 20

A. Construction Planning - 5

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

04/19/23

Page 20: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 21

A. Construction Planning - 6

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

04/19/23

Page 21: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 22

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

04/19/23

Page 22: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 23

A. Construction Planning - 8

Choose an Approach• Many software development approaches have been tried

over the years• Some examples (not mutually exclusive):

• Functional• Object-Oriented• Iterative• Waterfall• Agile• Data-centric

• The construction team must follow some approach• Chosen approach must be appropriate for the task at hand

04/19/23

Page 23: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 24

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 are

affected by the chosen language

04/19/23

Page 24: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 25

A. Construction Planning - 10

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 project’s 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?

04/19/23

Page 25: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 26

A. Construction Planning - 11

Choose ToolsModern 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?

04/19/23

Page 26: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 27

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

04/19/23

Page 27: 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

Software Construction 28

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

04/19/23