Mata kuliah Tahun : T0144 – Advanced Topics in Software Engineering : 2010 Pertemuan 6 Software Engineering Tools Learning Outcomes Pada akhir pertemuan ini, diharapkan : Mahasiswa dapat menerapkan penggunaan tools dalam SE untuk mempermudah development (RCS/CASE/etc) 3 Outline Material • Revision Control System – Centralized – Distributed • CASE tools – Case Tools Classifications • • Project Management tools IDE Tools 4 Revision Control Systems • Revision Control Systems also known as Version Control Systems, or Source Code Management (SCM) Systems - is the management of changes to documents, programs, and other information stored as computer files. • It is most commonly used in software development, where a team of people may change the same files. • Changes are usually identified by a number or letter code, termed the "revision number", "revision level", or simply "revision". • For example, an initial set of files is "revision 1". When the first change is made, the resulting set is "revision 2", and so on. Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged. Sample Flow Types of Revision Control Systems • Centralized Server – File Locking Method: Once one developer "checks out" a file, others can read that file, but no one else may change that file until that developer "checks in" the updated version (or cancels the checkout). – Version Merging: The first developer to "check in" changes to the central repository always succeeds. The system provides facilities to merge changes into the central repository, thus preserving the changes from the first developer when the other developers check in. • Distributed: – Distributed revision control (DRCS) takes a peer-to-peer approach, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona-fide repository. Examples of Revision Control Systems • Centralized – – – – CVS – GPL SVN (Subversion) – GPL VSS (Visual Source Safe) – Commercial etc • Distributed – Bazaar - GPL – Git - GPL – Mercurial - GPL CASE Tools • Computer-aided software engineering (CASE) is software to support software development and evolution processes. • Activity automation – – – – – Graphical editors for system model development; Data dictionary to manage design entities; Graphical UI builder for user interface construction; Debuggers to support program fault finding; Automated translators to generate new versions of a program. CASE Technology • Case technology has led to significant improvements in the software process. However, these are not the order of magnitude improvements that were once predicted • Software engineering requires creative thought - this is not readily automated; • Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these. CASE Tools Classification • Classification helps us understand the different types of CASE tools and their support for process activities. • Functional perspective – Tools are classified according to their specific function. • Process perspective – Tools are classified according to process activities that are supported. • Integration perspective – Tools are classified according to their organisation into integrated units. Case Tools Classification Project Management Tools • Usually combines several aspects of project tracking – – – – – – Schedules, milestones, & deadlines Tracking Task scheduling and Task Dependencies Issues & Tickets Tracking Wiki for information sharing Links to Revision Control System Reporting facilities Examples of Project Management Tools • Trac http://trac.edgewall.org/ • Redmine http://www.redmine.org/ • TaskFreak http://taskfreak.net/ • OpenWorkbench http://www.openworkbench.org/ • JIRA http://www.atlassian.com/software/jira/ • OpenProj http://openproj.org/ • Microsoft Project http://www.microsoft.com/project/en/us/default.aspx Integrated Tools • A lot of the tools previously available separately are now available in a single convenient Package. • The trend is for an IDE to support most of the development functions, from designing to writing to debugging to profiling to documenting source code. (i.e. Netbeans) • Some IDE tools have support for UML generation / reverse engineering. • Some IDE tools have support for refactoring built in. References • • • Comparison of Revision Control Software on wikipedia http://en.wikipedia.org/wiki/Comparison_of_revision_control_software Revision Control on wikipedia http://en.wikipedia.org/wiki/Revision_control Software Engineering (8th Edition) - Ian Sommerville – Chapter 4 Publisher: Addison Wesley; 8th edition (June 4, 2006) 16