Scope of software engineering

Embed Size (px)

Citation preview

Diapositiva 1

Scope of Software Engineering

Muhammad Naveed ZafarEducational Background BS in Computer Science(Bahria University)

MS in Software ProjectManagement(FAST University)* Professional ExperienceProject Manager(NevTech)

Faculty Member (Aptech MSG)

Project CoordinatorAMI

Software EngineerGoSafe Systems

AgendaWhat, Why and Aspects of Software Engineering ?Horror Software Failure StoriesSoftware Engineer Line of ActionsSoftware Engineering StakeholdersEngineering ApproachRoles and Members of Development TeamProblem Solving ParadigmsSDLC ModelsBest Practices to be Adopt Scrum Methodologies

What is software?Computer programs and associated documentationSoftware products may be developed for a particular customer or may be developed for a general marketSoftware products may beGeneric/COTS - developed to be sold to a range of different customersCustom- developed for a customer according to their specification

Short forcommercialoff-the-shelf, an adjective that describes softwareorhardwareproducts that are ready-made and available for sale to the general public4

What is Engineering?Engineering is The application of scientific principles and methods to the construction of useful structures.Examples:Mechanical engineeringComputer engineeringCivil engineeringChemical engineeringElectrical engineeringNuclear engineeringAeronautical engineering

What Actually Software Engineering?A discipline whose aim in the production of software thatmeets the clients needsfault-free delivered on timedelivered within budgeteasy to modify

Why the need for Software Engineering?Software Crisis: Unacceptable low quality of software, exceeds deadline and budget.

*Completed late, over budget, and/or with features missing

Why Software Engineering ?The problem is complexityMany sources, but size is a key:Mozilla contains 3 Million lines of codeUNIX contains 4 million lines of codeWindows 2000 contains 108 lines of codeSecond is roles define Third is uncertainty of inputs and their timingFourth is the continuing changing environment and demands. Software engineering is about managing all the sources of complexity to produce effective software.

Software Engineering AspectsHistorical Aspects:1967, a NATO group coined the term Software Engineering1968 NATO Software Engineering Conference concurred that Software production should be an engineering-like activity.Using philosophies and paradigms of established engineering disciplines to solve Software Crisis: that the quality of software was generally unacceptably low and that deadlines and cost limits were not being met.

9

Economic AspectsSoftware Engineering v.s. Computer ScienceThe computer scientist investigates several ways to produce software, some good and some bad.But the software engineer is interested in only those techniques that make sound economic sense. For example: A coding technique that can execute very efficiently but with higher maintenance cost may not be a good choice, since maintenance occupies a lot of resources of the whole life cycle.Software Engineering Aspects

10

Maintenance AspectsSoftware Life Cycle / Software ProcessRequirements PhaseSpecification (Analysis) PhasePlanning PhaseDesign PhaseImplementation PhaseIntegration PhaseMaintenance Phase (highest cost among all these phases)Retirement Software Engineering Aspects

11

Maintenance AspectsMaintenance67%Approximate relative costs of the phases of the software life cycle.Maintenance is so important that a major aspect of software engineering consists of techniques, tools, and practices that lead to a reduction in maintenance cost.

12

Horror Software Failure StoriesPatients died as a consequence of severe overdoses of radiation.US Treasury Department mailed incorrectly printed Social Security Checks.Interest miscalculated on student loans resulting in higher monthly payments.Mars Climate Orbiter spacecraft crashes into the surface of Mars because of measurement conversion error.Consequences of software failures range from inconvenience to death!

Software Engineer Line of Actions

Software Engineers should adopt a systematic and organised approach to all aspects of software development.use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources availableUnderstand and communicate processes for improved software development within their organizationBe effective team members and/or leaders.Can be very technical or more managerial depending on organizational need.

Where Does the Software Engineer Fit In?Computer Science: focusing on computer hardware, compilers, operating systems, and programming languages

Software Engineering: a discipline that uses computer and software technologies as a problem-solving tools

15

Where Does the SW Engineer Fit in?...Relationship between Computer Science and Software Engineering

16

Qualities of Good Software?Good software engineering must always include a strategy for producing quality softwareThree ways of considering qualityThe quality of the productThe quality of the processThe quality of the product in the context of the business environment

17

Who Does Software Engineering?Customer: the company, organization, or person who pays for the software systemDeveloper: the company, organization, or person who is building the software systemUser: the person or people who will actually use the system

18

Who Does Software Engineering? (continued)Participants (stakeholders) in a software development project

19

Engineering ApproachBuilding a SystemRequirement analysis and definitionSystem designProgram designWriting the programs Unit testingIntegration testingSystem testingSystem deliveryMaintenance

20

Members of the Development TeamRequirement Analysts: work with the customers to identify and document the requirementsDesigners: generate a system-level description of what the system us supposed to doProgrammers: write lines of code to implement the designTesters: catch faultsTrainers: show users how to use the systemMaintenance Team: fix faults that show up laterLibrarians: prepare and store documents such as software requirementsConfiguration Management Team: maintain correspondence among various artefacts.

21

Members of the Development Team (continued)Typical roles played by the members of a development team

22

Secrets of Successful Projects

Problem Solving ParadigmsSeveral techniques have been suggested to help solve the software crisis.~1975-1985: Structured ParadigmStructured Systems Analysis, Composite/Structured Design, Structured Programming, Structured Testing Lead to major improvements for software industry. But only good for small programs (say, 5,000-50,000 lines of codes)Not so good in software maintenance aspects, (for instance, because of the separation of action-oriented and data-oriented in structured paradigm).Object-Oriented ParadigmAn object is a unified software component that incorporates both data and actions that operate of those data. --> More Promising!

24

Why use Object Oriented Paradigm?Classical Structured ParadigmFocus on functions of systemObject-Oriented ParadigmFocus on objectsImplementation details are local to the objectRegression fault (fault produced by seeming unrelated change) is greatly reduced.Encapsulation: well-designed independent unitsPotential Reuse of objects reduces time and cost

The Software ProcessA structured set of activities required to develop a software systemSpecification;Design;Validation;Evolution.A software process model is an abstract representation of a process.It presents a description of a process from some particular perspective.

Waterfall Model

Waterfall Model CharacteristicsThe classic life cycle - oldest and most widely used paradigmActivities flow from one phase to anotherIf there are corrections, return to a previous phase and flow from there againMajor advantages: Good for planning and well defined/repeated projects

Problems of Waterfall ModelReal projects often follow the sequenceAll requirements may not be stated explicitly by customerCustomer only sees the results after some timeDevelopers are often delayed at certain phases

Rapid Application Development (RAD)BusinessModelingDataModelingProcessModelingApplicationGenerationTesting &Turnover

Team #1BusinessModelingDataModelingProcessModelingApplicationGenerationTesting &Turnover

Team #2

Time period

RAD CharacteristicsHigh-speed version of waterfall modelPrimarily for information systems applicationsRequirements well-understood, fully functional system produced in short timeThe application modularized - major functions can be completed in 3 monthsSeparate teams complete the functions, then integrated as a wholeRequires human resource and commitment

Scrum Agile Methodologies

Importance of Continual Planning, Testing, DocumentationAfter customer has signed off on the specifications, continue to monitor and adjust plan.Software must be fault-free as possible at all times.At all times, documentation must be complete, correct and up-to-date.personnel overturnincomplete implementationinaccurate testingimpossible to maintain

ConclusionTips to Solve a problemAnalyse ProblemsSynthesize a solutionUnderstand that requirements may change Must view quality from several different perspectivesUse fundamental software engineering conceptsKeep system boundary in mind

Thank you

EMBED Word.Picture.8

_958426784.unknown