





















































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Master Software Engineering Principles with this comprehensive study guide. Covers SDLC, Agile, Waterfall, requirements, UML, and project management. software engineering study, SDLC guide, agile methodology, waterfall model, requirements engineering, UML diagrams, project management, risk management, user interface design, software process, computer science exam, engineering study guide, SE principles
Typology: Exams
1 / 61
This page cannot be seen from the preview
Don't miss anything!






















































1.Software engineering - answerengineering discipline that is concerned with all aspects of software production (Design, development and maintenance)
2.Good software should deliver the - answerrequired functionality and performance to the user and should be maintainable, dependable and usable
3.Software Eng vs System Eng vs Computer Science - answerComputer science focuses on theory and fundamentals Software engineering is concerned with the practicalities of developing and delivering useful software. System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.
4.Good software requires good programming, but remember: - answerProgramming quality is the means to the END not the END ITSELF
5.The CRAFT of software development is to select the appropriate methods for each project and apply them - answerEFFECTIVELY
6.Functionality, Cost, Time - answertrade off
7.Main Stakeholders - answer- Clients
8.Who is the client? - answerThe person for whom the software development team creates the software The person who provides resources and expects some product in return Often a member of the funding organization
9.Who is the customer? - answerThe person who buys the software or selects it for use in their organization
10.Who is the User? - answerThe person who actually uses the software Customer = user in some cases
11.How to minimize risks? - answerFeasibility study: whether to begin a project or not Separation of requirements ( = what client want) from design (how the developers meet those requirements) Milestones: progress reports or releases Acceptance (client tests the software to see if it meets the requirements) and user testing (done jointly with developers) Handover: ensure the client is empowered to operate and maintain the product
12.Visibility - answerThe people who take responsibility must know what is happening
13.Professional Responsibility - answerCompetence: Software that does not work effectively can destroy an organization. Confidentiality: Software developers and systems administrators may have access to highly confidential information (e.g., trade secrets, personal data). Legal environment: Software exists in a complex legal environment (e.g., intellectual property, obscenity). Acceptable use and misuse: Computer abuse can paralyze an organization (e.g., the Internet worm).
14.These steps may be repeated many times during the development cycle - answerRequirements User Interface Design System and program design Implementation (coding) Acceptance and release
23.Iterative refinement - answerGo quickly through all the steps to create a rough system, then repeat them to improve the system
-EXAMPLE: Create a prototype system early in the process Review the prototype with clients and test it with users, to improve the understanding of the requirements and clarify the design Refine the prototype in a series of iterations
Note: Requirements are hard to understand until there is an operational system, particularly with user interfaces. Mistakes in the requirements are expensive to correct.
medium weight process with documentation created during the process
Iterative refinement uses various techniques that enable the client to review the planned system early during development: -User interface mock-up -Throw-away software components
Spiral (made popular by MS with OS) - answerA variant of iterative refinement in which new and updated components are added to the developing system as they are completed
Agile/ Incremental Development - answerSmall increments of software are developed in a sequence of sprints, each of which creates a deployable code
Characteristics Development of a project is divided into a large number of sprints Each sprint ends with a fully tested code This is a lightweight process with minimal documentation created during the process
General definition of Agile software development: Describes a set of principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams
After each sprint, the code may be: Released (original agile method) Combined with code from other sprints for subsequent release Incorporated into a larger code base
When software is released online it is often possible to divide it into small increments that are developed and released in quick succession.
Advantages Payback on investment begins soon Requirements are more clearly understood in developing subsequent sprints (minimize waste) Feedback from customers and clients can be incorporated in later phases
examples: A feasibility study cannot create a proposed budget and schedule without a preliminary study of the requirements and a tentative design. Detailed design and implementation reveal gaps in the requirements specification. Requirements and/or technology may change during the development. The plan must allow for some form of iteration.
Sequential processes work best when the requirements are well understood and the design is straightforward
Conversions of manual data processing systems where the requirements were well understood and few changes were made during the development (e.g., electricity billing) New models of a product where the functionality is closely derived from an earlier product (e.g. automatic braking system for a car) Portions of a large system where some components have clearly defined requirements and are clearly separated from the rest of the system
Heavyweight process - answerThe development team works through the steps slowly and systematically, with the aim of fully completing each step and delivering a complete software product that will need minimal changes and revision [example: modified waterfall model] --each process step creates a deliverable, usually documentation, ex: requirements specification
Lightweight process - answerThe development team releases working software in small increments, and develops the plans incrementally, based on experience. Each increment includes all the process steps. There is expectation that changes will be made based on experience. [example: Agile Software Development]
--the deliverables are incremental working code, with minimal supporting documentation
Software process consists of: - answerSpecification-what the system should do and its development constraints Development- production of the software system
Validation- validating the development against customer requirements Evolution- making changes to the software in response to changing demands
Activity - answerAn activity is a general term of any part of a project that takes place over time (also known as task) Each step in software development can be broken into several activities
Sprint - answerA sprint is a set period of time during which a team completes part of a software project Each sprint will go through most of all process steps A typical sprint might have a team of 6-8 people working 2-4 weeks.
Mixed Processes - answerIn practice, many large projects use processes that mix aspects of the three types of software process For example: With spiral development, new components may be developed using any of the three other methods User interfaces have to be tested with users. This forces iterative development, even within an underlying sequential process
Used when certain parts of the system may be well understood but other parts require iterative refinement to clarify the specifications. provides support for Risk Handling Each loop of the spiral is called a Phase of the software development process.
quadrants: Objectives determination and identify alternativesolutions
Advocacy Challenges Advocacy is needed to build enthusiasm for a project: to convince an organization to undertake an expensive, complex project with many risks. Enthusiasm is good, but enthusiasts usually emphasize potential benefits and downplay risks. People carrying out the feasibility study and making the decision often have a vested interest in the project going ahead, e.g., financial gain, career development.
The Decision Maker's Viewpoint - answerSenior member(s) of the client's organization decide whether to begin a major software project. What information do they need? Client: Who is this project for? Scope: What are the boundaries of the project? Benefits: What are the benefits? Can they be quantified? If the software is a product, what are the forecasts of likely sales? Technical: Is the project possible? Is there at least one technical way to carry out the project? Resources: What are the estimates of staff, time, budget, equipment, etc.? Alternatives: What are the options if the project is not done?
Where are the Risks? Can they be Minimized? - answerDevelopment risks There must be an outline plan with a rough timetable and staff allocation The plan must have a very large margin for contingencies. (Projects typically require twice the staff and/or time envisioned in the feasibility plan.) Same for budget! External Every system interacts with others. Are the others committed to the necessary efforts (e.g., potential users and customers)? Where are the external pressures and obstacles?
Feasibility Study: Scope - answerScope expresses the boundaries of the system: It will have a list of included functions It will have a list of excluded functions It will have a list of dependencies It will have a list of current systems to be replaced
Feasibility Study: Benefits - answerOrganization benefits Create a marketable product Improve the efficiency of an organization (e.g., save staff) Control a system that is too complex to control manually New or improved service (e.g., faster response to customers) Safety or security Professional benefits are not the reason for doing a project
Feasibility Study: Technical - answerA feasibility study needs to demonstrate that the proposed system is technically feasible. This requires: an outline of the requirements a possible system design (e.g., database, distributed, etc.) possible choices of software to be acquired or developed estimates of numbers of users, data, transactions, etc. These rough numbers are part of the provisional plan that is used to estimate the staffing, timetable, equipment needs, etc. The technical approach actually followed may be very different.
Feasibility Study: Planning and Resources - answerThe feasibility study must include an outline plan: Estimate the staffing and equipment needs, and the preliminary timetable Identify major milestones and decision points Identify interactions with and dependencies on external systems Provide a preliminary list of deliverables and delivery dates
Feasibility Study: Alternatives and Risks - answerA feasibility study should identify risks and alternatives.Risks What can go wrong? How will progress be monitored and problems identified (visibility)? What are the fall back options? Alternatives Continue with current system, enhance it, or create new one? Develop in-house, or contract out? (How will a contract be managed?) Phases of delivery and possible points for revising plan.
ØProject management is needed because software development is always subject to budget and schedule constraints that are set by the organisation developing the software.
The Aim of Project Management - answerØDeliver the software to the customer at the agreed time. ØKeep overall costs within budget.ØDeliver software that meets the customer's expectations. ØMaintain a coherent and well-functioning development team. Ø To provide visibility about the progress of a project
Factors Influencing project management - answerØCompany sizeØSoftware customersØSoftware sizeØSoftware typeØOrganizational culture ØSoftware development processes These factors mean that project managers in different organizations may work in quite different ways.
The Project Manager - answerCreate and maintain the schedule Track progress against schedule Keep some slack in the schedule (minimize risk) Continually make adjustments: Start activities before previous activity complete Sub-contract activities Renegotiate deliverables Keep senior management informed (visibility). The project manager needs the support of the head of the development team and the confidence of the team members.
Aspects of Project Management - answerØ Project planning Ø Project managers are responsible for planning. estimating and scheduling project development and assigning people to tasks. ØRisk management Ø Project managers assess the risks that may affect a project, monitor these risks and take action when problems arise. ØPeople management Ø Project managers have to choose people for their team and establish ways of working that leads to effective team performance.Ø Reporting
Ø Project managers are usually responsible for reporting on the progress of a project to customers and to the managers of the company developing the software. ØProposal writing Ø The first stage in a software project may involve writing a proposal to win a contract to carry out an item of work. The proposal describes the objectives of the project and how it will be carried out.
Planning Outline schedule during feasibility study Fuller schedule for each part of a project (e.g., each process step, iteration, or sprint) Contingency planning Anticipation of possible problems (risk management) Progress tracking Regular comparison of progress against plan Regular modification of the plan Final analysis Analysis of project for improvements during next project
Terminology - answerØ Deliverable Terminology Work product that is provided to the client (mock-up, demonstration, prototype, report, presentation, documentation, code, etc.) Release of a system or subsystem to customers or users Ø Milestone Completion of a specified set of activities (e.g., delivery of a deliverable, completion of a process step) Ø Activity (or Task)Ø Part of a project that takes place over time
ØEventØ The end of a group of activities, e.g., agreement by all parties on the budget and plan Ø Dependency Ø An activity that cannot begin until some event is reached Ø Resource Ø Staff time, equipment, or other limited resources required by an activity
Standard Approach to Project Management - answerØ The scope of the project is defined early in the process Ø The development is divided into tasks and milestones Ø Estimates are made of the time and resources needed for each task Ø The estimates are combined to create a schedule and a plan
ØThe project schedule, cost-estimate and risks have to be regularly revised
Plan-driven Development - answerØ Plan-driven or plan-based development is an approach to software engineering where the development process is planned in detail. Ø Plan-driven development is based on engineering project management techniques and is the 'traditional' way of managing large software development projects. Ø A project plan is created that records the work to be done, who will do it, the development schedule and the work products. Ø Managers use the plan to support project decision making and as a way of measuring progress.
Ø Pros: Ø Early planning allows organizational issues (availability of staff, other projects, etc.) to be closely taken into account, Ø Potential problems and dependencies are discovered before the project starts, rather than once the project is underway. Ø Cons: Ø Many early decisions have to be revised because of changes to the environment in which the software is to be developed and used.
Project Plans - answerØ For a plan-driven development project: Ø A project plan sets out the resources available to the project, the work breakdown and a schedule for carrying out the work. Ø Plan Sections Introduction Project organization Risk analysis Hardware and software resource requirements Work breakdown Project schedule Monitoring and reporting mechanisms
Project Scheduling - answerØ Process of deciding Ø how the work in a project will be organized as separate tasks Ø When and how these tasks will be executed ØEstimate the: Ø Calendar time needed to complete each task,
Ø Effort required to finish the task Ø People working on the task Ø Resources needed for each task (ex. disk space required on a server, the time required on specialized hardware such as a simulator, travel budgets,..etc)
Split project into tasks and estimate time and resources required to complete each task. Organize tasks concurrently to make optimal use of workforce. Minimize task dependencies to avoid delays caused by one task waiting for another to complete. Dependent on project managers intuition and experience.
Challenges - answerEstimating the difficulty of problems and hence the cost of developing a solution is hard. Productivity is not proportional to the number of people working on a task. Adding people to a late project makes it later because of communication overheads. The unexpected always happens. Always allow contingency in planning
Schedule presentations - answerØGraphical notationsØ Project breakdown into tasks Ø Calendar-basedØ Bar charts are the most common way. (shows activities or resources against time) ØActivity networksØ Show task dependencies
Project Planning Tools - answerCritical Path Method, Gantt charts, Activity bar charts, etc. ØBuild a work-plan from activity dataØ Display work-plan in graphical or tabular form Project planning software (e.g., Microsoft Project) Ø Maintain a database of activities and related data ØCalculate and display schedulesØManage progress reports
Gantt Charts - answerUsed for small projects, single time-boxes, and sprints Dates run along the top (days, weeks, or months) Each row represents an activity. Activities may be sequential, in
Agile Approach to Project Management - answerPlanning is divided into high level release forecasting and low level detailed planning Release planning is a best guess, high level view of what can be achieved in a sequence of time-boxes Release plans are continually modified, perhaps daily The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation Minimal documentation - focus on working code For each time-box, the team plans what it can achieve The team may use Gantt charts or other conventional planning tools
Scrum - answerScrum is an agile method of PM that focuses on managing iterative development There are three phases in Scrum. The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture. This is followed by a series of sprint cycles, where each cycle develops an increment of the system. The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.
BENEFITS: The product is broken down into a set of manageable and understandable chunks. Unstable requirements do not hold up progress. The whole team have visibility of everything and consequently team communication is improved. Customers see delivery of increments and gain feedback on how the product works. Trust between customers and developers is established and a positive culture is created
Scrum Master - answerThe Scrum Master is responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company and for ensuring that the Scrum team is not diverted by outside interference. The Scrum developers are adamant that the Scrum Master should not be thought of as a project manager. Others, however, may not always find it easy to see the difference.
Velocity - answerAn estimate of how much product backlog effort that a team can cover in a single sprint. Understanding a team's velocity helps them estimate what can be covered in a sprint and provides a basis for measuring improving performance.
Practical problems with agile methods - answerLegal Issues: The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. Maintenance: Agile methods are most appropriate for new software development rather than software maintenance.. Scale: Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams.
Agile maintenance - answerKey problems are: Lack of product documentation Keeping customers involved in the development process Maintaining the continuity of the development team Agile development relies on the development team knowing and understanding what has to be done. For long-lifetime systems, this is a real problem as the original developers will not always work on the system.
Risk management - answerRisk management is concerned with identifying risks and drawing up plans to minimise their effect on a project. Software risk management is important because of the inherent uncertainties in software development. These uncertainties stem from loosely defined requirements, requirements changes due to changes in customer needs difficulties in estimating the time and resources required for software development differences in individual skills. You have to anticipate risks, understand the impact of these risks on the project, the product and the business, and take steps to avoid these risks.
Risk classification - answerThere are two dimensions of risk classification The type of risk (technical, organizational, ..) What is affected by the risk Project risks affect schedule or resources; Product risks affect the quality or performance of the