COSC 70 - Software Engineering

5.0(2)
studied byStudied by 29 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/49

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

50 Terms

1
New cards
Engineering
is the application of well-understood scientific methods to the construction, operation, modification and maintenance of useful devices and systems.
2
New cards
Software
is comprises the aspects of a system not reduced to tangible devices, e.g. computer programs and documentation
3
New cards
Functionality, Reliability, Usability, Efficiency, Maintainability, Portability
Software quality model identifies six main quality characteristics, namely:
4
New cards
Software Engineering
is the sub discipline of computer science that attempts to apply engineering principles to creation, operation, modification and maintenance of the software components of various systems.
5
New cards
Functionality
Is the essential purpose of any product or service. The more functions a product has, then the more complicated it becomes to define its functionality.
6
New cards
Reliability
Defines the capability of the system to maintain its service provision under defined conditions for defined periods. One aspect of this characteristic is fault tolerance that is the ability of a system to withstand component failure.
7
New cards
Usability
Exists with regard to functionality and refers to the ease of use for a given function. The ability to learn how to use a system (learnability) is also a major sub characteristic of usability.
8
New cards
Efficiency
This characteristic is concerned with the system resources used when providing the required functionality. The amount of disk space, memory, network etc. provides a good indication of this characteristic.
9
New cards
Maintainability
The ability to identify and fix a fault within a software component is what the maintainability characteristic addresses. In other software quality models, this characteristic is referenced as supportability.
10
New cards
Maintainability
Maintainability is impacted by code readability or complexity as well as modularization. Anything that helps with identifying the cause of a fault and then fixing the fault is the concern of maintainability. Also the ability to verify (or test) a system, i.e. testability, is one of the sub characteristics of maintainability.
11
New cards
Portability
This characteristic refers to how well the software can adopt to changes in its environment or with its requirements. The sub characteristics of this characteristic include adaptability. Object oriented design and implementation practices can contribute to the extent to which this characteristic is present in a given system.
12
New cards
Computer Applications Software Engineers
Analyze user needs and design, construct, and maintain general computer applications software or specialized utility programs. These engineers use different programming languages, depending on the purpose of the program. The programming languages most often used are C, C++, and Java, with FORTRAN and COBOL used less commonly. Some software engineers develop both packaged system and system software, or create customized applications.
13
New cards
Computer Systems Software Engineers
Coordinate the construction and maintenance of a company’s computer systems and plan their future growth. Working with the company, they coordinate each department’s computer needs, such as ordering, inventory, billing, and payroll recordkeeping.
14
New cards
Systems Software Engineers
Work for companies that configure, implement, and install complete computer systems. These engineers may be members of the marketing or sales staff, serving as the primary technical resource for sales workers and customers. The may also be involved with technical support to the company’s customers.
15
New cards
Sponsor or Client
The individual paying for the project such as IT executives, managers, or entrepreneurs. The Sponsor is the final decision-maker but tends to be hands-off, relying on the Program Manager to flag issues.
16
New cards
Product Advocate
Primary contact person of the client and is the one responsible for ensuring that requirements and functional specifications are generated and that the Sponsor is happy with the progress and results.
17
New cards
System Architect
Is responsible for the software architecture and design, and for how the software fits into a larger infrastructure. They are involved in technology stack choices, approaches to system interfaces, data flow, and database design.
18
New cards
Program Manager
The program manager takes the role of the project manager on small-scale projects. On a large-scale project, or *program*, their role is to map out and define the list of dependent projects that need to be completed to reach the overall goal. When it comes to the program, they focus on the strategy and implementation, and how to delegate the projects appropriately.
19
New cards
Project Manager
Manages the operations of an **individual project** within the program. They coordinate time, budget, and resources and delegates tasks across the team.
20
New cards
UX, Development, QA, and Technical Writing Managers or Skill Set Managers
Manage the personnel in their skill set and are involved in issue resolution on the project as needed. Skill Set Managers also help to resolve any personnel issues within their site’s project team.
21
New cards
UX, Development, QA, and Technical Writing Leads
Manage the workload and direction of their skill set on a daily basis. On smaller projects, the Development Lead is also the System Architect.
22
New cards
UX Designer, Developer, Quality Engineer, and Technical Writer
Are line-level roles that actually design and create the product.
23
New cards
UX Designer
Writes specifications, draw wireframes, and define visual elements.
24
New cards
Developer
Write code and resolve bugs.
25
New cards
Quality Engineer
Test code and flag bugs.
26
New cards
Technical Writer
Create written documentation for the product.
27
New cards
Identifying the Current Problem/s
Answers the question: “what do we not want?” This phase where learning the strengths and weaknesses of the current system with improvement is the goal.

This is done by getting input from the stakeholders, including customers, salespeople, industry experts, and programmers.
28
New cards
Planning/Analyzing
Answers the question: “what do we want?”

In this stage, the team defines the requirements of the new software, and determines the cost and resources required after analyzing the results of the problem identification.
29
New cards
Designing
This defines how you can achieve the plans. In this phase, the system and software designs are prepared aligned with the requirement specifications generated from the planning stage.
30
New cards
Implementation
The stage where the software is develop by generating the actual code. This is the longest phase of the SDLC or software development life cycle.
31
New cards
Testing
This is where the software is tested for defects and deficiencies. Issues found are fixed until the product meets the original specifications.
32
New cards
Deployment
The product is deployed to the customers for their use.

Upon reception, the customers are expected to do the beta testing to determine if any changes are required and if any bugs are caught. Adjustments will be made by the engineering team to resolve the issues found before the final deployment.
33
New cards
Maintenance
After deployment, regular software updates are required to match with the changes and advancement of the real world.
34
New cards
Individual Ability
Production and maintenance of software is a labor-intensive activity so these factors are direct functions of individual ability and effort. Aspects include competence and familiarity with the particular application area.
35
New cards
Team Communication
The new approach towards software developments requires many individuals to be involved. Many recent innovations in software engineering, like design reviews, structured walkthroughs and code-reading exercises improve communication between the programmers.
36
New cards
Product Complexity
There are three generally acknowledged levels of product complexity:

a)      Application Programs

b)      Utility programs and

c)      System level programs
37
New cards
Appropriate Notations
The representation schemes are of fundamental importance. Good and standardized notations can clarify the relationships and interactions, of any specific interest
38
New cards
Systematic Approaches
Following certain standard systematic approach in procedures and techniques makes the developments software process very professional and contribute in improving the quality of the software product.
39
New cards
Controlling Changes
The factors that contribute the factor of change in software are

a)      Design deficiencies in software

b)      Change in requirements due to poor understanding of problem

c)      External economic and political factors.

* To minimize the change the following suggestions cam be utilized

(a)     Use of appropriate notation and standard techniques

(b)     Scope of the mechanism to change flexibility  provided to the software

During  planning
40
New cards
Level of Technology
As the level of technology is changing rapidly, hence modern programming languages should be used during the development. Modern programming language provide:

a)      Improved facilities for data definition & data usage

b)      User defined exception handling

c)      Concurrent programming etc.

In addition, varied tools are provided such as assemblers and primitive debugging facilities integrated under a single fully integrated development environmentX
41
New cards
Level of Reliability
Are required to increase reliability causes decreased productivity when measured in LOC produced per programming month.
42
New cards
Problem Understanding
Failure to understand the problem can result in an unsuccessful project; there are some suggestions for avoiding these problems

a)      Careful planning

b)      Costumer interviews

c)      Task observation

d)      Prototyping

e)      Precise product specifications etc.
43
New cards
Available Time
Programmer productivity is sensitive to the calendar time available for project completion. It is observed that the development time cannot compressed below 75 percent of the nominal development time. Extending a project beyond some nominal domination increases the total effort required.
44
New cards
Required Skills
The practice of SE required variety of skills. The requirement definition and design activity are conceptual in nature hence require good creating problem solving skills. Preparations of external documents require good writing and expressive skills. Software Engineers should have good socializing skills to interact properly with the managers, costumers and other engineers.
45
New cards
Facilities  and Resources
Through various studies, it had been found that work related factors such as

a.)     God machine

b.)     Quite place of work

c.)     Plenty of access to the machine

d.)     Creative challenges

e.)     Variety of tasks

f.)      Opportunities for professional advancement etc., creates more satisfaction  among the programmers  rather than the status factors
46
New cards
Adequacy of Training
It is seen that the fresher’s from college do not have the following skills, which are very necessary for becoming a successful software engineer

a.)     Express oneself clearly in English

b.)     Develop and validate  software requirements and design  specifications

c.)     Work with in application area

d.)     Perform software maintenance

e.)     Perform economic analysis

f.)      Work with project management techniques

g.)     Work In groups

Hence adequate of training is required for entry-level programmers.
47
New cards
Management Skills
As the concept of SE is new, hence the managers who work in traditional styles are unable to manage the SE activities. In addition, it is seen that during giving promotions if the competency of the candidate is only measured in technical point of view then there may arise the same kind of problem. Therefore, the management skills inn candidate should also include technical and managerial competency
48
New cards
Appropriate Goals
Setting of appropriate goals is a major contributing factor in successful execution of a project; generally, the most common goals include *Generality*, *Efficiency,* and *Reliability*
49
New cards
Rising Expectations
Progress is constantly being made in the development of tools and techniques to improve software quality and programmer productivity, equally diversity, size and complexity of software applications are growing at a fast rate but also the expectations and increasing demands. Hence, it is necessary to adhere to the latest that is happening.
50
New cards
Stability of Requirements
The requirements of software project includes

a)      Manpower

b)      Software

c)      Hardware

The requirements definition is done  during problem analysis where the amount of type of resources  are predicted , in this point if the analysis and predictions  is not based on facts, expert guidance and experience from various projects then the requirements would change throughout the development process and may extend to maintenance phase . Un-stability or requirements increases the cost degrades overall quality and reduces the productivity. Hence great care should be taken during the initial phase of problem identification & problem analysis.