Begin Kung Ch 1
- What is software engineering?
- Software engineering is focused on the research, education, and application of engineering processes and methods to significantly increase software productivity and software quality while reducing software costs and time to market.
Software Engineering (SWE) and Computer Science(CS) have overlapping concerns, but how could one could generalize the differences between SWE and CS?
Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software, and tools. Software engineers learn much more about creating high-quality software in a systematic, controlled, and efficient manner.
Given thes two sets of issues, which is more applicable to a Computer Scientist and which to a Software Engineer?
- requirements computability
- usability algorithms
- maintainability compilers
- design patterns formal specifications
- estimation machine learning
- scalability queueing theory
What are the software life-cycle activities?
- 1. software development process (the process contains the steps that will transform initial system concept into operational system)
- 2. software quality assurance (did we build the software right? did we build the right software?, test the software.
- 3. software project management (plan, schedule, estimate time and effort, risk management, etc)
List 6 software development processes.
How do we validate that we have built the right software?
- model checking
- goal analysis
- specification inspection
- acceptance (testing phase)
- usability test (testing phase)
How do we verify we have built the software right?
- static analysis
- proofs of correctness
- robustness analysis
- consistency checking
- integration test (testing phase)
- automated test (testing phase)
What are 5 activities associated with Software Project Management?
- 1. effort cost and estimation (rss required, est delivery date)
- 2. planning and scheduling (goals, milestones, assemble teams, schedule deliverables, develop QA plan)
- 3. risk analysis and management (foresee possible risks and develop risk reduction measures)
- 4. administration and coordination (monitor progress, adapt when problems/changes occur)
- 5. configuration management (tool to coordinate changes to requirements, goals, and software; basically tool to manage entire process)
What are the steps in the Waterfall Process Model?
- 1. System Requirements Definition
- 2. Software Requirements Analysis
- 3. Software Design
- 4. Coding & Unit Testing
- 5. Integration & Integration Testing
- 6. Acceptance Testing
- 7. Maintenance
What is notable about the Waterfall Process Model?
It is widely used in the military, and you never move backward in the steps.
What are some pros for the Waterfall Process Model?
- 1. It accommodates updates to large systems that rarely need major changes.
- 2. It permits pipelining of tasks (requirements analysis, design, coding, testing).
- 3. It makes planning, scheduling, and tracking progress simple.
What are some cons for the Waterfall Process Model?
- 1. Project cancellation is rarely mitigated by early achievements in design and analysis, only by late achievements in late code and testing. (projects might be obsolete by completion if it takes too long)
- 2. Early feedback from users is difficult to obtain since early iterations are not available to be examined (process shortfall)
- 3. Strict development stages and milestones make revisiting earlier stages difficult.
Is the Waterfall Process Model even useful?
The sequential approach of the waterfall model is rather old-fashioned but still effective in some circumstances.
Begin Kung Ch 2
- Besides the Waterfall Process Model, list 5 other process models.
- 1. Prototyping Process Model
- 2. Evolutionary Process Model
- 3. Spiral Process Model
- 4. Unified Process Model
- 5. Agile Process Models
Name three Software Development Methodologies.
- 1. Agile Methodology: Scrum
- 2. Agile Methodology: XP
- 3. Agile Methodology: AUM
Describe the Prototyping Process Model.
The prototyping process model employs prototypes to validate the user requirements for new software before progressing too far in the development process. Note that it does not specify high or low fidelity prototypes.
What are the steps in the Prototyping Process Model?
- 1. Initial requirements
- ---loop until customer is satisfied
- 2. Design
- 3. Prototype
- 4. Customer Evaluation
- 5. (if customer isn't satisfied) Review & update
- ---end loop
- 6. Development
- 7. Test
- 8. Maintain
Describe the Evolutionary Process Model.
Like the Prototyping Process Model, prototyping is used to ensure customer's needs are met. But, coding is done gradually over the prototype development. Therefore, the prototypes are less disposable as the process progresses.
What are the steps in the Evolutionary Process Model?
- 1. Prototype version 1 (scope, concept, requirements)
- 2. Prototype version 2 (changes, features, functions, specifications)
- 3. Prototype version 3 (changes, defects, performance)
- n. Prototype FINAL version (total package)
- * note that each step involves respecify->redesign->reevaluate (these are circular)
Describe the Spiral Process Model.
The Spiral Process Model is a variation of the Evolutionary Process Model. It emphasizes extensive risk assessment to allow for early adaptation to changes and identification of problems.
What are the steps in the Spiral Process Model?
- The spiral begins at the center and progresses outward. The plane that contains the spiral can be divided into 4 quadrants:
- Q1. Determining the current phase's objectives, alternatives, and constraints.
- Q2. Analyzing the strategy for achieving this phase's goals from the viewpoint of risk.
- Q3. Putting into practice a solution to reach the Q1 goals in view of the Q2 risks.
- Q4. Assessing the results of the risk-reduction strategies and planning the next phase.
- Each "level" of the spiral considers the following part of the development process:
- 1. Requirements
- 2. Life-cycle
- 3. Development
- 4. Integration and Test Plan
Describe the Unified Process Model.
This iterative approach emphasizes a heavily structured hierarchy of activities and milestones. Task categories sometimes persist throughout several phases of the project, while other task categories occur primarily in one phase.
What are the steps in the Unified Process Model?
- There are not steps per se, but there are four phases:
- inception - validate initial costs and budget
- elaboration - identify problem domain & mitigate risks
- construction - build an operational software system
- transition - validate system & train users
- Each task category occurs during at least one project phase:
- Business Modeling
- Analysis & Design
- Configuration/Change Management
- Project Management
Describe Agile Process Models.
- Agile Process models acknowledge the difficulty in predicting the software development process.
- Agile development is characterized by:
- *small, highly competent development teams
- *principal measure of progress is working code
- *changes in requirements are welcome, even if late
- *developers, customers, and managers are all on the same team
- *software delivery is stressed more than analysis and design
What are Software Development Methodologies?
Unlike the process models, which lay out the phases of software development, software development methodologies detail the actual steps taken to accomplish the software development.
What methodology is used with the Unified Process Model?
The Dynamic Systems Development Method
What are the steps in the Dynamic Systems Development Method?
- 1. Feasibility study - identify risks, determine time constraints, determine resource constraints
- 2. Business study - prioritize requirements; design architecture; plan to build, test, deploy, and support; resolve risks
- 3. Functional Model iteration - agree plan, identify functional prototype, create functional prototype, review functional prototype
- 4. Design & Build iteration - agree plan, identify design prototypes, create design prototype, review design prototype
- 5. Implementation - Implement, train users, user approval & user guidelines, assess impact on business
What is Scrum?
Scrum is an Agile methodology in which prioritized requirements are achieved in strict time intervals with regular team input.
What are the three phases in Scrum?
The pregame phase, the development phase, and the postgame phase.
Describe the three phases in Scrum?
- During the pregame phase, the product backlog lost is developed containing priorities and effort estimates. Planning and high-level design/architecture is worked out in this phase.
- In the development phase, certain tasks from the product backlog list are allocated to a sprint time period (usually about 2 weeks). After the sprint, the product backlog list is updated to remove completed requirements, and tasks that may have arisen are added to the product backlog list. This phase is repeated (or continues) until there are no more requirements on the product backlog list.
- Integration, system testing, documentation, and release are handled in the postgame phase.
What is XP?
XP is an Agile methodology that emphasizes rapid feedback, stressing simplicity, and embracing change.
What are the 6 phases in XP?
- exploration - stories
- planning - stories for next iteration (include priorities and effort estimates)
- iterations-to-release - (pair programming) - analysis - design - planning for testing - testing (continuous integration) (feedback from testing integrated into design)
- productionizing - small release - ALL releases must have customer approval
- maintenance - updated releases
- death - final release
What is AUM?
AUM stands for Agile Unified Methodology. It begins with a brief planning phase (identify requirements and derive use cases). Then there is an iterative phase which continues until final implementation and testing.
What are the two phases in AUM?
- planning phase
- iterative phase
Describe the phases in AUM.
- Planning: acquiring requirements
- deriving use cases from requirements
- allocating use cases & subsystems to iterations
- producing an architectural design
- Iterative: accomodating requirements change
- domain modeling
- user interface design
- behavior modeling & responsibility assignment
- deriving class design diagram
- test-driven, deployment, integration, deployment
Begin Kung Ch 3
- What is stepwise refinement?
- Stepwise refinement is a traditional, top-down approach used to design software.
- 1. Start with initial problem statement
- 2. Break it into a few general steps
- 3. Break each general step into more detailed steps
- 4. Repeat until each step is specific enough to be written in pseudocode
- 5. Translate pseudocode into real code.
What is a traceability matrix?
A traceability matrix is a document used to correlate system requirements and user requirements, or between test cases and system requirements. The former can help identify user requirements that the system doesn't meet or system requirements that the users don't deem necessary. The latter ensures that all system requirements will be adequately tested.
What is UML?
Unified Modeling Language is a graphical modeling language for sketching classes and procedures prior to coding.
Name a few UML diagram types.
- Class Diagram
- Activity Diagram
- Use Case Diagram
- Sequence Diagram
- *note there are 13 diagram types in UML 2.0*
What does a Use Case diagram do?
Models interactions between the software system and the "outside world."
What does an Activity Diagram do?
Models sequential and parallel activities taking place within the software system.
What does a Class Diagram do?
Models the software system's classes as well as their relationships with each other.
What does an Object Diagram do?
Models instances of classes, usually as a means of clarifying the class itself.
What does a Sequence Diagram do?
Models the sequence of interactions between system objects when the order is important.
What does a Communication Diagram do?
Models the means by which objects within the software system interact.
What does a Timing Diagram do?
Models the change in state of system objects over time, usually in response to external events.
What does an Interaction Overview Diagram do?
Models the "big picture" system interactions by tying together Sequence, Communication, Timing Diagrams.
What does Composite Structure Diagram do?
Models how objects work together inside a class to help achieve system goals.
What does Component Diagram do?
Models the reusable, replaceable classes and subsystems within the software system.
What does the Package Diagram do?
Models logically related groups of classes into organized structures.
What does the State Machine Diagram do?
Models the state of system objects and the transitions that may cause the state to change.
What does the Deployment Diagram do?
Models physical configuration of software and hardware that will comprise system's implementation.
---diane stopped at 03...pptx slide 24---