You are on page 1of 169
ee. > @¢ e ee e@eeeeoeveoeoenoeoaeaeeeoenaseseeeesee © @eeoeoeeeeveveneeneeoene eee © @ @ ee? Information Systems & Software Engineering Information Systems & Software Engineering Information Systems & Software Engineering Software and Software Engineering CHAPTER OVERVIEW AND COMMENTS The goal of this chapter is to introduce software and software enginecring, Software isa “Product” designed and built by software enginoors. Software is important because tt has an impact of vinually every aspect of our lives. Software engineers have a moral and ethical responsibility to ensure thatthe software they build does no serious harm and meets the needs of the people who request it and those who use it. Software engineers tend to be concerned with the technical elegance oftheir software products. Customers tend to be concemed only with whether or not a software product meets their needs and is easy to use Software is designed and built by software engincers. Software is used by virtually everyone in society, Software is pervasive in our commerce, our culture, and our everyday lives Software engineers have a moral obligation to build reliable sofware that does no harm other people. Software engineers view computer software, as being made up ofthe programs, documents, and data required to design and build the system Software users are only concemed with whether or not softw: fare products meet their expectations and make their tasks easier to complete. MPORTANT QUESTIONS FOR SOFTWARE ENGINEERS Why does it take so long t0 get software finished? Can it be done fister? Why are development costs so high? Can it be made more efficiently (less expensive)? ‘Why can't we find all errors before we give the software to our customers? Why do we spend so much time and effort maintaining existing programs? Why do we continue to have difficulty in measuring progress as software is being developed? SOFTWARE Software is both a product and a vehicle for delivering a product information) Software is engineered, not manufactured Software does not wear out, but it does deteriorate. Industry is moving toward component-based software constriction, but most software is stil custom-built 0% 05 05000 0 0® 0p Op Cy 0) 0000000000 C0 6 6D 6999609 O OOO OO OO Oi Information Systems & Software Engineering SOFTWARE APPLICATION ‘System software Application software Engineering or Scientific Software Embedded software Product-line sofiware (includes entertajnment so ftware) Web-Applications Artificial intelligence software NEW SOFTWARE CHALLENGES COpen-world computing - Creating software to allow machines of all sizes to communicate with each other across vast networks Netsourcing - Architecting simple and sophisticated applications that benefit targeted end-user markets worldwide Open Source - Distributing source code for computing applications so customers can make local modifications easily and reliably FOR LEG: TEM Evi Software must be adapted to meet needs of new computing environments or technology Software must be enhanced to implement new business requirements Software must be extended to make it interoperable with more modern system components Software must be re-architected to make it viable within a network environment SOFTWARE ENGINEERING REALITIES Problem should be understood before software solution is developed Design is a pivotal activity Software should exhibit high quality Software should be maintainable SOFTWARE ENGINEERING Software engineering is the establishment of sound engineering principles in order to obtain reliable and efficient software in an economical manner. LC . aS Information Systems & Software Engineering iz Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, Software engi the use of tools. jeering encompasses a process, management techniques, technical methods, and GENERIC SOFTWARE PROCESS FRAMEWORK Communication (customer collaboration and requirement gathering) Planning (establishes engineering work plan, describes technical risks, lists resources required, work products produced, and defines work schedule) Modeling (creation of models to help developers and customers understand the requires and software design) Construction (code generation and testing) : Deployment (software delivered for customer evaluation and feedback) WARE ENGINEERING UMBRELLA ACTIVITIES Software project tracking and control (allows team to assess progress and take corrective action to maintain schedule) Risk management (assess risks that may affect project outcomes or quality) Software quality assurance (activities required to mai fain software quality) Technical reviews (assess engineering work products to uncover and remove errors before they propagate to next activity) * Measurement (define and collect process, project, and product measures’ to assist team in delivering software meeting customer needs) Software configuration management (manage effects of change) Reusability management (defines criteria for work product reuse and establish mechanisms to achieve component reuse) ‘Work product preparation and production (activities to create models, documents, logs, forms, lists, etc.) TTRIBI OM R MODELS Overall flow and level of interdependencies among tasks Degree to which work tasks are defined within each framework activity Degree to which work products are identified and required Manner in which quality assurance activities are applied —_—_—_—_—_—_—_—_———_—_ AG SSS 9 8 8 Sifstal o,0,e, oe e, »% % Information Systems & Software Engineering Manner in which project tracking and control activities are applied Overall degree of detail and rigor of process description Degree to which stakeholders are involved in the project Level of autonomy given to project team Degree to which team organization and roles are prescribed ESSENCE OF PRACTICE Understand the problem (communication and analysis) Plan a solution (software design) Camry out the plan (code generation) Examine the result for accuracy (testing and quality assurance) NDERSTAND THE PROBLEM Who are the stakeholders? What functions and features are required to solve the problem? Is it possible to create smaller problems that are easier to understand? Cana graphic analysis model be created? PLAN THE SOLUTION Have you seen similar problems before? Has a similar problem been solved? Can readily solvable sub-problems be Wlefined? Cana design model be created? CaRRY OUT THE PLAN Does solution conform to the plan? Is each solution component provably correct? EXAMINE THE RESULT Is it possible to test each component part of the solution? conform to the data, functions, and features required? Does the solution produce results thi Information Systems & Software Engineering ‘I SSS ‘SOFTWARE PRACTICE CORE PRINCIPLES Software exists to provide value to its users Keep it simple stupid (KISS) Clear vision is essential to the success of any software project Always specify, design, and implement knowing that someone else will have to understand what ‘you have done to carry out his or her tasks Be open to future changes, don’t code yourself into a corner Planning ahead for reuse: reduces the cost and increases the value of both the reusable ‘components and the systems that require them Placing clear complete thought before any action almost always produces better results SOFTWARE CREATION Almost every software project is precipitated by a business need (e.g. correct a system defect, adapt system to changing environment, extend existing system, create new system) Many times an engineering effort will only succeed if the software created for the project succeeds. The market will only accept a product is the software embedded within it meets the customer's stated or unstated needs. eo e © ° @ é é é e © e oe © e e e e é é é e e é e ° ° eeoe ee eeaeeeenvuneendoeaoeceen eee 6 @ eeeeoeveaeeeeoeeese eee @ Information Systems & Software Engineering Process: A GENERIC VIEW CuapTer OverViEW AND COMMENTS ‘This intent of this chapter is 9 establish a definition for software engineering and to present a generic software process model that can be used as a template for all other process models presented in Chapter 3. A process framework, encompassing five activities — communication, planning, modeling, construction, and deployment—is presented. SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY Software engineering encompasses a process, the management of activities, technical methods, and use of tools to develop software products. Fritz, Bauer defined Software engineering as the “establishment and use of sound engineering principles in order fo obtain economically software that is reliable and works efficiently on real ‘machines. * IEEE definition of software engineering (1) the application of a systematic, disciplined, {quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) ‘The study of approaches as in (1). We need discipline but we also need adaptability and agility. Software Engineering is a layered technology as shown below. Any engineering approach must rest on an organizational commitment to quality. tools E 2 ~ methods a» ae process model _ a “quality” focus a9 ly, Information Systems & Software Engineering The bedrock that supports software engineering is a quality focus. The foundation for S/W eng is the process layer. It is the glue that holds the technology layers together and enables rational and timely development of computer S/W. Process defines framework that must be established for effective delivery of S/W eng technology. The software process forms the basis for management control of software projects and establishes the context in which technical methods are applied, work products (models, documents, data, reports, etc.) are produced, milestones are established, quality is ensured, and change is properly managed. SAW eng, methods provide the technical “how to’s” for building S/W. Methods encompass a broad array of tasks that include communication, req. analysis, design, coding, testing and support. ‘SMW eng tools provide automated-or semi-automated support for the process and the methods. When tools are integrated so that info. Created by one tool can be used by another, a system for the support of S/W development called computer-aided software enigineering is established. A PROCESS FRAMEWORK Software process models can be prescriptive or agile, complex or simple, all-encompassing or targeted, but in every case, five key activities must occur. The framework activities are applicable to all projects and all application domains, and they are a template for every process model, +Software process Process framework Umbrella activities Framework activity #1 Software Engineering action Each framework activity is populated by a set of S/W eng actions ~ a collection of related tasks that produces a major S/W eng work product (design is a S/W eng action). Each action is Populated with individual work tasks that accomplish some part of the work implied by the action \ The following generic process framework is applicable to the vast majority of S/W projects ‘Communication: involves heavy communication with the customer (and other stakeholders) and encompasses requirements gathering, Planning: Describes the technical tasks to be conducted, the risks that are likely, resources that will be required, the work products to be produced and a work schedule ‘A10 BM Oy 00% 000% %MHSHHHSHNS 8599999389998 338 F Information Systems & Software Engineering Modeling: encompasses the creation of models that allow the developer and customer to better ‘understand S/W req. and the design that will achieve those req. Construction: combines'code generation and the testing required uncovering errors in the code. Deployment: deliver the product w the customer who evaluates the delivered product and provides feedback \ ction is represented by a number of different task sets ~ each a collection of S/W related work products, quality assurance points, and project milestones, Each S/W en eng work tas ‘The task set that best accommodates the needs of the project and the characteristics of the team is chosen, ‘The framework described in the generic view of S/W eng is complemented by a number of umbrella activities. Typical activities include: SIW project tracking and control: allows the team to assess progress against the project plan and take necessary action to maintain schedule. Risk Management: Assesses the risks that may affect the outcome of the project or the quality, Software quality assurance: defines and conducts the activities required to ensure software quality. Formal Technical Review: uncover and remove errors before they propagate to the next action. ‘Measurement: defines and collects process, project, and product measures that assist the team in delivering S/W that meets customers’ needs. Software configuration management: Manages the effect of change throughout the S/W process Reusability management: defines criteria for work product reuse. Work product preparation and production: encompasses the activities required to create work products such as models, documents, etc ‘THE CAPABILITY MATURITY MODEL INTEGRATION(CMMI ‘The Software Engineering Institute (SEI) has developed a comprehensive process meta-model that is predicated on a set of system and software eng eapabilities that should be present as organizations reach different levels of process capability and maturity. ‘The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. implied by a process Specific goals establish the characteristics that must exist if the activities area are to be effective. Specific practices refine a goal into a set of process-related activities. Zi 5 All _—_ The software process can be defined as a collection of pattems that defines a set of activities, actions, work tasks, work products required to develop computer S/W. The use of software patterns is becoming increasingly popular as organizations try to reduce costs by reusing both process and product artifacts in new projects. Ex: nage 34 PROCESS ASSESSMENT The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for a successful software engineering. This is used by industry professionals. 1 The Personal Software Process (PSP) model is good from the perspective that an individual software engineer can use it to improve his or her personal productivity and work product quality PSP process mode! defines five framework activities: planning, high-level design, high-level design review, development, and postmortem. It stresses the need to identify errors early and to understand the types of errors, Planning: it isolates reqs. And a project schedule is created High-level design: Prototypes are built when uncertainty exists High-level design review: Formal verification methods are applied 10° uncover errors in the design. : Development: Code is generated, reviewed, compiled, and tested. Postmortem: using the measures and metrics collected, the effectiveness of the process is determined, ‘TEAM SOFTWARE Process (TSP The goal of TSP is to build a “self-directed” project team that organizes itself to produce high- quality sw Each project is “launched” using a “script” that defines the tasks to be accomplished, Teams are self-directed, Measurement is encouraged Measures are analyzed with the intent of improving the team process. —ee——$_$ — Az % @ eo e © © e e dl © © oe & © eo o e& © e e é é e é é @ é e ° é. @ee@e@eeeoeeeoenaeeeoeee_/d eese@eoeateoaeeoe eee Information Systems & Software Engineering PROCESS TECHNOLOGY Acquire a process technology tool and demonstrate its capabilities. Emphasize that the key to success is a process that is tuned to the people, the project and the product. Tools help. But they are not a panagea, PRESCRIPTIVE PROCESS MODELS CHAPTER OVERVIEW AND COMMENTS This intent of this chapter is to present process model to manage large-scale software projects. However, every project needs to conform software development activities that can organize the work products that need to Is used by professional software developers No software process works well for every project, a {© some systematic process in order to manage casily get out of control. Sofware processes help to be produced during a software development project, Ultimately the best indicator of how well a software process has worked is the quality of the deliverables produced. A well-managed process will produce high quality products on time and within budget PRESCRIPTIVE MODELS Many people (and not a few professors) believe that prescriptive models are “old school"— Ponderous, bureaucratic document-prodhicing machines, THE LL MODEL Planning esating Seneauting tracking delivery suppor teedoack Many people dismiss the waterfall as obsolete and it cemainly does have problems. But this ‘model can still be used in some situations Among the problems that are sometimes encountered when the warerfill model is applied 2re: A Real project rarely follows the sequenti confusion as the project proceeds. flow that the model proposes. Change can cause Wis difficult for the customer to state all the requirements explicitly. ‘The waterfall model requires such demand. The customer must have patience. A wi the project time-span, INCREMENTAL PROCESS MONELS The process models in this cate indusiry AM ‘orking of the program will not be available until late in ‘gory tend to be among the most widely used (and effective) in the Deployment] Im % HOO COCCOHO ©29200000609280838229800 @3

You might also like