Software Engineering (SE)
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. … The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, software construction, software testing, and software maintenance tasks. [Wikipedia]
The Unified Process is an extensible framework which can and should be customized for specific organizations or projects. It has the following basic characteristics:
- Iterative / incremental development - the project is divided into a series of timeboxed iterations.
- Use Case driven - use cases are used to capture the functional requirements.
- Architecture Centric - an architecture sits at the heart of the project
- Risk Focused - requires the project team to focus on addressing the most critical risks early in the project life cycle.
The Unified Modeling Language™ (UML) is an industry-standard language for specifying, visualizing, constructing, and documenting the artifacts of software systems, standardized by the Object Management Group. UML simplifies the complex process of software design by using "blueprints" for software construction. Widespread adoption of UML is one of the factors, enabling the development of Computer Aided Software Engineering (CASE) tools.
Computer Aided Software Engineering (CASE) tools are a class of software environments and programs, used in the phases of analysis, design, development and testing of software applications. They are also used to manage the complete lifecycle of the software enginnering project - define system requirements, create diagrams and models, design classes and database entities, write and debug code, verify and validate increment results, integrate modules, etc.