INTRODUCTION

Software construction is detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging. It is a software engineering discipline. Some of the specific tasks involved in construction are verifying that the groundwork has been laid so that construction can proceed successfully, determining how your code will be tested,designing and writing classes and routines, creating and naming variables and named constants, selecting control structures and organizing blocks of statements, unit testing, integration testing, and debugging your own code, reviewing other team members’ low-level designs and code and having them review yours,polishing code by carefully formatting and commenting it,integrating software components that were created separately and tuning code to make it faster and use fewer resources.

In this course students will learn how to verify the ground work that has been done before construction. Students will also learn the objetc-oriented design approach. They will study how to write a pseudocode and its conversion into any specific programming language. Collaborative development, refactoring and integration techniques are also a part of this course. Students will learn different formatting and commenting approaches.

COURSE CODE: SE-3344

CREDIT HOURS: 03

PREREQUISITES: Programming Fundamentals (CMP-2122)

COURSE LEARNING OUTCOMES:

At the end of the course the students will be able to:

  • Understand the fundamentals of software construction.
  • Apply software construction techniques to real-world projects.
  • Create a high quality code by following high standard construction practics. 
  • Effectively work in team by applying collaborative development techniques.
  • Apply refactoring techniques to enhance the quality of already existing code.

TEXT BOOK: Code Complete: A Practical Handbook of Software Construction by Steve McConnell, Microsoft Press; 2nd Edition.

REFERENCE BOOK: Object-Oriented Software Construction by Bertrand Meyer, Prentice Hall; 2nd Edition.

COURSE CONTENTS

  • Introduction to Software Construction.
  • Importance of Prerequisites of Target Software.
  • Key Construction Decisions: Choice of Programming Language, Programming Conventions, Localization Aspects of Technology, Selection of Construction Practices.
  • Design in Software Construction.
  • Design Building Blocks.
  • Defensive Programming.
  • The Software-Quality Considerations.
  • Collaborative Construction.
  • Refactoring.
  • Program Size & Software Construction.
  • Managing Software Construction.
  • Integration.
  • Programming Tools.
  • Layout and Style.
  • Self-Documenting Code.

COURSE ASSESSMENT:

  • Final Term Exam: 50 Marks
  • Mid Term Exam: 30 Marks
  • Sessional: 20 Marks
    • Quiz: 8 Marks
    • Class Participation: 2 Marks
    • Assignment: 5 Marks
    • Project: 5 Marks

CLASS TIMING: BSSE 5th Regular (Monday: 11:00 - 12:30) (Tuesday: 11:00 - 12:30)

CLASS TIMING: BSSE 5th Self (Wednesday: 8:00 - 9:30) (Thursday: 9:30 - 11:00)

WEEKLY PLAN

Week

Topics and Readings

Books with Page No.

1

Software Construction: What Is Software Construction? Why Is Software Construction Important?

SEBOK [Chapter#3]

[TB- Ch 1: pg 3,4,5,6,7]

[Handouts]

2

Metaphors for Software Development, The Importance of Metaphors, How to Use Software Metaphors, Common Software Metaphors.

[TB- Ch 2: pg 9-20]

 

3

Prerequisites: Importance of Prerequisites, Type of Target Software, Problem-Definition Prerequisite, Requirements Prerequisite, Architecture Prerequisite.

 [TB- Ch 3: pg 24, 31, 36, 38, 43]

 

 

4

Key Construction Decisions: Choice of Programming Language, Programming Conventions, Localization Aspects of Technology, Selection of Construction Practices.

 

[TB- Ch 4: pg 61, 66, 69]

5

Design in Software Construction: Design Challenges, Key Design Concepts.

[TB- Ch 5: pg 74, 77-86]

 

6

Design in Software Construction: Design Building Blocks: Heuristics, Design Practices, Popular Methodologies.

[TB- Ch 5: pg 87, 110, 118

7

The Pseudo code: the pseudo code programming process.

[TB- Ch 9: pg 216, 218, 220]

 

8

Defensive Programming: Protecting Your Program From Invalid Inputs, Assertions, Error Handling Techniques, Exceptions, Barricade Your Program to Contain the Dam-age Caused by Errors, Debugging Aids,

 

[TB- Ch 8: pg 188, 189, 194, 198, 203, 205]

 

 

9

The Software-Quality Landscape: Introduction, Characteristics of Software Quality, Techniques for Improving Software Quality, When to Do Quality Assurance, CHECKLIST: A Quality-Assurance Plan, Key points

 

[TB- Ch. 20: pg 463, 466, 473, 474]

 

 

10

Refactoring: Kinds of Software Evolution, Introduction to Refactoring, Reasons to Refactor

[TB- Ch. 24: pg. 564-571]

11

Refactoring: Specific Refactorings, Refactoring Safely, Refactoring Strategies.

 

[TB- Ch. 24: pg. 579-582]

 

12

Collaborative Construction: Overview of Collaborative Development Practices, Pair Programming, Formal Inspections, Other Kinds of Collaborative Development Practices.

 

[TB- Ch. 21: pg 480-492]

 

 

13

Program Size & Software Construction: Communication and Size, Range of Project Sizes,  Effect of Project Size on Errors, Effect of Project Size on Productivity, Effect of Project Size on Development Activities.

Managing Construction: Encouraging Good coding, Configuration Management, Estimating a Construction Schedule, Measurement.

 

[TB- Ch. 27: pg 649-658]

 

[TB- Ch. 28: pg. 664, 671, 677]

 

14

Integration: Importance of the Integration Approach, Integration Frequency—Phased or Incremental? Incremental Integration Strategies, Daily Build and Smoke Test.

[TB- Ch. 29: pg. 689, 691, 694, 702.]

 

 

15

Programming Tools: Design Tools, Source-Code Tools, Executable-Code Tools, And Tool-Oriented Environments.

Layout and Style: Layout Fundamentals, Layout Techniques, Layout Styles, Laying Out Control Structures, Laying Out Individual Statements, Laying Out Comments, Laying Out Routines, Laying Out Classes.

[TB- Ch. 30: pg. 710-720]

[TB- Ch. 31: pg. 730-768]

16

Self-Documenting Code: External Documentation, Programming Style as Documentation, To Comment or Not to Comment, Keys to Effective Comments, Commenting Techniques.

[TB- Ch. 32: pg. 777-781, 785, 792]

 

 

Course Material