Software Engineering - Ch. 2, Software Engineering - Ch. 3, Software Engineering - Ch. 4, Software Engineering - Ch. 5, Software Engineering - Ch. 6, Software Engineering final
structural model that demonstrates the other systems in the environment
Context model
shows how a system is used in a broader business process
Process model
What is test-first development?
Test first Development is an automated unit test framework that is used to write tests for a new piece of functionality before that functionality itself is implemented.
What is the most important advantage of a client-server architecture?
The principal advantage of this model is that servers can be distributed across a network. General functionality (e.g., a printing service) can be available to all clients and does not need to be implemented by all services.
Development teams use agile methods and maintenance teams use plan-driven methods, or vice-versa
handover problems
What is described in a context model?
Context models are used to illustrate the operational context of a system - they show what lies outside the system boundaries. Social and organizational concerns may affect the decision on where to position system boundaries.
Why are iterations usually limited when the waterfall model is used?
Cost typically constrains iterations of the waterfall model. Waterfall is document-driven and rework and approval of documents is costly.
The philosophy behind agile methods is reflected in the agile manifesto. List and briefly describe the 5 principles of agile methods.
Customer Involvement - This is important because agile works close to the customer; feedback is important. They provide and prioritize new system requirements. Incremental delivery - short 2 - 4 week sprints to bring in new features to an application or system. The customer specifies the requirements for the next delivery. People not process - it is about the who not the what. It should be customer focused. Skills of the development team should be recognized and exploited. Embrace change - If the user or customer doesn't like something, embrace the change they request. System requirements will change, it is important to design the system to accommodate that. Maintain simplicity - Focus on simplicity in the software and the process. Agile doesn't work well with complexity. This can lead to carrying over into the next sprint and not completing work.
List the 5 principles of agile methods.
Customer involvement Incremental delivery People not process Embrace change Maintain simplicity
What are transaction-processing applications?
Database-centered applications that process user requests for information and update the information in the database. They are organized so that transactions cannot interfere with each other and the integrity of the database is maintained.
What is the distinction between functional and non-functional requirements?
Functional Requirements: These are statements of services the system should provide, how the system should react to particular inputs, and how the system should behave in particular situations. Non-Functional Requirements: These are constraints on the services or functions offered by the system. They include timing constraints, development process constraints, and constraints imposed by standards.
List 4 fundamental questions that should be addressed in architectural design? (any 4 from these)
How will the system be distributed across hardware cores or processors? What architectural patterns or styles might be used? How should the architecture of the system be documents? What will be the fundamental approach used to structure the system?
Completeness (As it relates to software engineering and what we are studying)
It is one of the checks that is made during Requirements validation. The requirements document should include requirements that define all functions and the constraints intended by the system user.
Why is it increasingly irrelevant to distinguish between software development and evolution?
It should be seen that software engineering or development is an evolutionary process where software is continually changed over its lifetime in response to changing requirements and customer needs.
One of the standard architectural patterns is named MVC. What does MVC stand for?
Model-View-Controller
Name three important agile techniques that were introduced in extreme programming?
New version may be built several times per day. Increments are delivered to customers every two weeks. All tests must be run for every build and the build is only accepted if tests run successfully.
The programs will be coded in Java
non-functional
The system development process will use SCRUM
non-functional
The system must be available 98 percent of the time
non-functional
Secure use of the organization's systems
operational security
The stage where operational software is used with no further changes
phase-out
Ensuring that software is delivered on time, on budget, and meets expectations
project management
Developing systems that can resist malicious attacks
security engineering
The stage where operational software has bugs fixed with no new functionality.
servicing
Shows activities involved in a process
Activity model
What 5 things should be included in a scenario?
1. A description of what the system and users expect when the scenario starts. 2. A description of the normal flow of events in the scenario. 3. A description of what can go wrong and how resulting problems can be handled. 4. Information about other activities that might be going on at the same time. 5. A description of the system state when the scenario ends.
Give 5 reasons why eliciting requirements is difficult.
1. Stakeholders often don't know what they want from a computer system except in the most general terms 2. Stakeholders in a system naturally express requirements in their own terms and with implicit knowledge of their own work. 3. Different stakeholders, with diverse requirements, may express their requirements in different ways. Requirements engineers have to discover all potential sources of requirements and discover commonalities and conflict. 4. Political factors may influence the requirements of a system. Managers may demand specific system requirements because these will allow them to increase their influence in the organization. 5. The economic and business environment in which the analysis takes place is dynamic. It inevitably changes during the analysis process.
What 5 checks should be applied during requirements validation?
1. Validity 2. Consistency 3. Completeness 4. Realism 5. Verifiability
What is a Scrum sprint?
A Scrum sprint is a planning unit in which the work to be done is assessed, features are selected for development, and the software is implemented; usually within a 2 - 4 week interval.
What is the fundamental characteristic of a repository architecture?
A repository architecture is a system that will allow several interfacing components to share the same data. Each component interfaces the same dataset that is utilized system wide. They have subsystems which must exchange data: - Shared data is held in a central database or repository and may be accessed by all sub-systems; -Each sub-system maintains its own database and passes data explicitly to other sub-systems.
What is illustrated in a UML sequence diagram?
A sequence of interactions between the actors in a system's environment and the objects in the system itself. The sequence of interactions describes the implementation of a system feature or function.
What is an architectural pattern?
A stylized abstract description of good practice in architectural design that has been tried and tested in different systems and environments. The pattern should include information on when it is and is not appropriate to use that architectural design. It may be represented using tabular and graphical descriptions.
Briefly describe pipe and filter architecture?
A system is decomposed into a set of functional transformations that consume inputs and produce outputs. Data flows from one function to another (the pipeline) and is transformed as it passes through the sequence.
What are the principal components of a textual use-case description?
A tabular format seems to be the most useful when giving a description of the components in a use-case diagram. This is typically a simple textual description, a structured description in a table, or a sequence diagram. It usually includes actors which can be people or other systems, a description, a response, data, stimulus, and comments as well.
What UML diagram types do you need to represent the essential features of a system?
Activity diagrams, Use case diagrams, Sequence diagrams, Class diagrams, and State diagrams are all essential features of a system. Activity diagrams show the activities involved in a process. Use case show the interactions between a system and its environment. Sequence diagrams show interactions between actors and the system and between system components. Class diagrams show the object classes in the system and the associations between other classes. State diagrams show how the system reacts to internal and external events.
What are the benefits/problems with agile software development?
Agile is very useful to many companies now a days. It is widely used as the organizational process for new and medium sized companies for its flexibility and rapid deployment of software. Benefits - 1. It has quick and rapid deployment 2. You can get customer feedback quickly and make changes as needed. 3. Bugs seen on previous deployments can be addressed and maintained throughout the next sprint. So issues are found on the get go. Problems - 1. Informality of agile development is incompatible with a legalistic approach to contract definitions seen in large companies. 2. It's more appropriate for new software rather than trying to maintain software in a large company. 3. Won't work well with large team. Best used in small, co-located teams.
What good is a software architecture document?
All of these: It is a tool for communicating with stakeholders in the early design phase of a project, In the early stages of planning, it encourages a detailed analysis of the system, and In large organizations with large systems it is helpful with large-scale reuse.
What perspectives should be used for developing models of a software system?
An external perspective should be used where you model the context or environment of the system. You should also have an interaction perspective, where you model the interactions between a system and its environment, or between the components of a system. It is also keen to have a structural perspective, where you model the organization of a system or the structure of the data that is processed by the system. Last but not least, a behavioral perspective, where you model the dynamic behavior of the system and how it responds to events.
identifies the major components of a system and their interaction
Architectural design
List 4 questions that should be asked when deciding whether or not to adopt an agile method of software development.
Are you prepared to change the way you make decisions on scope, budget, and the timeline of the sprint? Are you prepared to potentially restructure your delivery organization? Are you prepared to make technical investments alongside the business and organizational ones? Are customers ready to receive changes quickly? If there are third party vendors involved, can they keep up with your changes?
shows what happens, or what is supposed to happen, when a system responds to a stimulus
Behavior model
What are the fundamental activities that are common to all software processes?
Common activities include specification, design and implementation, validation, and evolution Specification is determining what the system will do. Design/Implementation refers to organizing the system and implementing it. Validation is checking that what you are creating is doing what the customer wants it to do. Evolution is changing the system in response to change in customer needs.
makes it more difficult to design object class tests
Inheritance
What are the identified levels in the SEI's Capability Maturity Model?
Initial, Managed, Defined, Quantitatively managed, and Optimizing are the 5 levels in the Capability maturity Model 1. Initial - goals associated with the process are satisfied, and for all processes the scope of the work to be performed is explicitly set out and communicated to the team members. 2. managed - the goals associated with the process area are met, and the organizational policies are in place that define when each process should be used. There must be documented project plans that define the project goals. Resource management and process monitoring procedures must be in place across the institution. 3 defined - this level focuses on organizational standardization and deployment of processes 4. Quantitatively managed - at this level, there is an organizational responsibility to use statistical and other quantitative methods to control sub processes. 5. Optimizing - at this level the organization must use the process and product measurements to drive process improvement.
What are the two ways in which an architectural model of a system may be used?
It can facilitate discussion about the system design or it can be a way of documenting an architecture that has been designed. The first way is useful because it can be useful to communicate with system stakeholders and project planning because it is not cluttered with detail. Stakeholders can relate and understand an abstract view of the system. The second way's aim is to produce a complete system model that shows the different components in a system, their interfaces and their connections.
What is the basic assumption that underlies event-driven modelling?
It is based on the assumption that a system has a finite number of states and that events (stimuli) may cause a transition from one state to another. Event-driven modeling shows how a system responds to external and internal events.
How is generalization used to simplify the models of a system with many similar objects?
Often you will see generalization used in modeling systems by examining the classes in a system to see if there is scope for generalization. If changes are proposed, then you do not have to look at all classes in the system to see if they are affected by the change. Inheritance mechanisms are used in object-oriented languages to implement generalization. The attributes and operations with higher-level classes are also associated with the lower-level classes. The lower-level classes are subclasses that inherit the attribute and operations of their superclass. You can then add more specific attributes to the sub classes.
What are the 3 stages in the requirements change management process?
Once you have an identified problem. The three stages you go through is Problem Analysis and Change Specification, Change Analysis and Cost, and Change Implementation. These are the three stages that lead to revised requirements.
Other than MVC, select 3 of the architectural patterns discussed in this class.
Pipe-and-Filter, Layered, Repository
For what types of system are agile approaches to development particularly likely to be successful?
Product Development and Custom system development. Product development is where a software company develops a small to medium-sized product for sale. Virtually all software products and apps are now developed using an agile approach. Custom System development is within an organization. It is usually successful where there is a clear commitment from the customer to become involved in the development process and where there are few external stakeholders and regulations that affect the software.
List and briefly describe 3 types of non-functional requirement.
Product, Organizational, and External Requirements Product Requirements: These requirements specify or constrain the runtime behavior of the software. Examples include performance requirements for how fast the system must execute and how much memory it requires; reliability requirements that set out the acceptable failure rate; security requirements; and usability requirements. Organizational Requirements: These requirements are broad system requirements derived from policies and procedures in the customer's and developer's organizations. Examples include operational process requirements that define how the system will be used; development process requirements that specify the programming language; the development environment or process standards to be used; and environmental requirements that specify the operating environment of the system. External Requirements: This broad heading covers all requirements that are derived from factors external to the system and its development process. These may include regulatory requirements that must be followed to ensure that the system operates within the law; and the ethical requirements that ensure that the system will be acceptable to its users and the general public.
What are the possible problems of test-first development?
Programmers prefer programming to testing. So shortcuts might be made in testing, therefore not all grounds are covered and bugs might come up. Some tests might also be very difficult to write incrementally. A complex user-interface is often difficult to write unit tests for.
What are the principal requirements engineering activities?
Requirements elicitation and analysis, Requirements specification, and Requirements validation, and Feasibility Study are the four main activities in the requirements engineering process. Elicitation and analysis - is the process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis, and so on. Specification - the activity of translating the information gathered during requirements analysis into a document that defines a set of requirements. Two types of requirements may be included in this document. Validation - this activity checks the requirements for realism, consistency, and completeness. Errors are inevitably discovered, and then must be modified to correct the issues.
What are the 3 principal stages of the requirements engineering process?
Requirements elicitation, Requirements specification, and Requirements validation are three principal stages.
List three requirements validation techniques?
Requirements reviews - Systematic manual analysis of the requirements Prototyping - Using an executable model of the system to check requirements. Test-case generation -Developing tests for requirements to check testability.
What are the development stages in integration and configuration?
Requirements specification, Software discovery/evaluation, Requirements refinement, Application system configuration, and Component adaptation and integration Requirements specification - initial requirements for the system are proposed. They don't have to be elaborated in detail but should include brief descriptions of essential requirements and desirable system features. Software discovery and evaluation - given an outline of the software requirements, a search is made for components and systems that provide the functionality required. Requirements Refinement - requirements are refined using information about the reusable components and applications that have been discovered. Application System Configuration - if an off-the-shelf application system that meets the requirements is available, it may then be configured for use to create the new system. Component adaptation and integration - if there is no off-the-shelf system, individual reusable components may be modified and new components may be developed. They are then integrated to create the system.
Why has the Scrum agile method been widely adopted in preference to methods such as XP?
Scrum Agile methods focus on providing a framework for agile project organization, and it does not mandate the use of specific development practices such as pair programming and test-first development. This means that it can be more easily integrated with existing practice in a company.
Shows interaction between actors and the system
Sequence model
What are the advantages of explicitly designing and documenting a software architecture?
Stakeholder communication, System analysis, and Large-scale reuse are three different advantages of explicit architecture. Architecture may be used as a focus of discussion by system stakeholders. When it comes to system analysis, this means that analysis of whether the system can meet its non-functional requirements is possible. The architecture also may be reusable across a range of systems.
shows how the system reacts to internal and external events
State model
What are the fundamental architectural views proposed in Krutchen's 4+ 1 model?
The 4 + 1 Krutchen's model refers to the 4 views: Logical view: which shows the key abstractions in the system as objects or object classes. Process view: which shows how, at run-time, the system is composed of interacting processes. Development view: which shows how the software is decomposed for development. Physical view: which shows the system hardware and how software components are distributed across the processors in the system. The + 1 refers to related using use cases or scenarios.
What are the three benefits of incremental development, compared to the waterfall model?
The cost of implementing requirements changes is reduced. It is easier to get customer feedback on the development work that has been done. Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included.
Explain why it is important to make a distinction between developing user requirements and developing system requirements in the requirements engineering process.
The distinction is to facilitate communication depending on the audience. Users may not understand the technical jargon in system requirements and developers need more detail than the user documentation.
What are the barriers to introducing agile methods into large companies?
The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. Agile methods are most appropriate for new software development rather than software maintenance that might come with large companies. Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams.
What are the principal functions of the 4 layers in a generic information system architecture?
The principal functions of a generic information system architecture include user interface, user communications, information retrieval, and system database. User interface is where the user will operate. User communications layer handles all input and output from the user interface. Information retrieval layer includes application specific logic for accessing and updating the database. Database is where data is stored that we can access for later use.
What are the two different approaches to process improvement and change that have been proposed?
The process maturity approach and the agile approach. Process Maturity - has focused on improving process and project management and introducing good software engineering practice into an organization. Agile - focuses on iterative development and the reduction of overheads in software process. Agile focuses on rapid delivery of functionality and responsive adjustments to customer needs.
What are the claimed benefits of model-driven engineering?
The pros to model-driven engineering are that it allows systems to be considered at higher levels of abstraction and generating code automatically means that it is cheaper to adapt systems to new platforms.
What is the distinction between the terms ʼshallʼ and ʻshouldʼ in a user requirements document, which is written in natural language?
The term 'shall' is used in verifiable non-functional requirements and 'should' is used for goals; which is the general intention of the user such as ease of use in non-functional requirements. 'Should' is usually written in natural language.
What are the advantages of using incremental development and delivery?
There are four advantages according to our book. 1. Customers can use the early increments as prototypes and gain experience that informs their requirements for later system increments. Unlike prototypes, these are part of the real system, so there is no relearning when the complete system is available. 2. Customers do not have to wait until the entire system is delivered before they can gain value from it. The first increment satisfies the most critical needs. 3. The process maintains the benefits of incremental development in that it should be relatively easy to incorporate changes into the system. 4. As the highest priority services are delivered first and later increments the integrated, the most important system services receive the most testing. This means that customers are less likely to encounter software failures in the most important parts of the system.
What are the three types of abstract system model that are recommended by the MDA method?
There is the CIM (Computation Independent Model), PIM (Platform Independent Model), and the PSM (Platform Specific Model). CIMs show the important domain abstractions used in a system. CIMs are sometimes called domain models. PIMs show the operation of the system without reference to its implementation. The PIMs are usually described using UML models that show the static system structure and how it responds to external and internal events. PSMs are transformations of the platform-independent model with a separate PSM for each application platform. In principle, there may be layers of PSM, with each layer adding some platform-specific detail.
List 3 generic software process models and briefly describe a project where each would be better suited for use.
There is the waterfall model, integration/configuration model, and Incremental Development model Waterfall is plan driven, with separate and distinct phases of specification development. It is used in large systems engineering projects where it is developed at several places. Integration/Configuration - relies on the availability of reusable components or systems. If you already have a standard system that you can pull useful components from to implement a new system this would be beneficial. Incremental development - With this, specification development, and validation are interleaved, and can be plan driven or agile. It is best used when working close to a customer since its easier to get customer feedback. This would work well on a new system that might be used to replace an old system where the customers can be a user group for "testing" purposes. The most critical functions of this new system can be used by them and new features can be added as you go.
Non-functional requirements (As it relates to software engineering and what we are studying)
These are constraints on the services or functions offered by the system. They include timing constraints, constraints on the development process, and constraints imposed by standards. Non-functional requirements often apply to the system as a whole rather than individual system features or services.
Functional Requirements (As it relates to software engineering and what we are studying)
These are statements of services the system should provide, how the system should react to particular inputs, and how the system should behave in particular situations. In some cases, the functional requirements may also explicitly state what the system should not do.
How are activity diagrams used in describing the context of use of a system?
They may be used to define business process models. They show activities in a process and the flow of control from one activity to another. The start of a process is indicated by a filled circle, the end by a filled circle inside another circle. Rectangles with round corners represent activities, that is, the specific subprocesses that must be carried out. You may include objects in activity charts. Arrows represent the flow of work from one activity to another, and a solid bar indicates activity coordination. When the flow from more than one activity leads to a solid bar, then all of these activities must be complete before progress is possible.
a set of different diagram types that may be used to model software systems
UML
shows interaction between a system and its environment
Use Case
Select diagrams that your textbook author considers to be the essential UML diagrams needed to describe any software system.
Use Case, Sequence, Class, Activity, and State diagrams
Use Case (As it relates to software engineering and what we are studying)
Use case is a type of UML diagram. It shows the interactions between a system and its environment.
What are user requirements and system requirements?
User Requirements and System Requirements User: Statements in natural language and diagrams of the services the system provides and its operational constraints that are written for customers. System: A structured document setting out detailed descriptions of the system's functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor.
User Requirements (As it relates to software engineering and what we are studying)
User requirements are diagrams or statements of the services the system provides and its operational constraints that are written for customers. This can be written on cards (tasks) by a project manager for developers and put in the product backlog.
Are we building the project right?
Verification
List 3 generic process models that are used in software engineering.
Waterfall Model, Incremental Development Model, and the Integration/Configuration Model Waterfall is a plan driven model. Separate and distinct phases of specification development. In the Incremental development model specification, development, and validation are interleaved. It can also be plan driven or agile. Integration/Configuration relies on the availability of reusable components or systems.
What are the shared characteristics of different agile methods of software development?
Whether it is Plan-Based or Agile, both require Requirements Engineering and Design and Implementation steps in their development. After Design and implementation, both will go back to the Requirements Engineering process.
A systematic way to estimate the effort required to develop a system
algorithmic cost model
Designed to resist attack
application security
Triggers the software evolution process
change request
A work product delivered to the customer
deliverable
The stage where operational software is updated with new functionality
evolution
Each student will be identified with their 6-digit ID number
functional
Students can view grades
functional
The system will generate management reports for administration officials
functional
Configured to resist attack
infrastructure security
Older systems with languages and technology no longer used for new development
legacy
Points in a project schedule to assess progress
milestones
Grades must remain secure
non-functional