Software Construction
Dr. Shaukat Ali
shaukat@icp.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
Software Processes
•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
Software Development Phases
Requirements
What needs to be done
Analysis
How it should be done
Design
Create a software structure
(architecture) around which
code will be built
Coding
Fill in the software
structure with code
Testing
Check that the code does what
it is supposed to (functionality,
performance, reliability, …)
Project Management
Devise a plan, manage
resources, costs, time, …
Software Phases Related to this
Course
Design
Create a software structure
(architecture) around which
code will be built
Coding
Fill in the software
structure with code
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
Main Activities
• Managing Complexity: Programmed systems are always much more
complex than the corresponding design
• this involves approaches to coping with that complexity
oManaging Change: the environment changes and the platform and
components change regularly
o this involves developing systems that are resilient to anticipated change
oFacilitating Validation and Verification: the final code will be subject to test,
review, walkthroughs
o the structure of the code is an essential influence on ease of validation
oStandards Compliance : Important to ensure the capacity to interwork and
sometimes an essential to a product
Managing Complexity
oAvoid complexity: by forcing a redesign to remove the complexity
from the system
oAutomate complexity: use tools to carry out complex, error-prone,
tasks that are well understood, encapsulate complexity in
manageable components
oLocalize complexity : use structuring and hiding to contain complexity
inside manageable boundaries. Conceptual tools like coupling and
cohesion are useful in identifying and managing locality.
Managing Change
• Both the Environment changes and the platform and components
evolve
• (some systems just freeze the system and undertake limited maintenance).
• Main management approaches
• Attempt to generalize the interface to components so the component is
capable of easy adaptation
• Experiment to identify variability and likely directions for change in the
environment
• Exploit locality - attempt to generate designs with low coupling so change in
components and environments have limited impact on the overall system
Facilitating Validation
• There are a variety of ways of validating systems
• Approaches in the code can be helpful
• Manual inspection: comments, structure for reading, documentation
• Test: code structure to allow good unit test and sensible interfaces so that
integration test and the creation of “stubs” and “drivers” is easy
Complying with Standards
• Standards directly affect construction issues
• E.g. programming languages, communication methods, platforms, tools, etc.
• External standards are often crucial in determining the saleability of
products, e.g.:
• XML, CORBA, COM, DCOM, and so on in order to ensure interoperability
• Quality standards, e.g., Capability Maturity Model (CMM) or ISO 9001 can be
crucial in gaining contracts
• Internal standards contribute towards organization or project work
practice and knowledge
Reference
Chapter 4 of the SWEBOK on Software Construction

Lecture 01

  • 1.
    Software Construction Dr. ShaukatAli shaukat@icp.edu.pk
  • 2.
    Course outline • Module1: 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
  • 3.
    Software Processes •A SoftwareProcess is • A set of activities (e.g. requirements, analysis, design, coding, testing) combined and sequenced in a particular fashion to produce software
  • 4.
    Software Development Phases Requirements Whatneeds to be done Analysis How it should be done Design Create a software structure (architecture) around which code will be built Coding Fill in the software structure with code Testing Check that the code does what it is supposed to (functionality, performance, reliability, …) Project Management Devise a plan, manage resources, costs, time, …
  • 5.
    Software Phases Relatedto this Course Design Create a software structure (architecture) around which code will be built Coding Fill in the software structure with code
  • 6.
    Introduction Definition of SoftwareConstruction: 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
  • 7.
    Main Activities • ManagingComplexity: Programmed systems are always much more complex than the corresponding design • this involves approaches to coping with that complexity oManaging Change: the environment changes and the platform and components change regularly o this involves developing systems that are resilient to anticipated change oFacilitating Validation and Verification: the final code will be subject to test, review, walkthroughs o the structure of the code is an essential influence on ease of validation oStandards Compliance : Important to ensure the capacity to interwork and sometimes an essential to a product
  • 8.
    Managing Complexity oAvoid complexity:by forcing a redesign to remove the complexity from the system oAutomate complexity: use tools to carry out complex, error-prone, tasks that are well understood, encapsulate complexity in manageable components oLocalize complexity : use structuring and hiding to contain complexity inside manageable boundaries. Conceptual tools like coupling and cohesion are useful in identifying and managing locality.
  • 9.
    Managing Change • Boththe Environment changes and the platform and components evolve • (some systems just freeze the system and undertake limited maintenance). • Main management approaches • Attempt to generalize the interface to components so the component is capable of easy adaptation • Experiment to identify variability and likely directions for change in the environment • Exploit locality - attempt to generate designs with low coupling so change in components and environments have limited impact on the overall system
  • 10.
    Facilitating Validation • Thereare a variety of ways of validating systems • Approaches in the code can be helpful • Manual inspection: comments, structure for reading, documentation • Test: code structure to allow good unit test and sensible interfaces so that integration test and the creation of “stubs” and “drivers” is easy
  • 11.
    Complying with Standards •Standards directly affect construction issues • E.g. programming languages, communication methods, platforms, tools, etc. • External standards are often crucial in determining the saleability of products, e.g.: • XML, CORBA, COM, DCOM, and so on in order to ensure interoperability • Quality standards, e.g., Capability Maturity Model (CMM) or ISO 9001 can be crucial in gaining contracts • Internal standards contribute towards organization or project work practice and knowledge
  • 12.
    Reference Chapter 4 ofthe SWEBOK on Software Construction