CEN5011, Fall 1999 1
CEN5011 Software Engineering
Dr. Yi Deng
ECS359, (305) 348-3748
CEN5011, Fall 1999 2
Bottom Lines of Software Project
COST, TIME, QUALITYnot necessarily in that order
CEN5011, Fall 1999 3
Unified Process
• A software development process - A set of activities needed to transform a user's requirements into a software system
– What constitutes a software system? The CODE?
• Also a generic process framework that can be specialized to different types of
– Application problems,
– Application areas,
– Organizations
– Project sizes
• Uses UML
– Relationship between design language, method and process
• UML an integral part of UP
CEN5011, Fall 1999 4
Unified Process - cont’d
• Is Use-Case driven
– Use-Case - a piece of functionality in the system that is visible (or usable) to a user (not necessarily human user)
– All use-cases made up the Use-Case Model, which replaces traditional functional specification.
– Use-case model represents functional specification of the system FOR EACH USER - has important implications
– Not only for requirement specification, but also drives design, implementation, testing, i.e. development process
CEN5011, Fall 1999 5
Unified Process - cont’d
• Is Architecture-Centric
– What is architecture?
– A view of the whole design with the important characteristics made more visible by leaving details aside
– Every product has both FUNCTION and FORM; these two cases must be balanced for a success product
– Use-case corresponds to function, architecture to form
• Relationship and interplay of use-case and architecture
CEN5011, Fall 1999 6
Unified Process - cont’d
• Is Iterative and Incremental
– Issues of complexity and evolution
– Issue of Risks
– Issues of changing requirements, platforms, and technology
– Controlled (planned) iteration vs. random iteration
CEN5011, Fall 1999 7
•Lifecycle of Unified Process
Is a cycle with four phases and their iterations (Fig. 1.3) Inception - seed idea of development is being matured and to
warrant entering the elaboration phase. Use-case model defined Elaboration - architecture is defined Construction Transition - software is turned into the hands of the user community
CEN5011, Fall 1999 8
Four Phases of Unified Process
CEN5011, Fall 1999 9
Lifecycle of Unified Process - cont’d
Each cycle results in a new release - a new product What's in a product
Requirements, use cases, non-functional requirements, test cases, executable code, etc.
A product needs to meet the needs of all important stakeholders, who needs different elements of a product (Fig. 1.4)
Traceability between different models
CEN5011, Fall 1999 10
Products of Stakeholders
CEN5011, Fall 1999 11
Lifecycle of Unified Process - cont’d
Phases within a cycle Phase terminates by a milestone, the availability of a set of
artifacts Purpose of milestone - evaluation of process and make critical
decisions before work can proceed to the next phase. Concept of software baseline Typical iterations of workflow in a cycle (Fig 1.5)
CEN5011, Fall 1999 12
Process Workflow
CEN5011, Fall 1999 13
Key Elements of Software Development
• People - stakeholders
• Project - specialization of process
• Process - set of organized developed activities, template for project
• Product - outcome of project
• Tools - process automation
CEN5011, Fall 1999 14
Key Elements of Development
CEN5011, Fall 1999 15
People
• Factors that affect the effectiveness of people
– Development process affect people
– Project feasibility
– Risk management
– Team structure
– Project schedule
– Project understandability
– Sense of accomplishment
CEN5011, Fall 1999 16
Projects Make the Product
• A project “is” a sequence of changes
• A project “is” a series of iterations
• A project follows an organization pattern
– for people
– for planning
– for management
CEN5011, Fall 1999 17
Product Is More Than Code
• What is a software system? (fig. 2.3)
– Code
– Requirements, tests, sales, production, installation, operation, …
– Different stakeholders sees different parts of the system
• A system has a collection of MODELS
• What is a model?
– An abstraction of a system
– A self-contained view of the system
– The system is in the eye of beholders (or stakeholders)
• System development is a process of modeling building
– Key: what models to build and what relationship holds between models
CEN5011, Fall 1999 18
Multiple Facets of System
CEN5011, Fall 1999 19
Process Directs Projects
• Software development process
– Complete set of activities needed to transform users’ requirements into a consistent set of artifacts that represents a software product and, later, to transform changes in those requirements into a new, consistent set of artifacts
• A process is a template
– In other works, a process is a definition of activities, not their execution
– Process needs to be instantiated or specialized for individual projects
– Should cover entire software lifecycle
CEN5011, Fall 1999 20
Specializing Process
• No universally applicable process
• Why?
– Organizational factors: structure, culture, project organization & management, competence & skill levels, prior experience, etc.
– Domain factors: application domain, e.g. mission critical v.s. word processor, real-time v.s. batch processing, user community, market competition, etc.
– Lifecycle factors: time to market, expected life span, planned future releases, etc.
– Technological factors: programming languages, development tools, databases, middleware, communication & distribution, etc.
• Bottom line: general process needs to be specialized
CEN5011, Fall 1999 21
Why Process?
• Bottom line: software development is a complex, risky, expensive and people-intensive venture
• Mutual understanding of roles, responsibilities, dependence, communication and coordination among developers and customers
• Orderly development
• Improved quality and predictivity of software
• Standardized training
• Repeat-ability of successful projects and continuous organizational improvement
• Improved productivity?
CEN5011, Fall 1999 22
Tools
• Essential to modern, complex development
• Tools impact process
– Formalized development process involves large amount of information and coordination
– Automation is essential
– e.g. software configuration management tools
• Process drive tools
– Process specifies the tool functionality
– Judging feasibility of tools in terms of their support to particular process
• Balance process and tools
– Process drives tool development, tool guides process