Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering CPCS351

Similar presentations


Presentation on theme: "Software Engineering CPCS351"— Presentation transcript:

1 Software Engineering CPCS351
Dr. Mai Fadel

2 Software and Software Engineering
The software engineer’s job is to solve problems economically by developing high-quality software.

3 The Nature of Software Similarly to mechanical engineers who design mechanical systems, software engineers design software systems. Software differs from the types of artifacts produced by other types of engineers (how it affects s/w development): Software is largely intangible The mass-production of duplicate pieces of software is trivial The software industry is labour intensive It is all too easy for an inadequately trained software developer to create a piece of software that is difficult to understand and modify Software is physically easy to modify Software does not wear out with use

4 Software Crisis Software crisis is the situation of software development in relationship with the expectation of the customers decades ago. Much of existing software is relatively poor quality, and is steadily becoming worse There is strong demand for new and changed software, which customers expect to be of high quality and to be produced rapidly The result of the poor development process Software engineers have not been able to live up to the expectations of their managers and customers Many software are either never delivered, or are delivered late and over budget Many software systems that are delivered are never put to use because they have so many problems Other systems require major modification before they can be used

5 Software crisis- continued
The challenges of developing software systems The complex nature of software The laws of economics (customer demands) The vagaries of human psychology In the author’s opinion the situation is still going on Objective: is to learn how to engineer software so that it meets expectations and doesn’t contribute to the crisis

6 Types of Software and their Differences
Classification 1 of the types of software Custom software: developed to meet the specific needs of a particular customer and tends to be of little use to others. e.g. web sites, air-traffic control systems Generic software/ (COTS)/ shrink-wrapped software: is designed to be sold on the open market, to perform functions that many people need, and to run on general purpose computers. e.g. word processors, spreadsheets, web browsers, computer games. Embedded software: run specific hardware devices which are typically sold on the open market. e.g. washing machines, DVD players, and automobiles It is possible to take generic software and customize it and vise versa. condition in market Type of software Highest number of copies in use Embedded S/W Highest number of copies in use on general-purpose computers Generic S/W What most developers work on Custom S/W

7 Types of Software and their Differences -continue
Classification 2 of the types of software Real-time software: it has to react immediately (i.e. in real time) to stimuli from the environment (e.g. the pushing of a button, a signal from a sensor) Responsiveness must always be guaranteed- safety is a key concern in their design e.g. many of the embedded systems, custom systems that run industrial plants and telephone networks Data processing software: is used to run businesses. It performs functions such as recording sales, managing accounts, printing bills etc. The design concern here is how to organize the data and provide useful information gathered to the users so they can perform their work effectively Accuracy and security of data are of major concern In traditional data processing tasks, data is gathered together in batches to be processed later. Some software has both real-time and data processing aspects.

8 What is Software Engineering?
Software Development and software engineering Definition: software engineering is the process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints Solving customers problems The goal of every software engineering project It is important to recognize activities that are not consistent with this goal, such as adding unnecessary features. Recognize situations when it would be most cost effective not to develop s/w at all, to develop simpler s/w or to purchase existing s/w. Software engineers must understand how people do their work, and understand what impact any proposed software may have on its user’s productivity (communicating & negotiating with people)

9 What is Software Engineering?-continue
Systematic development and evolution Developing software by applying well-understood techniques in an organized and disciplined way. Software engineering is a young field There are many accepted practices that have been formally standardized by bodies such as IEEE, ISO Ensuring that the maintenance and evolution of existing systems is done in a systematic way is an integral part of software engineering Large, high-quality software systems Large systems with many functions and components , and thousands lines of code are too complex, difficult to understand, take too long to develop by one person, and challenging in dividing up the work among teams Software engineering techniques are essential for large system, and may be useful for small systems The end product must be of sufficient quality (there are techniques for improving quality and ensuring the product is of sufficient quality)

10 What is Software Engineering?-continue
Cost, time and other constraints One of the essential characteristics of engineering is that you have to consider economic constraints as you try to solve each problem There are 3 main economic constraints Software engineers must ensure their systems can be produced within a limited budget and by a certain due date Achieving this requires careful planning and sticking to the plan in a disciplined way, and creating a realistic plan in the first place Why many software engineering projects fail to stick to the specified time and cost constraints?

11 Software Engineering as a Branch of the Engineering Profession
People have talked about software engineering since 1968 when the term was coined at a NATO conference Only since the mid-1990s has there been a shift towards recognizing software engineering as a distinct branch of the engineering profession (i.e. have a license to legally perform consulting or self-employed work) How to obtain a license? Licensing agencies Ensures sufficient engineering education & experience Accredits educational institutions Licensed profession impose adherence to codes of ethics and taking responsibility for the produced work Universities have been establishing academic programs that focus on software engineering (distinct from computer science or computer engineering)

12 Stakeholders in Software Engineering
Stakeholders are the people involved in a software engineering project (who are they and what do they look for in interacting with the software? Figure 1.1 page12) Users: people who will use the software. They will likely appreciate new software, but some may fear it would jeopardize their jobs Customers/clients: people who make the decisions about ordering and paying for the software. They may or may not be users. Software Developers: people who develop and maintain the software (such as software engineers). Special roles in a s/w engineering project include requirements specialists, database specialists, technical writers, & configuration management specialists, etc. Development Managers: people who run the organization that is developing the software, they usually have an educational background in business administration. In some cases, two, three or even all four of the stakeholders may be held by the same person

13 Software Quality There is no single answer for the question: what ‘quality’ means? But the goal is to produce software with high quality Attributes of software quality (what is its impact on the software? How to measure it? what to do to improve it?) Software engineers try to balance the relative importance of these attributes towards the best overall quality Usability, efficiency, reliability, maintainability, and reusability The importance of these attributes varies from stakeholder to another and form system to system. ( examples) Often, software engineers improve one quality at the expense of another: trade-offs Good engineering practice sets objectives for quality that satisfies all stakeholders, and then designing the system to meet these objectives

14 Software Engineering Projects
S/w engineering work is normally divided into projects. For small s/w systems there may be a single team of three or four developers working on the project Evolutionary projects: (those that involve modifying an existing system) corrective, adaptive, enhancement, re-engineering or perfective Greenfield projects (those that involve starting to develop a system from scratch) Projects that involve building on a framework or a set of existing components (those that involve building most of a new system from existing components, while developing new software only from missing details)

15 Evolutionary Projects
Most s/w projects are of this type- maintenance For many people, maintenance implies keeping something running by simply fixing problems, but without adding significant new features There is constant pressure from users and customers not only to fix problems but to make many other kinds of changes Radical modifications/ evolution should be applied after several years of frequent changes resulting in software that barely resembles their original state

16 Types of Evolutionary Project
Corrective projects: involve fixing defects Adaptive projects: involve changing the system in response to changes in the environment in which the software runs (a new version of Operating system, database, a new set of tax laws) Enhancement projects involves adding new features Re-engineering/ perfective projects involve changing the system internally so that it is more maintainable, without making significant changes that the user will notice Most evolutionary projects involve more than one of the above Legacy systems are software systems that require maintaining when a lot of the design information is missing

17 Greenfield Projects Green projects are less common than evolutionary
Developers have a wider freedom to be creative about the design – no constraints of design decisions & errors made by predecessors Take a lot of work to build

18 Projects that involve reusing design/ code
Starts with a framework or involves plugging together several components that are already developed and provide significant functionality A framework is a software system especially designed to be reused in different projects, or in various products in product line. A framework contains important functionality, but must be adapted to handle the requirements of particular customers or products e.g. framework for ticketing Basic functionality for reserving and printing tickets It can be used for theatres, cinema, sports events, a holiday package e.g. of the use of components (gluing an accounting package and a package for tracking meetings=> a product for a lawyer’s office to create bills for clients’ meetings) Advantages Benefit from software that has been shown to be reliable, since the framework is tested Gives the freedom to innovate as with the case with Greenfield projects

19 Activities Common to Software Projects
Requirements and specification Design Modeling Programming Quality assurance Deployment Managing software configuration Managing the process

20 Requirements and Specification
It is important to, first, understand the problems, the customer’s business environment, and the available technology which can be used to solve the problems After that, meet with the customers and users to decide on a course of action that will solve the problems (development or modification) Then decide in detail what facilitates the software should provide Involved activities: domain analysis, defining the problem, requirement gathering, requirement analysis, requirement specification (pp ) Important principle of requirement is to separate the ‘what’ from the ‘how’ – i.e. requirements from design and implementation

21 Design Design is the process of deciding how the requirements should be implemented using the available technology Some of the important activities during design: system engineering, determining the software architecture, detailed designs, user interface design, etc. For large systems, software engineers work on architectural design in conjunction with high-level requirements to effectively divide the system into subsystems For small systems, requirement precede design to avoid re-doing the design if requirements change

22 Modeling Modeling is the process of creating a representation of the domain or the software Various modeling approaches can be used during both requirements analysis and design. e.g. Use case, structural, and dynamic/ behavioural modeling Modeling can be performed visually, using diagrams, or else using semi-formal or formal languages that express the information in a systematically or mathematically. e.g. UML with a semi-formal notation & diagrams

23 Programming It involves the translation of higher-level designs into particular programming languages The final stage of design since it involves making decisions about the appropriate constructs, variable declarations, etc. Programmers: people who do higher-design activities and programming Coders: perform only programming with no design Research is done on automating programming, e.g. code generators. However there will still be a need for manual programming

24 Quality Assurance (QA)
QA encompasses all the processes needed to ensure that the quality objectives discussed in Section 1.5 are met Occurs throughout the project Involved activities: reviews and inspection, and testing Validation and Verification (V & V) Validation: the process of determining whether the requirements will solve the customer’s problem Verification: the process of making sure the requirements have been adhered to

25 Other activities Deployment: involves distributing and installing the software and any other components of the system such as databases, special hardware, etc. Managing software configurations: involves identifying all the components that compose a software system, including files containing requirements, design, and source code. Managing the Process: managers lead the other activities, and undertake the following task: Estimating the cost of the system Planning Periodically Revising the expected estimates and planning


Download ppt "Software Engineering CPCS351"

Similar presentations


Ads by Google