What is software construction?
- Construction - refers to the hands-on part of creating something.
- Also known as implementation / coding and debugging, verification and validation.
- Generally focus at coding, debugging, some detailed design and some testing.
Why software construction important?
- Construction may takes 30% to 80% of the total project time. The larger the time spent, the bigger the work affect the success of the project.
- Construction is the pivotal activity in software development.
- Great potential for the average programmer's productivity to improve.
- Requirements document and design documents can go out of date, but construction's by product, the source code, is always up to date.
- Ideally software project goes through requirements engineering and modelling activities before construction begins. In reality, construction is the only activity that's guaranteed to be done!
Coding principles
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbkU5UDjOrRZyoIT5L6UMXCJ0tZw_oOXksdiIoTyMk7UITigyMARzTOhME3iuBLjRJPwUkotf7ADdzOX7gJ5eKQHTmxWtYwdic-iT7SZkEaym5x63NPnQ_Q4QJbzS31u920cvBjPgoTv8/s320/coding+principles+graph.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS7bNVbBeJCWihQktoiiOSPacAxA7U5Jaswd5FEsocD-7nCS-sRzM-RhveRh65-_u-vXAjmw8TZzx2uWVeBt_QxxFouZAttJ1T56_DZcihrbENvwC1kuoT4VCsP3X4KsspsEA5SORo0yE/s320/good+programming+practices+graph.jpg)
Defensive programming
- The programmer makes necessary assumptions and creates code that anticipates potential problems and specification changes.
- According to Tushar Metha (2009), defensive programming involves finding problem in the existing code, anticipating, preempting, streamlining the code to aid readability and simplify maintainability.
- A good defensive programmer is sufficiently confident in his/her abilities to ignore the traditional belief that "if it isn't broke, don't fix it."
Software Inspections
- An 'old school' approach.
- A process to review, analyze and check static system.
- focus at source code
- known as peer reviews or program/code inspections.
- inspections can check conformance with a specification.
- cannot check non-functional characteristics (performance, usablity, etc.)
Program/code Inspection Process
- Focus at detecting defects.
- program inspections are very effective in discovering defects.
- A formal process that involve a team of several members.
Advantages of Inspection over Testing
According to Sommerville (2004):
- A single inspection session can discover many errors in a software/system.
- incomplete versions of a software/system can be inspected without additional cost.
- inspections can search for program defects and other quality attributes of a program.
Drawbacks/Issues related to Inspections
- Difficult to introduce formal inspections into software developments organizations.
- Software engineers with experience are sometimes reluctant to accept that inspections can be more effective for detecting defects than testing.
- Managers may be sceptical as inspections require extra costs during modelling and construction.
- Inspections may take time to arrange and appear to slow down the development process.
Software Reuse
System that are designed by composing existing components that have been used in other systems. there are more reuse-based software engineering:
- Application system reuse
- Component reuse
- Object and function reuse
Requirements for reuse
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqFqzHv25wunuCq2Y4ro7KOKWvgSqOv3mFABi1rGKGhg7u0-Zzgs4SqaWSmrqx8Ep0FjMxM2wKnrIoieaO4CDzNMfYhs-4q60SSbZG_FuX6RVQ3ErW34_qsUApQLRuoLNRk6p-BiEiLT0/s320/requirements+for+reuse.jpg)
Benefits of reuse
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijhh2LpZ5T0yP6P9pO792gTqmOWMhF8qr7xEj040ooOPs7Mt-VPRgvyMFcQYFMrJMQDjapUPe_1xcc25hFhqE2fBv4Vkvw1O84rt7xeMaNEWGIms84z5yKNFo9pSDL-PSTOzB8zL3sle0/s320/benefit+of+reuse.jpg)
Reuse problems
- Increased costs
- Lack of CASE tool support
- Not-invented-here syndrome
- Maintaining a component library can be expensive
- Finding and adapting reusable components
No comments:
Post a Comment