Software engineering Ch. 2 - Software Processes
What is the outcome of a software process activity?
Products or deliverables are the outcome. For example, architectural design has the outcome of a software architecture.
What are pre and post conditions?
Conditions that must hold before and after a process activity has been enacted or a product produced. For example, a consumer may have to approve all requirements beforehand, and then review the product afterwards.
Database design
Design system data structures and how these are represented in a database.
Process Maturity
Focuses on improving process and project management, and good software engineering practice. Rooted in plan-driven development with increased overhead. The primary goal is improved product quality and process predictability.
Agile approach
Focuses on iterative development and reduction of overhead in the software process. Has rapid delivery of functionality and responsiveness to changing requirements.
Defined
Focuses on organization standardization and deployment of processes. Each project has a managed process that is adapted to the project requirements from a defined set of organizational processes.
Waterfall Model
Fundamental process activities of specification, development, validation, and evolution. Represents them as separate process phases such as requirements specification, software design, implementation, and testing. Information from later steps feeds back into earlier steps to be used.
Initial process maturity
Goals associated with the process area are satisfied. For all processes, the scope of work done is explicitly set and communicated
What is the principal validation technique?
It's the most common method for testing software. Typically, this is done using simulated test data. If it's custom software, it's tested using real customer data.
Agile process
planning is incremental, easier to change the process to reflect changing customer requirements.
What are the four fundamental software engineering activities?
Specification Development Validation Evolution
Software Engineering Body of Knowledge (SWEBOK)
Everything you need to know, in order to pass a "software engineering" exam.
Quantitatevly managed
There is an organizational responsibility to use statistical and other methods to control subprocesses.
What are the three major advantages of incremental development over waterfall?
1. Reduced cost for changing the requirements of the software. 2. Easier to get customer feedback on finished work. 3. Earlier delivery of software.
What are the stages of the waterfall model?
1. Requirements analysis and definition. 2.System and software design. 3.Implementation and unit testing. 4.Integration and system testing. 5.Operation and maintenance
What are the stages in the integration+configuration model?
1. Requirements specification. 2.Software discovery and evaluation 3. Requirements refinement 4. Application system configuration 5. Component adaptation and integration.
What are the three types of software components frequently reused?
1. Stand-alone application systems for a particular environment. 2. collections of objects as a package 3. web services developed according to service standards and are available on the internet.
What are the two main problems of the incremental approach?
1. The process is not visible. Managers need regular deliverables to measure progress. 2. System structure tends to degrade as new increments are added. Regular change leads to messy code as new functionality is added in whatever way is possible.
What are the advantages of incremental delivery?
1.Customers can use early increments as prototypes and gain experience that informs requirements for later versions. 2.Customers dont have to wait until the entire system is delivered to use it. 3.It's relatively easy to incorporate changes into the system. 4.As more important parts of the system are delivered first, they receive the most testing beforehand, so failures are less likely in the most important pieces.
When to use the waterfall model
1.Embedded systems where the software has to interact with hardware systems. 2.Critical systems where there is a need for extensive safety and security analysis of the software's specification and design. 3.Large software systems that are part of broader engineering systems developed by several partner companies.
What are the key problems with incremental delivery?
1.It's difficult when the new system is intended to replace an old one. Users need all the functionality of the old one and wont experiment with something unfinished. 2.Identifying common facilities needed by all increments can be difficult until all the parts of the system are finished. 3. There is no complete system specification until the final version is completed. This can scare off large customers who want some solid grounding.
Software design
A description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between components, and the algorithms used.
Software process
A set of related activities that head to the production of a software system. There is no universally applicable software process. They also depend on the four fundamental software engineering activities.
Software Development Life Cycle (SDLC)
A simplified representation of the software process. Each model represents a process from a particular perspective, and thus only provides partial information about that process.
System prototyping
A version of the system/part of the system is quickly developed to check the customers requirements and the feasibility of design decisions.
What four activities make up the design process for information systems?
Architectual design Database design Interface design Component selection and design
Optimizing
At this highest level, the organization must use the process and product measurements to drive process improvement. Trends must be analyzed and the processes adapted to changing business needs.
When is incremental development a better choice than waterfall?
Better for systems whose requirements are likely to change during the development process.
What are the three stages in the testing process?
Component testing - Each individual piece of the system is tested indepdendently System testing - All the components are integrated and tested together to find errors from unanticipated interactions. Customer testing - The system is tested by the system customer, rather than with simulated test data. This reveals errors/ omissions in the system requirements because of difference between real/test data.
Waterfall model problems
Inflexible partitioning makes it difficult to respond to changing customer requirements. Therefore, only use it when requirements are well understood and changes are limited during design process. It's mostly used for large systems engineering projects, where the system is developed at several sites. In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.
What are the five levels of process maturity?
Initial Managed Defined Quantitatevly managed Optimizing
What can a prototype help with in the system design process?
It can be used to explore software solutions and in the development of a user interface for the system.
What can a prototype help with in the requirements engineering process?
It can help with the elicitation and validation of system requirements
What makes up the software platform?
It includes to operating system, database, middleware, and other application systems.
The waterfall model is an example of what?
It is an example of a plan-driven process. You plan and schedule all of the process activities before starting development
What are the three stages of process maturity's CYCLICAL model?
Process measurement - Measure one or more attributes of the software process/ product to make a baseline. Process analysis - The current process is assessed, identifying weaknesses and bottlenecks Process change - changes are proposed and introduced to address weaknesses.
Reuse-oriented engineering advantages
Reduce the amount of software to be developed, reducing costs and risks. Also tends to lead to faster development of software.
Integration and configuration model
Relies on the availability of reusable components or systems. Development process focuses on configuring these components for use in a new setting and integrating them into a system.
Software verification and validation (V&V)
Shows that a system conforms to its specification and meets the expectations of the system customer.
Incremental DELIVERY
System increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance.
Software platform
The environment in which the software will execute
Architectural design
The overall structure of the system, principal components, their relationships, etc.
Change tolerance
The process and software are designed so that changes can be easily made to the system. Typically, this involves incremental development.
What is software specification/requirements engineering?
The process of understanding and defining what services are required from the system, and identifying the constraints on the system's operation and development. (What do we need the system to do, and under what constraints must we make it/ the system operate under?)
Change anticipation
The software process includes activities that predict possible changes before rework is required. For example, creating a prototype system to experiment with and refine requirements.
Incremental development model
This approach interleaves the activities of specification, development, and validation. System is developed as a series of versions, with each version adding functionality to the previous version.
What are the three main SDLC models?
Waterfall model Incremental development model Integration and configuration model.
Plan driven process
all the process activities are planned in advance and progress is measure against the plan
Certified Software Development Professional (CSDP)
an old certification that showed you were an expert in the field. The goal was to make software engineering one step closer to being recognized legally as a profession. The CSDP didn't really go anywhere, and software engineering isn't recognized as an engineer nor as a profession in the U.S.
managed process maturity
goals associated with the process area are met, and organizational policies are in place that define when each process should be used.
Interface design
how components interact with each other or with other users.