Professional Documents
Culture Documents
360E SwE Building Verification Sp2020 L15 PDF
360E SwE Building Verification Sp2020 L15 PDF
Lecture 15
2. SwE topics
Next week
https://opensource.org/ https://www.fsf.org/
Portions taken and adapted from M. Kochanski, HazelineA I. Sommerville, Software Engineering
SWEBOK
▪ Software Engineering Body of Knowledge (SWEBOK)
www.swebok.org
▪ Interactive debuggers
Builds
Version
And
Control
Staging
Management
Processes
▪ http://softwareconfidence.com/?p=25
▪ The next slides cover definitions GitHub provides hosting for software
development and version control using Git. It
offers the distributed version control and
source code management functionality of Git,
plus its own features.
Baseline
▪ A complete set of items that comprises an official version
▪ Note: You are unlikely to start from Null / scratch……
X
Req
Spec
v1.50
Test Cases and Design Documents User Manuals &
Test Results v1.3 v1.02 Help Files v1.5
Java
package X Component Y Library Z v1.5
v1.23 v2.2
• bb.vv.pp 10.3.124
• bb (date) 8 (02/03/03)
• bb (build sequence) 10 (4569)
• code name baker
• EXAMPLES?
Android
Wikipedia 2018
CASE STUDY
sources
Wikipedia 2017
Workspace, Check-in & Check-out
▪ Workspace (work station, dev machine, dev server, etc)
▪ a private work area where software can be modified without
affecting other developers who may be using or modifying that
software. Contains the working copy of the code
▪ Check-out
▪ when a developer gets the latest version from the CM system and
saves it to the local workspace
Workspace, Check-in & Check-out
2. Staging
▪ A controlled set of deliverables appropriate for use with a given environment
3. Release
▪ Set of production or “stable” deliverables
1. Builds
▪ Builds are the processes of creating
deliverables (usually for a release)
Could be a localized
build, or specific
Developer installation testing
Changing
Version 2.6
Tester
Controlled
Version 2.5
Version Controlled
Control Version 2.0
Documents
User
Daily Build and Smoke Tests
▪ A staged build created from currently
checked-in source code for a team
▪ Scheduled daily or at least periodically
▪ Provides a project build for internal usage, testing, and quality assurance
Release for Testing; Release Candidate (RC1; RC2, …); Alpha Release, Beta Release ….
Release for Testing; Release Candidate (RC1; RC2, …); Alpha Release, Beta Release ….
Release Decision Making
▪ To release is most important decision associated with software development
▪ Infrastructure
▪ Technical Support
▪ Quality of Software
▪ Reputation
Bug conversion
Setup and Installation
▪ Involves the packaging and delivery of deliverables to
deploy in an operational environment
Management process
1. Configuration management or version control
2. Builds and staging
3. Release
4. Setup and installation
Microsoft, 2009
Binary processing
Code signing
SKU/Language Creation
Penetration testing
A lot of testing
Design: happening during
Architecture -> Detailed Design the Implementation
http://en.wikipedia.org/wiki/Software_bugs
Edsger W. Dijkstra (1930- 2002): one of the most influential computer scientist
Software Testing Terms
Software
Failure!
All are referred to as ‘bugs’; while ‘faults’ is also used to represent all three. .
Programming Errors
• Defect Testing
• Focus on how we test and
techniques
Portions taken and adapted from M. Kochanski, H. Asuncion, Sommerville, I., Software Engineering 10th edition,
Pressman, R. Software Engineering A Practitioner’s Approach
VERIFICATION & VALIDATION (V&V)
Three Stages
I. Development testing
▪ Plan-driven development
▪ Test-driven development
II. Release testing
III.User testing
VERIFICATION & VALIDATION (V&V)
I. Development testing
Development testing includes all testing activities that are carried out by the team developing the system.
1. Unit testing, where individual program units or object classes are tested. Unit testing should
2. Component (integration) testing, where several individual units are integrated to create
3. System testing, where some or all of the components in a system are integrated and the system
▪ In automated unit testing, you make use of a test automation framework (such as JUnit) to
write and run your program tests.
▪ Unit testing frameworks provide generic test classes that you extend to create specific test
cases. They can then run all of the tests that you have implemented and report, often through
some GUI, on the success of otherwise of the tests.
Choosing unit test cases
▪ The test cases should show that, when used as expected, the component that
you are testing does what it is supposed to do.
▪ If there are defects in the component, these should be revealed by test
cases.
▪ This leads to 2 types of unit test cases:
▪ The first of these should reflect normal operation of a program and
should show that the component works as expected.
▪ The other kind of test case should be based on testing experience of
where common problems arise. It should use abnormal inputs to check
that these are properly processed and do not crash the component.
Testing strategies
▪ For example, in the weather station system, the reconfiguration component includes
objects that deal with each aspect of the reconfiguration.
▪ You access the functionality of these objects through the defined component interface.
▪ Testing composite components should therefore focus on showing that the component
interface behaves according to its specification.
▪ You can assume that unit tests on the individual objects within the component have
been completed.
STABS
Interface testing
▪ Objectives are to detect faults due to interface errors or invalid assumptions about
interfaces.
▪ Interface types
▪ Parameter interfaces
▪ Procedural interfaces
create a version of the system and then testing the integrated system.
▪ System testing checks that components are compatible, interact correctly and
transfer the right data at the right time across their interfaces.
▪ To demonstrate to the developer and the customer that the software meets its requirements.
▪ For custom software, this means that there should be at least one test for every requirement in
▪ For generic software products, it means that there should be tests for all of the system
features, plus combinations of these features, that will be incorporated in the product release.
▪ To discover situations in which the behavior of the software is incorrect, undesirable or does not
▪ Defect testing is concerned with rooting out undesirable system behavior such as system
verification
crashes, unwanted interactions with other systems, incorrect computations and data
corruption.
Requirements Analysis
A lot of testing
Design: happening during
Architecture -> Detailed Design the Implementation
3. Identify the source code files corresponding to your Case Study component
and design
The file License.txt contains the license covering use of the WRK.
The public\ directory contains a number of include files shared among system
components. base\ntos\ contains the NTOS sources.
The primary NTOS source components included in the WRK are organized as follows:
Kernel-mode
NTOS kernel layer
HAL
Firmware, Hardware
Windows Architecture: more details
Case study 2
Academic license
README.TXT
Windows Research Kernel Source Code License
In return for the license rights above, you must agree to these obligations:
This license governs use of the accompanying software, and your use of
1. You will not remove any copyright or other notices from the software,
the software constitutes acceptance of this license. Your license rights
nor reverse engineer or decompile binary portions of the software,
below are subject to the restrictions in the license, and are available
unless your laws give you the right to do so despite this restriction.
to you only so long as you remain eligible due to your affiliation with
an accredited educational institution. (For more details on eligibility see
2. You will include a verbatim copy of this license if you distribute the software in any form.
http://www.microsoft.com/resources/sharedsource/Licensing/WindowsAcademic.mspx)
3. If you distribute derivative works of the software in source code form you will do so only under this
You may use and modify this software for any non-commercial purpose within
license, and if you distribute derivative works of the software solely in object form you will do so only
your educational institution, including making a reasonable number of copies.
under a license that complies with this license.
Teaching, academic research, and personal experimentation are examples
of purposes which can be non-commercial. You may post copies
4. If you have modified the software or created derivative works, and distribute such modifications or
on an internal secure server, and it may be installed and used
derivative works, you will cause the modified files to carry prominent notices describing your changes and
on personal machines of eligible users.
the date of the changes, so that recipients know that they are not receiving the original software.
You may distribute snippets of this software in research papers, books or
5. THE SOFTWARE COMES "AS IS", WITH NO WARRANTIES. THIS MEANS NO EXPRESS,
other teaching materials, or publish snippets of the software on websites
IMPLIED OR STATUTORY WARRANTY, INCLUDING WITHOUT LIMITATION, WARRANTIES
or on-line community forums that are intended for teaching and research.
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR ANY WARRANTY
The total amount of source code in each of your snippets should
OF TITLE OR NON-INFRINGEMENT. YOU MUST PASS THIS DISCLAIMER ON WHENEVER
not exceed 50 lines. If you wish to use a larger portion
YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.
of the software, please contact compsci@microsoft.com.
6. MICROSOFT WILL NOT BE LIABLE FOR ANY DAMAGES RELATED TO THE SOFTWARE
You may not use or distribute this software or any derivative works
OR THIS LICENSE, INCLUDING DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL
in any form for commercial purposes. Examples of commercial purposes
OR INCIDENTAL DAMAGES, TO THE MAXIMUM EXTENT THE LAW PERMITS, NO MATTER
would be running business operations, licensing, leasing, or selling
WHAT LEGAL THEORY IT IS BASED ON. YOU MUST PASS THIS LIMITATION OF LIABILITY
the software, or distributing the software for use with commercial products.
ON WHENEVER YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.
If you wish to commercialize your work related to the software or take part
in research with industrial partners, you need to contact iplg@microsoft.com
7. If you sue anyone over patents that you think may apply to the software
to enquire about a commercial license.
or anyone's use of the software, your license to the software ends immediately.
You may distribute the software and modifications to the software for
8. You will not use the software to aid the development of any software
non-commercial purposes, but only to other eligible users of the software
programs that are designed to: (a) harm or intentionally interfere with
(for example, to another university student or professor to support joint
the operation of a computer system including any data or information stored
academic research). You may not grant rights to the software or derivative
on such computer system; and/or (b) surreptitiously gain or maintain high level
works that are broader than those provided by this license. For example,
access to a computer system, self-propagate, and/or execute in a manner that
you may not distribute modifications of the software under terms that would
prevents detection, including but not limited to, so-called "rootkit"
permit commercial use, or under terms that purport to require the software
software programs, viruses, or worms.
or derivative works to be sublicensed to others.
9. Your rights under the license end immediately if you breach it in any way.
You may use any information in intangible form that you remember after
accessing the software. However, this right does not grant you a license
10. Microsoft reserves all rights not expressly granted to you in this license.
to any of Microsoft's copyrights or patents for anything you might create
using such information.
License Version: 12 January 2006.