Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS223: Software Engineering Lecture 15: Software construction.

Similar presentations


Presentation on theme: "CS223: Software Engineering Lecture 15: Software construction."— Presentation transcript:

1 CS223: Software Engineering Lecture 15: Software construction

2 Objective After completing this lecture the students will be able to Explain the components of software construction Use coding best practices in their projects

3 Definition The term software construction refers to the detailed creation of working software through a combination of o coding, o verification, o unit testing, o integration testing, and o debugging. Boundaries between design, construction, and testing (if any) will vary depending on the software life cycle processes that are used in a project.

4

5

6 Software Construction Fundamentals Complexity Anticipating change Verification Reuse Follow standards Managing Construction Life cycle model Planning Measurement Practical considerations Design Language Coding Testing Reuse Quality Integration Technologies API OOAD Parameterization Design by Contract Executable Platform Heterogeneity … Tools Development environment GUI Unit testing tool Profiling Performance analysis Slicing tool

7 Software Construction Fundamentals Software construction fundamentals include o minimizing complexity o anticipating change o constructing for verification o reuse o standards in construction

8 Metaphors

9 Minimizing Complexity The need to reduce complexity applies to o essentially every aspect of software construction o particularly critical to testing of software constructions.

10 How to Attack Complexity The primary sources of overly costly, ineffective designs o A complex solution to a simple problem o A simple, incorrect solution to a complex problem o An inappropriate, complex solution to a complex problem How to manage it? o Minimize the amount of essential complexity that anyone’s brain has to deal with at any one time. o Keep accidental complexity from needlessly proliferating.

11 Anticipating change Anticipation of change drives many aspects of software construction Helps software engineers build extensible software Anticipating change is supported by many specific techniques

12 Constructing for Verification Building software in such a way that faults can be readily found o software engineers writing the software o testers o users during independent testing How to do that? o Following coding standards to support code reviews and unit testing o Organizing code to support automated testing o Restricting the use of complex or hard-to-understand language structures

13 Reuse Using existing assets in solving different problems o libraries, o modules, o components, o source code, and o commercial off-the-shelf (COTS) assets Systematic reuse can enable significant software productivity, quality, and cost improvements.

14 Standards in Construction Applying external or internal development standards Helps achieve a project’s objectives for efficiency, quality, and cost. o Communication methods o Programming languages o Coding standards o Platforms o Tools

15 Software Construction Fundamentals Complexity Anticipating change Verification Reuse Follow standards Managing Construction Life cycle model Planning Measurement Practical considerations Design Language Coding Testing Reuse Quality Integration Technologies API OOAD Parameterization Design by Contract Executable Platform Heterogeneity … Tools Development environment GUI Unit testing tool Profiling Performance analysis Slicing tool

16 Kernighan Quotations "Where there are two bugs, there is likely to be a third.“ “Don't patch bad code - rewrite it." "Don't stop with your first draft."

17 Thank you Next Lecture: System Modeling


Download ppt "CS223: Software Engineering Lecture 15: Software construction."

Similar presentations


Ads by Google