This is our last lecture before the course revision classes. In this lecture, we will discuss a number of topics that do not cover in the textbook. They include:
- Software Development Professional - Certification
- Software Development Professional - Ethics and Practices
- Code Complexity Measurement
The followings links let you probe further for the various topics in this lecture.
Something more that I want to let you konw (maybe good to you):
Comments Off
In this lecture, we will study methodologies as guidance for the project manager to select and customize the methods in software engineering to the specific project environment. A software engineering methodology is a collection of methods, best practices, guidelines, templates and tools for developing and managing a software system. In particular, we will cover the following methodologies:
- Royce’s Methodology
- Rational Unified Process (RUP)
- SSADM
- PRINCE2
- Extreme Programming (XP)
Your actions before next class: Read Chapter 16 Methodologies: Putting It All Together.
The followings are what I suggest for you to probe further about various topics in this lecture.
Comments Off
In this lecture, we will revisit the activities described in previous lectures from the perspective of software life cycle modeling. Software life cycle models enable managers and developers to deal with the complexity of the process of developing software. We will study some well-known software life cycle models that help us better understand, measure, and control the software development process. Those models make the software development activities and their dependencies visible and manageable.
We will also look at the Capability Maturity Model (CMM), which is a well-known method to characterize the maturity of software life cycle models. CMM provides a way to assess the capability of an organization based on its process maturity. The maturity level can be used to predict the outcome of future software projects run by the organization. The CMM also provides a path for an organization to improve its process maturity.
Your actions before next class: Read Chapter 15 Software Life Cycle of the textbook.
2 Comments
The previous lecture covered change management dealing with the managerial aspect of software engineering. In this lecture, we continue with a managerial topic, namely project management. It is possible to devote a whole course to project management. Our treatment on the subject will therefore be quite brief.
We will focus on management of a software project and the role of software project manager. The following lists the main topics in this lecture.
- Role of a Project Manager
- Project Development Phrases
- Project Development Activities
- Project Organization
- Risk Management
Your actions before next class: Read Chapter 14 Project Management and Chapter 3 Project Organization and Communication of the textbook.
2 Comments
In this lecture, we will start to learn Software Configuration Management, or SCM in short. SCM is the discipline of monitoring and controlling change in the evolution of software system. More specifically, you will learn the following concepts and activities in the process of SCM:
- Configuration item identification
- Promotion management
- Release management
- Branch management
- Variant management
- Change management
Your actions before next class: Read Chapter 13 Configuration Management of the textbook.
The following lists seven software configuration management tools. Some of them offer test drive to play with.
Build and release management tools:
Comments Off
In this lecture, we will continue to learn Software Testing. It covers System Testing, Regression Testing, and Documenting Testing. We will also have a brief touch on how JUnit is used to automate unit testing in Java.
While unit and integration testing focus on finding faults in individual components and the interfaces between the components, system testing ensures that the complete system complies with the functional and nonfunctional requirements. System testing includes functional testing, performance testing, pilot testing, acceptance testing, and installation testing.
Regression testing is to ensure that a program has not regressed; the functionality that was working yesterday is still working today. In other word, regression testing is to ensure that we do not introduce new bugs while removing existing bugs. A program still works correctly after changes were made to it.
Suggested Readings on JUnit:
Some Tools for Performance Testing :
Some Tools for Testing Automation
Comments Off