0% found this document useful (0 votes)
14 views

Lec1_Introduction to Software Construction and Development

Uploaded by

fa23phcs0001
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Lec1_Introduction to Software Construction and Development

Uploaded by

fa23phcs0001
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Introduction to Software

Construction and
Development
Lecture 1
Course Instructors:

Mr. M. Saad (Lecturer SED, SSUET).


Ms. Fatima (Lecturer SED, SSUET).
Theory
Lab Teachers:

Ms. Sitwat.
Ms. Emaan.

Laboratory
Quizes / Assignments / Lab 15 Marks
File
Project 15 Marks
Final Exam 20 Marks
Total 50 Marks
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 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).
Software Development Phases
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:
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
Humans are severely limited in their ability to hold complex
information in their working memories, especially over long periods of
time.
As a result, 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 controlstructures.
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 code reviews.
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

You might also like