Software Construction

Slides:



Advertisements
Similar presentations
PROCESS FRAMEWORK Lecture - 3. Topics covered PROCESS FRAMEWORK PROCESS MODELS DIFFERENCE.
Advertisements

Software Quality Assurance Plan
Object-Oriented Software Development CS 3331 Fall 2009.
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Metrics for Process and Projects
Chapter 6: Design of Expert Systems
Documentation Testing
SE curriculum in CC2001 made by IEEE and ACM: Overview and Ideas for Our Work Katerina Zdravkova Institute of Informatics
Chapter 1 Principles of Programming and Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
COMP8130 and 4130Adrian Marshall 8130 and 4130 Test Management Adrian Marshall.
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
Software Verification and Validation (V&V) By Roger U. Fujii Presented by Donovan Faustino.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Case Studies Instructor Paulo Alencar.
Tim St. John Masters Computer Engineering Software Engineering Track.
Software Integration and Documenting
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
S T A M © 2000, KPA Ltd. Software Trouble Assessment Matrix Software Trouble Assessment Matrix *This presentation is extracted from SOFTWARE PROCESS QUALITY:
Extreme Programming Software Development Written by Sanjay Kumar.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
1 Software Construction Software Construction Chapter 1.
Chapter 2 The process Process, Methods, and Tools
CPIS 357 Software Quality & Testing
RUP Implementation and Testing
Software Inspection A basic tool for defect removal A basic tool for defect removal Urgent need for QA and removal can be supported by inspection Urgent.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Chapter 6 : Software Metrics
TESTING PRINCIPLES BY K.KARTHIKEYAN. PRINCIPLES Principle 1. Testing is the process of exercising a software component using a selected set of test cases,
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Slide 1 Construction (Testing) Chapter 15 Alan Dennis, Barbara Wixom, and David Tegarden John Wiley & Sons, Inc. Slides by Fred Niederman Edited by Solomon.
1 C++ Plus Data Structures Nell Dale Chapter 1 Software Engineering Principles Modified from the Slides made by Sylvia Sorkin, Community College of Baltimore.
Chapter 1 Introduction to Structured Design. Introduction  System  A combination of people, equipment, and procedures that work together to perform.
Programming Life Cycle Problem analysisunderstand the problem Requirements definition specify what program will do High- and low-level designhow it meets.
Formal Methods in Software Engineering
SOFTWARE METRICS. Software Process Revisited The Software Process has a common process framework containing: u framework activities - for all software.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Teaching material for a course in Software Project Management & Software Engineering – part V.
Software Waterfall Life Cycle
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Process: A Generic View Software Engineering: A Practitioner’s Approach, 7/e Chapter 2.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
MNP1163/MANP1163 (SOFTWARE CONSTRUCTION).  Construction Design  Construction Language  Coding  Construction testing & debugging  Construction for.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
MANP1163 (Course Overview).  Dr Suriayati Chuprat   Room: IT-Manager’s.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
PI2134 Software Engineering IT Telkom.  Layered technology  Software Process  Generic Process (by Pressman)  Fundamental activities (by Sommerville)
1 These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.
CS223: Software Engineering Lecture 15: Software construction.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Tool Support for Testing
CMSC 345 Defensive Programming Practices from Software Engineering 6th Edition by Ian Sommerville.
CSCE 548 Secure Software Development Risk-Based Security Testing
Regression Testing with its types
Components of software quality assurance system overview
C++ Plus Data Structures
Software Project Planning &
Verification and Validation Unit Testing
Software Testing Strategies
Presentation transcript:

Software Construction SWEBOK Chapter 4 Software Construction

Fundamentals Minimizing Complexity Anticipating Change Construction for Verification Standards in Construction

Minimizing Complexity One of the strongest drivers in software construction Required due to human limitations of memory

Minimizing Complexity How is complexity minimized during software construction? Use of standards Coding practices Construction-oriented quality techniques Creation of code that is simple and readable rather than clever

Anticipate Change Software will change Coding techniques can be used to make change easier (designing for change is also critical) Give potential causes for change

Construction for Verification Built is such a way to allow easy identification of defects By developers during construction By testers Identification by developers and individual testing

Construction for Verification Techniques Following coding standards Unit testing Organizing code to support automated testing Restricted use of complex/hard-to-understand language structures

Standards in Construction Communication methods Programming languages Platforms Tools External standards Internal standards Communication methods: document formats CSV or XML, SOAP web services or HTTP POST Tools: UML modeling External standards: hardware and software interface specifications from the OMG or IEEE Internal standards: organizational

Managing Construction Construction Models Construction Planning Construction Measurement

Construction Models Linear construction view Interative Construction only after significant pre-requisite work is complete Coding is main focus of construction Interative Construction occurs at the same time as other development activities Combination of activities all considered construction

Construction Planning How are we going to build it? Affects prerequisite activities Extent to which they are performed Order in which they are performed Degree to which they are expected to be complete before construction begins Affects project’s ability to minimize complexity, anticipate change, and construct for verification Defines the order in which components are created and integrated, QA management process, allocation of task assignments, etc.

Construction Measurement What aspects are being measured? Code developed (LOC) Code reused Code modified Code complexity Code inspection statistics Defects found Defects fixed Effort Scheduling Story points (velocity) Why do we need to measure construction?

Practical Considerations Construction Design Construction Languages Coding Construction Testing Reuse Construction Quality Integration

Construction Design Design done before construction will be incomplete Detailed design same as overall design but at a smaller scale Haven’t we already talked about design?

Construction Languages Anyway that a human can specify execution instructions to a computer Configuration Languages Toolkit Languages Programming Languages Configuration Languages are languages in which software engineers choose from a limited set of predefined options to create new or custom software installations. The text-based configuration files used in both the Windows and Unix operating systems are examples of this, and the menu style selection lists of some program generators constitute another. Toolkit languages are used to build applications out of toolkits (integrated sets of application-specific reusable parts), and are more complex than configuration languages. Toolkit languages may be explicitly defined as application programming languages (for example, scripts), or may simply be implied by the set of interfaces of a toolkit. Programming languages are the most flexible type of construction languages. They also contain the least amount of information about specific application areas and development processes, and so require the most training and skill to use effectively.

Coding Understandable source code Use of classes, enumerated types, variables, named constants, etc Control structures Error handling Prevention of code-level security breaches Resource usage Source code organization Code documentation Code tuning

Construction Testing Goal: to reduce the time between defect creation and default detection Subset of overall testing types performed by the engineer who wrote the code Unit testing Integration testing

Reuse Reuse processes and activities must be formalized into the software life cycle Selection of what to reuse Evaluation of code or test reusability Reporting of reuse information on new code

Construction Quality Common Techniques Unit and integration testing Test-first development Code stepping Use of assertions Debugging Technical reviews Static analysis Focus on code and not overall project

Integration Plan the sequence in which components will be integrated Creation of scaffolding and stubs to support interim versions Determining the degree of testing done on components before they are integrated Determine when interim versions of the software are tested