赞
踩
Advantages
representations
Architectural Design Decisions
Architectural views
MVC Pattern
Model-View-Controller(MVC pattern)
This pattern is the basis of interaction management in many web-based systems.
It includes three major interconnected components:
- Model: central component of the pattern that directly manages the data, logic and rules of the application.
- View:can be any output representation of information, such as a chart or a diagram.
- Controller: accepts input and converts it to commands for the model or view, enables the interconnection between the views and the model.
Layered Pattern
Layered Pattern: the system functionality is organized into separate layers, and each layer only relies on the facilities and services offered by the layer immediately beneath it.
This layered approach supports the incremental development of systems. As a layer is developed, some of the services provided by that layer may be made available to users.
Performs poorly in the high-performance applications, because it is not efficient to go through multiple layers to fulfil a business request. It is a good choice for situations with a very tight budget and time constraints
Repository Patterns
Client-server Patterns
Pipe and Filter Patterns
Object-oriented view
Traditional view
Process-related view
User interface design creates an effective communication medium between a human and a computer.
The golden rule
The analysis and design process for user interfaces is iterative and can be represented using a spiral model.
Interface analysis
UI design analysis focuses on the users’ goals, and the tasks they perform within a system (the application or product) to achieve those goals
Once interface analysis has been completed, all tasks required by the end-user have been identified in detail
available for
Once you create an operational user interface prototype, it must be evaluated to determine whether it meets the needs of the user.
Software design and implementation is the stage in the software engineering process at which an executable software system is developed.
Implementation Issues
Focus here is not on programming, although this is obviously important. other implementation issues that are often not covered in programming texts:
Testing is intended to show that a program does what it is intended to do and to discover program defects before it is put into use.
When you test software, you execute a program using artificial data.
You check the results of the test run for errors, anomalies or information about the program’s non-functional attributes.
Program testing goals
Validation and defect testing
Testing process goals
Input-output model
Testing is part of a broader process of software verification and validation (V & V)
These two processes are concerned with checking that software being developed meets its specification and delivers the functionality expected by the people paying for the software.
These checking processes start as soon as requirements become available and continue through all stages of the development process.
Verification vs validation
Verification and validation are not the same thing, although they are often confused
V & V confidence
Aim of V & V is to establish confidence that the system is ‘fit for purpose’. That is, the system must be good enough for its intended use
Depends on system’s purpose, user expectations and marketing environmen.
These involve people examining the source representation with the aim of discovering anomalies and defects.
Inspections not require execution of a system so may be used before implementation.
They may be applied to any representation of the system (requirements, design,configuration data, test data, etc.).
They have been shown to be an effective technique for discovering program errors.
Advantages
Disadvantages
Automated testing
Automated test components
Unit test effectiveness
Testing strategies
Partition testing: You identify groups of inputs that have common characteristics and should be processed in the same way. You should choose tests from within each of these groups.
Guideline-based testing: You use testing guidelines to choose test cases. These guidelines reflect previous experience of the kinds of errors that programmers often make when developing components.
We can also use testing guidelines to help choose test cases. It encapsulates knowledge of what kinds of test cases are effective for discovering errors.
Test-driven development (TDD) is an approach to program development in which you inter-leave testing and code development.
Tests are written before code and ‘passing’ the tests is the critical driver of development.
You develop code incrementally, along with a test for that increment. You don’t move on to the next increment until the code that you have developed passes its test.
TDD was introduced as part of agile methods such as Extreme Programming. However, it can also be used in plan-driven development processes.
Benefits
Release testing is the process of testing a particular release of a system that is intended for use outside of the development team.
The primary goal of the release testing process is to convince the supplier of the system that it is good enough for use. Release testing, therefore, has to show that the system delivers its specified functionality, performance and dependability, and that it does not fail during normal use.
Release testing is usually a black-box testing process where tests are only derived from the system specification.
Release testing and system testing
Release testing is a form of system testing.
Important differences:
Requirements-based testing involves examining each requirement and developing a test or tests for it.
Scenario testing is an approach to release testing where you devise typical scenarios of use and use these to develop test cases for the system.
A scenario is a story that describes one way in which the system might be used.
Scenarios should be realistic and real system users should be able to relate to them.
Features tested by scenario
To conduct performance test:
Stress testing
User or customer testing is a stage in the testing process in which users or customers provide input and advice on system testing.
User testing is essential, even when comprehensive system and release testing have been carried out. The reason for this is that influences from the user’s working environment have a major effect on the reliability, performance, usability and robustness of a system. These cannot be replicated in a testing environment.
Agile methods and acceptance testing
In agile methods, the user/customer is part of the development team and is responsible for making decisions on the acceptability of the system.
Tests are defined by the user/customer and are integrated with other tests in that they are run automatically when changes are made.
There is no separate acceptance testing process.
Main problem here is whether or not the embedded user is ‘typical’ and can represent the interests of all system stakeholders
An essential part of software engineering. Projects need to be managed because professional software engineering is always subject to organizational budget and schedule constraints. Ensure that the software project meets and overcomes these constraints as well as delivering high-quality software.
Good management cannot guarantee project success BUT a bad management may result:
Criteria for Project Management
Challenges in Project Management
Manager’s Responsibilities
A Good Project Manager
Risk management involves anticipating risks that might affect the project schedule or the quality of the software being developed, and then taking action to avoid these risks.
Three related categories of risks:
These risk types overlap.
Risk identification
Identify possible project, product, and business risks.
Risk analysis
Assess the likelihood and consequences of these risks.
Risk planning
Plans to address the risk, either by avoiding it or minimizing its effects on the project.
Three categories of strategies
Risk monitoring
Regularly assess the risk and your plans for risk mitigation and revise these when you learn more about the risk.
The software process (and every software project) is populated by stakeholders who can be categorized into one of five constituencies:
People working in a software organization are its greatest assets. Costs a lot to recruit and retain good people. Ensure that the organization gets the best possible return on its investment.
Unfortunately, however, good software engineers are not necessarily good people managers. They have strong technical skills but may lack the softer skills.
Four critical factors in people management:
Motivating People
A project manager, you need to motivate the people that work with you so that they contribute to the best of their abilities. Motivation means organizing the work and the working environment to encourage people to work as effectively as possible.
Maslow (1954) suggests that people are motivated by satisfying their needs.
Personality type also influences motivation.
Four “organizational paradigms” for software engineering teams:
It is clearly impossible for everyone in a large group to work together on a single problem, large teams are usually split into a number of groups.
Putting together a group that has the right balance of technical skills, experience, and personalities is a critical management task.
In a cohesive group, members think of the group as more important than the individuals who are group members.
Benefits of creating a cohesive group:
Good project managers should always try to encourage group cohesiveness
Whether or not a group is effective depends, to some extent, on the nature of the project and the organization doing the work. However, apart from project and organizational issues, there are three generic factors that affect team working:
Many software engineers are motivated primarily by their work. Software development groups, therefore, are often composed of people who have their own ideas about how technical problems should be solved.
A group that has complementary personalities may work better than a group that is selected solely on technical ability.
Organizational Questions to be considered:
It is absolutely essential that group members communicate effectively and efficiently with each other and with other project stakeholders.
The effectiveness and efficiency of communications is influenced by:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。