Software Engineering Tools and Methods
Fernando Brito e Abreu ([email protected])
Universidade Nova de Lisboa (http://www.unl.pt)
QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR)
SWEBOK: the 10 Knowledge Areas
Software Requirements
Software Design
Software Construction
Software Testing
Software Maintenance
Software Configuration Management
Software Engineering Management
Software Engineering Process
Software Engineering / Fernando Brito e Abreu 3 17-May-05
Summary
Sw Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Configuration Management Tools
Software Engineering Management Tools
Software Engineering Process Tools
Software Quality Tools
Miscellaneous Tools Issues
Sw Engineering Methods
Heuristic Methods
Formal Methods
Prototyping Methods
Tool advantages
Automation of repetitive, well-defined actions
making software engineering more systematic
Reducing the cognitive load on the sw engineer
Software Engineering / Fernando Brito e Abreu 5 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools Software Design Tools Software Design Tools
Software Construction Tools Software Construction Tools Software Construction Tools
Software Testing Tools Software Testing Tools Software Testing Tools
Software Maintenance Tools Software Maintenance Tools Software Maintenance Tools
Software Configuration Management Tools Software Configuration Management Tools Software Configuration Management Tools
Software Engineering Management Tools Software Engineering Management Tools Software Engineering Management Tools
Software Engineering Process Tools Software Engineering Process Tools Software Engineering Process Tools
Software Quality Tools Software Quality Tools Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Software Requirements Tools Requirements modeling tools
Used for eliciting, analyzing, specifying, and validating software requirements
Examples include:
Requisite Pro, IBM / Rational
Caliber, TBI
Software Engineering / Fernando Brito e Abreu 7 17-May-05
Software Requirements Tools Requirements modeling tools
Case study:
Software Requirements Tools Requirement traceability tools
Become increasingly important as the complexity of software grows
Are relevant in other life cycle processes
Software Engineering / Fernando Brito e Abreu 9 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools Software Construction Tools Software Construction Tools
Software Testing Tools Software Testing Tools Software Testing Tools
Software Maintenance Tools Software Maintenance Tools Software Maintenance Tools
Software Configuration Management Tools Software Configuration Management Tools Software Configuration Management Tools
Software Engineering Management Tools Software Engineering Management Tools Software Engineering Management Tools
Software Engineering Process Tools Software Engineering Process Tools Software Engineering Process Tools
Software Quality Tools Software Quality Tools Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Software Design Tools
Aimed at creating and checking software designs
Variety of such tools is a consequence of the diversity of sw design notations and methods
However, UML is becoming dominant and so is
Software Engineering / Fernando Brito e Abreu 11 17-May-05
Software Design Tools UML tools
IBM / Rational Rose
Objecteering
Together Control Center
Argo UML
…
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools Software Testing Tools Software Testing Tools
Software Maintenance Tools Software Maintenance Tools Software Maintenance Tools
Software Configuration Management Tools
Software Engineering / Fernando Brito e Abreu 13 17-May-05
Software Construction Tools Program editors
Used for the creation and modification of programs, and possibly the documents associated with them
Can be general purpose text or document editors, or they can be specialized for a target language
Software Construction Tools Compilers and code generators
Traditionally, compilers have been non-
interactive translators of source code, but there has been a trend to integrate compilers and program editors to provide integrated
programming environments
This topic also covers preprocessors,
linker/loaders, and code generators
Software Engineering / Fernando Brito e Abreu 15 17-May-05
Software Construction Tools Interpreters
These tools provide software execution through emulation
They can support software construction activities by providing a more controllable and observable environment for program execution
Software Construction Tools Debuggers
These are considered a separate category since
they support the software construction process,
but they are different from program editors and
compilers
Software Engineering / Fernando Brito e Abreu 17 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools Software Maintenance Tools Software Maintenance Tools
Software Configuration Management Tools Software Configuration Management Tools Software Configuration Management Tools
Software Engineering Management Tools Software Engineering Management Tools Software Engineering Management Tools
Software Engineering Process Tools Software Engineering Process Tools Software Engineering Process Tools
Software Quality Tools Software Quality Tools Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Software Testing Tools Test generators
Assist in the development of test cases
Software Engineering / Fernando Brito e Abreu 19 17-May-05
Software Testing Tools Test execution frameworks
Enable the execution of test cases in a controlled environment where the behavior of the object under test is observed
Software Testing Tools Test evaluation tools
Support the assessment of the results of test
execution, helping to determine whether or not
the observed behavior conforms to the expected
behavior
Software Engineering / Fernando Brito e Abreu 21 17-May-05
Software Testing Tools Test management tools
Provide support for all aspects of the software testing process
Software Testing Tools Performance analysis tools
Used for measuring and analyzing software performance, which is a specialized form of testing where the goal is to assess performance behavior rather than functional behavior
(correctness)
Software Engineering / Fernando Brito e Abreu 23 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Configuration Management Tools Software Configuration Management Tools Software Configuration Management Tools
Software Engineering Management Tools Software Engineering Management Tools Software Engineering Management Tools
Software Engineering Process Tools Software Engineering Process Tools Software Engineering Process Tools
Software Quality Tools Software Quality Tools Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Software Maintenance Tools Comprehension tools
Assist in the human comprehension of programs
Examples include visualization tools such as
animators and program slicers
Software Engineering / Fernando Brito e Abreu 25 17-May-05
Software Maintenance Tools Reengineering tools
Support the examination and alteration of the subject software to reconstitute it in a new form, and the subsequent implementation of the new form
Software Maintenance Tools Reverse engineering tools
Assist the process by working backwards from
an existing product to create artifacts such as
specification and design descriptions, which then
can be transformed to generate a new product
from an old one
Software Engineering / Fernando Brito e Abreu 27 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Configuration Management Tools
Software Engineering Management Tools Software Engineering Management Tools Software Engineering Management Tools
Software Engineering Process Tools Software Engineering Process Tools Software Engineering Process Tools
Software Quality Tools Software Quality Tools Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Sw Configuration Management Tools Defect and enhancement tracking tools
Used in connection with the problem-tracking
issues associated with a particular software
product
Software Engineering / Fernando Brito e Abreu 29 17-May-05
Sw Configuration Management Tools Version management tools
Involved in the management of multiple versions of a product
Sw Configuration Management Tools Release and build tools
Used to manage the tasks of software release
and build
Software Engineering / Fernando Brito e Abreu 31 17-May-05
Sw Configuration Management Tools Installation tools
Used for configuring the installation of software products
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Engineering / Fernando Brito e Abreu 33 17-May-05
Sw Engineering Management Tools Project planning and tracking tools
Used in software project effort measurement and cost estimation, as well as project scheduling
Sw Engineering Management Tools Risk management tools
Used in identifying, estimating, and monitoring
risks
Software Engineering / Fernando Brito e Abreu 35 17-May-05
Sw Engineering Management Tools Measurement tools
Assist in performing the activities related to the software measurement program
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Engineering / Fernando Brito e Abreu 37 17-May-05
Software Engineering Process Tools Process modeling tools
Used to model and investigate software engineering processes
Software Engineering Process Tools Process management tools
Provide support for software engineering
management
Software Engineering / Fernando Brito e Abreu 39 17-May-05
Software Engineering Process Tools Integrated CASE environments
Cover multiple phases of the software engineering life cycle
Perform multiple functions and hence potentially interact with the software life cycle process
being executed
Software Engineering Process Tools
Process-centered sw engin. environments
Tools that incorporate information on the
software life cycle processes and guide and
monitor the user according to the defined
process
Software Engineering / Fernando Brito e Abreu 41 17-May-05
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Configuration Management Tools
Software Engineering Management Tools
Software Engineering Process Tools
Software Quality Tools
Miscellaneous Tools Issues Miscellaneous Tools Issues Miscellaneous Tools Issues
Software Quality Tools Review and audit tools
Used to support reviews and audits
Software Engineering / Fernando Brito e Abreu 43 17-May-05
Software Quality Tools Static analysis tools
Used to analyze software artifacts, such as syntactic and semantic analyzers, as well as data, control flow, and dependency analyzers
Are intended for checking software artifacts for conformance or for verifying desired properties
Summary
Software Engineering Tools
Software Requirements Tools
Software Design Tools
Software Construction Tools
Software Testing Tools
Software Maintenance Tools
Software Engineering / Fernando Brito e Abreu 45 17-May-05
Miscellaneous Tools Issues
Tool integration techniques
Tool integration is important for making individual tools cooperate
This category potentially overlaps with the integrated CASE environments category where integration techniques are applied
Typical kinds of tool integration are platform, presentation, process, data, and control
E.g. XMI is used for UML models interchange in design tools
Miscellaneous Tools Issues
Meta-tools
Meta-tools generate other tools; compiler-
compilers are the classic example.
Software Engineering / Fernando Brito e Abreu 47 17-May-05
Miscellaneous Tools Issues
Tool evaluation
Due to the continuous evolution of software engineering tools, tool evaluation is an essential topic
Summary
Software Engineering Tools
…
Software Engineering Methods
Heuristic Methods Heuristic Methods Heuristic Methods
Formal Methods Formal Methods Formal Methods
Prototyping Methods Prototyping Methods Prototyping Methods
Software Engineering / Fernando Brito e Abreu 49 17-May-05
Software Engineering Methods
Heuristic methods - informal approaches
Formal methods - mathematically based approaches
Prototyping methods - approaches based on various forms of prototyping
Software Engineering Methods
The previous three topics are not disjoint; rather they represent distinct concerns
E.g, a OO method may incorporate formal techniques and rely on prototyping for verification and validation
There is a large overlap of this section with that
of previous KA’s, namely Software Requirements
Software Engineering / Fernando Brito e Abreu 51 17-May-05
Summary
Software Engineering Methods
Heuristic Methods
Formal Methods Formal Methods Formal Methods
Prototyping Methods Prototyping Methods Prototyping Methods
Heuristic Methods
Structured methods
The system is built from a functional viewpoint, starting with a high-level view and progressively refining this into a more detailed design
Data-oriented methods
The starting points are the data structures that a program manipulates rather than the function it performs
Object-oriented methods
Software Engineering / Fernando Brito e Abreu 53 17-May-05
Summary
Software Engineering Methods
Heuristic Methods
Formal Methods
Prototyping Methods Prototyping Methods Prototyping Methods
Formal Methods
Include the following aspects:
Specification languages and notations
Specification languages can be classified as model-oriented, property-oriented, or behavior-oriented
Refinement
Refers to how the specification is refined (or transformed) into a form which is closer to the desired final form of an
executable program
Software Engineering / Fernando Brito e Abreu 55 17-May-05
Summary
Software Engineering Methods
Heuristic Methods
Formal Methods
Prototyping Methods
Prototyping Methods
Include the following aspects:
Prototyping styles
Throwaway, evolutionary, and executable specification
Prototyping target
E.g. requirements, architectural design, or the user interface
Software Engineering / Fernando Brito e Abreu 57 17-May-05
Bibliography
[Cla96] E.M. Clarke et al., “Formal Methods: State of the Art and Future Directions,” ACM Computer
Surveys, vol. 28, iss. 4, 1996, pp.
626-643.
[Dor97] M. Christensen, M. Dorfman and R.H. Thayer, eds., Software Engineering, IEEE Computer Society Press, 1997.
[Dor02] M. Christensen, M. Dorfman and R.H. Thayer, eds., Software Engineering, Vol. 1 & Vol. 2, IEEE Computer Society Press, 2002.
[Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001.
[Pre04] R.S. Pressman, Software Engineering: A Practitioner's Approach, sixth ed., McGraw-Hill, 2004.
[Rei96] S.P. Reiss, Software Tools and Environments in The Computer Science and Engineering
Handbook, CRC Press, 1996.
[Som05] I. Sommerville, Software Engineering, seventh ed.,
Addison-Wesley, 2005.
[Was96] A.I. Wasserman, “Toward a Discipline of Software Engineering,”
IEEE Software, vol. 13, iss. 6, November 1996, pp. 23-31.
Related standards
(ECMA55-93) ECMA, TR/55 Reference Model for Frameworks of Software Engineering
Environments, third ed., 1993.
(ECMA69-94) ECMA, TR/69 Reference Model for Project Support Environments, 1994.
(IEEE1175.1-02) IEEE Std 1175.1- 2002, IEEE Guide for CASE Tool Interconnections—Classification and Description, IEEE Press, 2002.
(IEEE1209-92) IEEE Std 1209- 1992, Recommended Practice for
(IEEE1348-95) IEEE Std 1348- 1995, Recommended Practice for the Adoption of CASE Tools, (ISO/IEC 14471), IEEE Press, 1995.
(IEEE12207.0-96) IEEE/EIA
12207.0-1996//ISO/IEC12207:1995, Industry Implementation of Int. Std.
ISO/IEC 12207:95, Standard for Information Technology — Software Life Cycle Processes, IEEE Press, 1996.