Lec1_Introduction to Software Construction and Development
Lec1_Introduction to Software Construction and Development
Software
Construction
and
Lecture
1
Developme
nt
TEXT
BOOKS:
-Agile Software Development, Principles, Patterns, and Practices by
Robert
C. Martin, 1st ed.
-Refactoring Improving the Design of Existing Code by Martin
Fowler.
REFERENCE BOOKS:
-Software Engineering, A Practitioner’s Approach by Pressman, 8th
ed.
-Working Effectively with Legacy Code by Michael C. Feathers.
-Java - How to Program by Paul Deitel and Harvey Deitel, 10th ed.
Software Development
Phases
Software Development
Process
In software engineering, a software development
process is the process of dividing software development
work into distinct phases to improve design,
product management, and project management. It is
also known as a software development life cycle
(SDLC).
Introductio
n 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: Softwaredesign.
Softwaretesting.
Design
Construction
Testing
More on
Construction…
Significant detailed design occurs during construction.
Low-level (e.g. unit and module integration) testing occurs during
construction.
Construction highly related to Computer Science due
to Use of algorithms.
Detailed coding practices.
Software Construction
Fundamentals
The fundamentals of software construction include:
Minimizing complexity.
Anticipating change. Constructing for
verification. Standards in
construction.
Minimizing
Complexity
Minimizing complexity is one of the strongest drives 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.
Anticipating
Change
Software changes over time.
Anticipation / hope of change affects how software is
constructed.
This can affect
Use of control structures.
Handling of errors.
Source code organization.
Code documentation.
Coding standards.
Constructing for
Verification
Construct software that allows bugs to be easily found and
fixed.
Examples:
Enforce coding standards.
Helps support codereviews.
Unit testing.
Organizing code to support automated testing.
Restricted use of complex or hard-to-understand language
structures.
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.
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 managers consider planning to be a waste of time
and therefore don’t encourage it etc.
Software Process Infrastructure
What is a Software Process?
A software process is a set of interrelated activities and tasks that
transform input work products into output work products. At
minimum, the description of a software process includes required
inputs, transforming work activities, and outputs generated.
Software Process Infrastructure
A software process infrastructure can provide process definitions,
policies for interpreting and applying the processes, and
descriptions of the procedures to be used to implement the
processes. Additionally, a software process infrastructure may
provide funding, tools, training, and staff members who have
been assigned responsibilities for establishing and maintaining
the software process infrastructure.
References:
• http://swebokwiki.org/Chapter_3:_Software_Construction
• http://swebokwiki.org/Chapter_8:_Software_Engineering_Process