Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Lecture No 01 SC 23092020 124855am

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 21

Software Construction

Lecture No. 01
By

RAFIA HASSAN

INTRODUCTION
COURSE OVERVIEW
• What and Why? (Foundations)
• Creating High Quality Code: Design in Construction, Working
Classes, High-Quality Routines, Defensive Programming, The
Pseudocode Programming Process

• Variables and Statements: Variables, Data Types, statements


and Controls

• Code Improvements: The Software-Quality Landscape,


Collaborative Construction, Developer Testing, Debugging,
Refactoring, Code-Tuning Techniques

3
• System Considerations
Course Books
• Code Complete: A Practical Handbook of
Software Construction by Steve McConnell

• Objects First with Java: A Practical Introduction


Using BlueJ by David J. Barnes & Michael
Kolling, Sixth Edition, Pearson, 2016

4
Reference Books
• Software Essentials: Design and Construction
by Adair Dingle, 3rd edition 2014.

• SWEBOK V3, 2014, chapter 3

• Object-Oriented Software Construction,


second edition by Bertrand Meyer

5
Software Construction

• CONSTRUCTION is a just a phase of a project, in


between plan (design) and quality assurance

• Software construction is a fundamental act of software


engineering: the construction of working, meaningful
software through a combination of coding, validation,
unit testing , integration testing and debugging

6
Key Points
• The software construction is linked to all the other
software engineering, most strongly to software design
and software testing.

• This is because the software construction process itself


involves significant software design and test activity.

• It also uses the output of design and provides one of the


inputs to testing, both design and testing being the
activities
7
SOFTWARE DEVELOPMENT ACTIVITIES

• Problem definition
• Requirements development
• Construction planning
• Software architecture, or high-level design
• Detailed design
• Coding and debugging
• Unit testing
• Integration testing
• Integration
• System testing
• Corrective maintenance
8
9
Software Construction Activities

10
11
Software Construction Activities

• 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
• Tuning code to make it smaller and faster

In a nutshell, Coding or Programming can be considered as SC 12


Software Construction Fundamentals

The fundamentals of software construction


include:
• Minimizing complexity
• Anticipating change
• Reuse
• Constructing for verification
• Standards in construction

13
Minimizing complexity

• In software construction, reduced complexity


is achieved through emphasizing the creation
of code that is simple and readable rather
than clever
• As functionality increases, so does complexity
• Minimizing complexity is accomplished
through making use of standards, and through
numerous specific techniques in coding

14
Anticipating change

• Anticipating change helps software engineers


build extensible software, which means they can
enhance a software product without disrupting
the underlying structure

•  Research over 25 years showed that the cost of


rework can be 10 to 100 times (5 to 10 times for
smaller projects) more expensive than getting
the requirements right the first time
15
Anticipating change
• Software changes over time
• Anticipation of change affect how software is
constructed
• This can effect
– Use of control structures
– Handling of errors
– Source code organization
– Code documentation
– Coding standards
16
Constructing for Verification

• Constructing for verification means building software in


such a way that faults can be ferreted out readily by the
software engineers writing the software, as well as
during independent testing and operational activities

• Specific techniques that support constructing for


verification include following coding standards to support
code reviews, unit testing, organizing code to support
automated testing, and restricted use of complex or
hard-to-understand language structures among others

17
Reuse
Systematic reuse can enable significant software
productivity, quality, and cost improvements.
Reuse has two closely related facets:

• Construction for reuse: Create reusable


software assets
• Construction with reuse: Reuse software
assets in the construction of a new solution
18
Standards in Construction
Standards, whether external (created by international
organizations) or internal (created at the corporate level), that
directly affect construction issues include:

• Communication methods: Such as standards for document


formats and contents
• Programming languages
• Coding standards
• Platforms
• Tools: Such as diagrammatic standards for notations like UML.

19
Why is SC important?
• Construction is a large part of software development

• Construction is the central activity in software development

• With a focus on construction, the individual programmer’s


productivity can improve enormously

• Construction’s product, the source code, is often the only


accurate description of the software

• Construction is the only activity that’s guaranteed to be


20
done
References
• Chapter # 1, Steve McConnell, “Code Complete:
A Practical Handbook of Software Construction”,
Second Edition

• https://voer.edu.vn/m/software-construction/efbbc46b

21

You might also like