Software Engineering Tools and Methods Fernando Brito e Abreu (fba@di.fct.unl.pt) 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 Tools and Methods Software Quality Software Engineering / Fernando Brito e Abreu 2 1
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 Software Engineering / Fernando Brito e Abreu 3 Tool advantages Automation of repetitive, well-defined actions making software engineering more systematic Reducing the cognitive load on the sw engineer who is then free to concentrate on creative aspects Software Engineering / Fernando Brito e Abreu 4 2
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 Software Engineering / Fernando Brito e Abreu 5 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 6 3
Software Requirements Tools Requirements modeling tools Case study: Software Engineering / Fernando Brito e Abreu 7 Software Requirements Tools Requirement traceability tools Become increasingly important as the complexity of software grows Are relevant in other life cycle processes besides requirements modeling Software Engineering / Fernando Brito e Abreu 8 4
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 Software Engineering / Fernando Brito e Abreu 9 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 the UML tool marketplace Software Engineering / Fernando Brito e Abreu 10 5
Software Design Tools UML tools IBM / Rational Rose Objecteering Together Control Center Argo UML Software Engineering / Fernando Brito e Abreu 11 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 Software Engineering / Fernando Brito e Abreu 12 6
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 Engineering / Fernando Brito e Abreu 13 Software Construction Tools Compilers and code generators Traditionally, compilers have been noninteractive 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 14 7
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 Engineering / Fernando Brito e Abreu 15 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 16 8
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 Software Engineering / Fernando Brito e Abreu 17 Software Testing Tools Test generators Assist in the development of test cases Software Engineering / Fernando Brito e Abreu 18 9
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 Engineering / Fernando Brito e Abreu 19 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 20 10
Software Testing Tools Test management tools Provide support for all aspects of the software testing process Software Engineering / Fernando Brito e Abreu 21 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 22 11
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 Software Engineering / Fernando Brito e Abreu 23 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 24 12
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 Engineering / Fernando Brito e Abreu 25 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 26 13
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 Software Engineering / Fernando Brito e Abreu 27 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 28 14
Sw Configuration Management Tools Version management tools Involved in the management of multiple versions of a product Software Engineering / Fernando Brito e Abreu 29 Sw Configuration Management Tools Release and build tools Used to manage the tasks of software release and build Software Engineering / Fernando Brito e Abreu 30 15
Sw Configuration Management Tools Installation tools Used for configuring the installation of software products Software Engineering / Fernando Brito e Abreu 31 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 Software Engineering / Fernando Brito e Abreu 32 16
Sw Engineering Management Tools Project planning and tracking tools Used in software project effort measurement and cost estimation, as well as project scheduling Software Engineering / Fernando Brito e Abreu 33 Sw Engineering Management Tools Risk management tools Used in identifying, estimating, and monitoring risks Software Engineering / Fernando Brito e Abreu 34 17
Sw Engineering Management Tools Measurement tools Assist in performing the activities related to the software measurement program Software Engineering / Fernando Brito e Abreu 35 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 Software Engineering / Fernando Brito e Abreu 36 18
Software Engineering Process Tools Process modeling tools Used to model and investigate software engineering processes Software Engineering / Fernando Brito e Abreu 37 Software Engineering Process Tools Process management tools Provide support for software engineering management Software Engineering / Fernando Brito e Abreu 38 19
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 / Fernando Brito e Abreu 39 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 40 20
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 Software Engineering / Fernando Brito e Abreu 41 Software Quality Tools Review and audit tools Used to support reviews and audits Software Engineering / Fernando Brito e Abreu 42 21
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 Software Engineering / Fernando Brito e Abreu 43 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 Software Engineering / Fernando Brito e Abreu 44 22
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 Software Engineering / Fernando Brito e Abreu 45 Miscellaneous Tools Issues Meta-tools Meta-tools generate other tools; compilercompilers are the classic example. Software Engineering / Fernando Brito e Abreu 46 23
Miscellaneous Tools Issues Tool evaluation Due to the continuous evolution of software engineering tools, tool evaluation is an essential topic Software Engineering / Fernando Brito e Abreu 47 Summary Software Engineering Tools Software Engineering Methods Heuristic Methods Formal Methods Prototyping Methods Software Engineering / Fernando Brito e Abreu 48 24
Software Engineering Methods Heuristic methods - informal approaches Formal methods - mathematically based approaches Prototyping methods - approaches based on various forms of prototyping Software Engineering / Fernando Brito e Abreu 49 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 and Software Design This is perhaps the worst part of the SWEBOK Software Engineering / Fernando Brito e Abreu 50 25
Summary Software Engineering Methods Heuristic Methods Formal Methods Prototyping Methods Software Engineering / Fernando Brito e Abreu 51 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 The system is viewed as a collection of objects that integrate data and behavior Domain-specific methods Includes specialized methods for developing systems which involve realtime, safety, or security aspects Software Engineering / Fernando Brito e Abreu 52 26
Summary Software Engineering Methods Heuristic Methods Formal Methods Prototyping Methods Software Engineering / Fernando Brito e Abreu 53 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 Verification/proving properties Refers to theorem proving and model checking Software Engineering / Fernando Brito e Abreu 54 27
Summary Software Engineering Methods Heuristic Methods Formal Methods Prototyping Methods Software Engineering / Fernando Brito e Abreu 55 Prototyping Methods Include the following aspects: Prototyping styles Throwaway, evolutionary, and executable specification Prototyping target E.g. requirements, architectural design, or the user interface Prototyping evaluation techniques Covers the ways in which the results of a prototype exercise are used Software Engineering / Fernando Brito e Abreu 56 28
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. Software Engineering / Fernando Brito e Abreu 57 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 the Evaluation and Selection of CASE Tools, (ISO/IEC 14102, 1995), IEEE Press, 1992. (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. Software Engineering / Fernando Brito e Abreu 58 29